类型系统设计
Deep Agents 用 TypeScript 累积 middleware 的 state 与 tools 类型,使 createDeepAgent 返回值在启用子代理、Skills 时仍保持 invoke 输入输出可推断。
1. 为何复杂
- 每个 middleware 可能扩展
State。 subagents数组影响task工具参数联合类型。- 可选
responseFormat约束最终输出。
2. 核心类型(概念)
| 类型 | 作用 |
|---|---|
DeepAgentState | messages + 各 middleware 字段合并 |
SubAgentConfig | 子代理名、描述、工具集 |
BackendProtocol | 存储操作签名 |
CreateDeepAgentParams | 工厂入参 |
不列举具体泛型实现;读源码从 createDeepAgent.ts 与 types/ 入手。
3. 类型推断流程
- 固定内置 middleware 基础 State。
- 每增加可选 middleware,交叉类型扩展。
subagents转为 discriminated union 的 task 目标名。compile后 Agent 的invoke输入与 State 对齐。
4. 实践建议
- 自定义 middleware 显式声明
State接口并导出。 - 避免
any破坏推断链。 - 子代理名用字面量类型便于自动补全。
5. 限制
- 动态拼装 middleware(运行时数组)会削弱推断,需手动注解。
- 与 LangGraph 版本升级时泛型可能破坏性变更。
6. 总结
类型系统服务于 「配置即类型安全」;应用层多数情况依赖工厂返回值即可,不必手写 State 泛型。