Skip to main content

概述

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_nametool_call_id 区分主 Agent 和子智能体的消息。

消息隔离

子智能体产生的消息(工具调用、文本)通过 subAgentTaskId 字段标记,不在主聊天流中显示:
  • 聊天区:子智能体的工具调用只展示在对应的 TaskToolCallCard 内部,不会出现在主消息流
  • 任务分组groupMessagesIntoTasks 在处理前过滤掉 subAgentTaskId 消息,不影响主任务状态
  • Todos:子智能体的 write_todos 调用会被完全跳过,不影响主 Agent 的任务列表

TaskToolCallCard

每个 task 工具调用在聊天区渲染为一张可展开的卡片:
  • 收起状态:显示状态图标、任务描述、进度(如 5/11)、当前活动
  • 展开状态:列出子智能体内部所有工具调用及其状态
  • 运行中:蓝色边框高亮,带旋转加载图标
  • 支持点击 “View in trajectory →” 跳转到对应的轨迹标签页
并行的子智能体会各自显示独立的 TaskToolCallCard,分别展示进度。

轨迹区标签页

当存在子智能体时,轨迹区顶部显示标签页切换栏:
  • Main — 主 Agent 的工具执行历史
  • SubAgent — 每个子智能体拥有独立标签页,显示各自的工具执行历史
每个标签页有独立的步骤滑块(step slider),互不影响。切换标签页时,轨迹区内容和代码预览同步更新。

并行执行

主 Agent 可以在同一轮中调用多个 task 工具,触发并行子智能体:
前端使用栈模型(subAgentStack)追踪当前活跃的子智能体上下文,将后续的工具调用事件路由到正确的子智能体轨迹中。

设计原则


使用场景