Middleware 架构详解
Middleware 是 Deep Agents 的扩展单元:在 Agent 生命周期内注册 tools、state 扩展、model 前后钩子,按顺序组成栈。
1. 设计理念
| 原则 | 说明 |
|---|---|
| 可组合 | 按需增删 middleware |
| 单职责 | 文件、子代理、摘要等各管一块 |
| 类型累积 | 各 middleware 声明的 state 合并为总 State 类型(见 06) |
2. Middleware 契约(语义)
典型能力(依实现):
tools:追加给模型的工具列表stateSchema/Annotation:扩展图状态beforeModel/afterModel:改 messages、注入 system 片段wrapToolCall:工具前后处理
3. 核心 Middleware 摘要
| 名称 | 职责 |
|---|---|
| TodoList | write_todos 维护计划列表 |
| Filesystem | 虚拟路径读写,委托 Backend |
| SubAgent | task 类工具启动子图 |
| Summarization | 超 token 阈值触发摘要 |
| PromptCaching | 稳定 system 前缀利于缓存 |
| PatchToolCalls | 对齐厂商对 tool 消息格式要求 |
| Skills | 加载 SKILL 说明进上下文 |
| Memory | 用户偏好与历史记忆注入 |
4. 执行顺序
先注册的先包装(具体以 createDeepAgent 组装顺序为准):
内置链 → 可选 Skills/Memory → 用户 middleware。
改顺序会影响 state 合并与 hook 嵌套,自定义时注意文档说明。
5. 自定义 Middleware
- 只暴露必要 tools,避免与内置工具重名。
- state 字段用 reducer(如 append messages)。
- 重逻辑放 Backend 或子代理,middleware 保持薄。
6. 总结
读 Deep Agents 实现 = 逐个 middleware 看加了哪些 tools 与 state;调试「少工具」先查栈是否被裁剪。