本章总览
子代理 (AgentTool / Task) 允许主 Agent 派发子任务,每个子代理有独立 query 循环和受限工具集。本章解释 Explore vs generalPurpose 等类型及防递归机制。
总览图
渲染图表中…
学完本章你应该能
- 理解为何需要子代理
- 对比子代理与主循环的工具差异
- 知道 QueryGuard 防无限递归
核心概念(先读懂这些)
分而治之
复杂任务拆给子代理并行探索,主 Agent 汇总。Explore 只读适合搜代码;shell 型适合跑命令。
上下文隔离
子代理有独立 messages,不会污染主会话,但消耗额外 token。Trade-off:清晰 vs 成本。
建议学习步骤
- 对照子代理类型表
- 阅读 runAgent.ts 流程
- 思考:何时该用 Task 而非直接 tool
子 Agent 派发
渲染图表中…
AgentTool
核心
主 Agent 通过 AgentTool (Task) 派发子代理。每个子代理有独立的 query 循环和受限工具集。
子代理类型
| 类型 | 工具集 | 用途 |
|---|---|---|
| Explore | Read/Grep/Glob/WebFetch | 快速代码探索,readonly |
| generalPurpose | 大部分工具 | 通用任务执行 |
| shell | Bash/PowerShell | 命令行操作 |
| plan | 只读工具 | 规划模式 |
执行流程
AgentTool.call({ subagent_type, prompt })
→ runAgent.ts 创建子 ToolUseContext
→ 启动独立 query() 循环
→ 子代理完成后返回 summary
限制
· ALL_AGENT_DISALLOWED_TOOLS — 子代理禁用的工具
· QueryGuard — 防止无限递归
· Token/Cost 独立追踪
本章小结与延伸
子代理 = 套娃 query 循环。理解它是理解多 Agent 编排的入门。 继续学习: