概述
SubAgent 是 Zeus 的任务委托机制。主 Agent 通过调用task 工具,将子任务分派给独立的子智能体执行。每个子智能体拥有自己的上下文和推理循环,执行完毕后将结果作为 Tool Result 返回给主 Agent。
核心能力:
- 任务分解 — 将复杂任务拆解为独立的子任务
- 上下文隔离 — 每个子智能体拥有独立上下文,互不干扰
- 并行执行 — 多个子任务可并行处理,提升效率
- 结果汇总 — 子智能体完成后,结果返回主 Agent 继续推理
架构
主 Agent 与子智能体对比
task 工具
主 Agent 通过 task 工具触发子智能体。该工具由 DeepAgents 框架的 SubAgentMiddleware 自动注入。
参数
调用示例
SubAgentMiddleware
SubAgent 能力由 DeepAgents 框架的SubAgentMiddleware 提供。在 Agent 创建时自动注册,将 task 工具注入主 Agent 的工具集。
后端配置
在BaseService._create_agent() 中配置:
执行流程
前端集成
SSE 事件流
子智能体的执行通过标准 SSE 事件流传输到前端。前端通过事件中的tool_name 和 tool_call_id 区分主 Agent 和子智能体的消息。
消息隔离
子智能体产生的消息(工具调用、文本)通过subAgentTaskId 字段标记,不在主聊天流中显示:
- 聊天区:子智能体的工具调用只展示在对应的
TaskToolCallCard内部,不会出现在主消息流 - 任务分组:
groupMessagesIntoTasks在处理前过滤掉subAgentTaskId消息,不影响主任务状态 - Todos:子智能体的
write_todos调用会被完全跳过,不影响主 Agent 的任务列表
TaskToolCallCard
每个task 工具调用在聊天区渲染为一张可展开的卡片:
- 收起状态:显示状态图标、任务描述、进度(如 5/11)、当前活动
- 展开状态:列出子智能体内部所有工具调用及其状态
- 运行中:蓝色边框高亮,带旋转加载图标
- 支持点击 “View in trajectory →” 跳转到对应的轨迹标签页
TaskToolCallCard,分别展示进度。
轨迹区标签页
当存在子智能体时,轨迹区顶部显示标签页切换栏:- Main — 主 Agent 的工具执行历史
- SubAgent — 每个子智能体拥有独立标签页,显示各自的工具执行历史
并行执行
主 Agent 可以在同一轮中调用多个task 工具,触发并行子智能体:
subAgentStack)追踪当前活跃的子智能体上下文,将后续的工具调用事件路由到正确的子智能体轨迹中。