DOCAI · 概念 · L3
子代理(subagent)是什么
主代理派生出的独立上下文代理:领任务、自己执行,只把摘要结果交回来。
它是什么
子代理(subagent)是主代理派生出来的独立代理:它有自己的上下文窗口、自己的系统提示和工具范围,只把任务说明带进去,做完后把结果摘要交回来。
关键在「独立上下文」。主代理不需要把搜索过程中的多次读取、报错和试错都留在自己的对话里,只保留一份结论。上下文越干净,后续判断越不容易被无关信息带偏。
它也不是另一个更聪明的模型。多数实现里,子代理用的是同一类模型,差别在任务范围、提示和工具权限。
怎么工作
一次委派大致是这样:
- 主代理判断任务可以拆,写一份任务说明,包含目标、边界和输出格式;
- 子代理在自己的上下文里执行,可以连续调用工具,中间过程不回传;
- 子代理结束时返回摘要,主代理决定采信、追问还是重新委派。
适合交给子代理的活有几类:大范围搜索与资料筛选;独立审查,例如只读代码找问题;互不依赖的并行探索;以及会产生大量中间输出的任务,比如逐个读文件。在 Claude Code 里,子代理还能限定工具集,做成只能读、不能写的审查角色,这时工具调用的权限边界就落在子代理身上。
代价也很实际。写清楚任务说明本身要花心思,说明含糊,子代理就会跑偏;摘要会丢掉细节,主代理看到的不是全过程,出错时更难定位;多个子代理并行,token 消耗和执行时间都会上去。
失败是隔离的——一个子代理崩了,主代理的上下文还在——但它的错误结论如果被当成事实收下,就会污染后续判断,所以关键结论要能追溯到证据。
什么时候用,什么时候不用
适合拆分的信号:任务边界清晰、彼此不依赖、需要大量探索、单个子任务会产出很多中间材料。典型场景是资料调研、代码审查、多方案并行验证。
不适合的信号:步骤少而线性、子任务之间需要频繁共享上下文、对延迟和成本敏感,或者你还在摸索问题本身。这时单代理加几个工具就够了。先让一个代理把流程跑通,再考虑拆分,会比一上来就设计多代理稳得多。相关背景可以看Agent、Agent 框架和上下文窗口。
常见误解
- 「子代理一定更强」:它换来的是隔离和并行,不是更强的推理;很多任务拆开反而更差。
- 「子代理越多越好」:每个都要写说明、等结果、做汇总,协调成本随数量上升。
- 「子代理能看到主对话」:通常看不到。它只拿到交给它的说明,信息要在任务描述里写全。
- 「子代理失败不会影响主流程」:错误被静默采纳时,影响比直接报错更大。
什么时候用得上
当任务可以拆成互不依赖的搜索、审查或并行探索,或中间过程太杂、不该占满主对话时。步骤少、需要共享上下文的任务,单代理加工具更合适。
常见误解
很多人以为子代理是更强的模型,或者越多越好。它通常只是同一类模型配上专属提示与工具范围,换来上下文隔离与并行;协调成本、token 消耗和摘要丢细节的问题都真实存在。