Subagent 中文一般叫「子智能体」或「子代理」。它指的是主智能体在执行任务时临时派出去的一个独立实例:有自己的系统提示、自己的上下文窗口、自己的工具清单和权限,干完活把结论交回来,然后消失。
它想解决的问题很具体:一个长任务里有大量「翻找」性质的中间过程——读了二十个文件才找到那三行、跑了五次测试才定位到那个报错。这些过程占满上下文,却对最终决策没什么用。子智能体的做法是把这些过程关在另一个窗口里,只把结论带回来。
先用一句话抓住它
Subagent 是主智能体派出去查一件事的分身:过程留在它自己那儿,只有结论回到主会话。
生活里的类比是让助理去查资料。你说「去把三季度所有华东区退货原因整理一下」,助理翻了两百页台账、打了六个电话,回来递给你一页纸。你不需要知道他翻了哪两百页——那些过程如果全塞给你,你反而抓不住重点。
为什么会出现这个词
直接原因是上下文窗口不够用,但更准确的说法是窗口里的信噪比会下降。一个几十万 token 的窗口塞到三分之二时,回答质量往往开始变差,不是模型变笨了,而是模型要对满屏噪声一视同仁地分配注意力。
于是有了一个反直觉但很实用的定位:子智能体不会让 AI 变聪明,它保护的是主会话里那份已经很干净的上下文。
Anthropic 在多智能体研究里给过一组数据支持这个思路:多个持有独立上下文的智能体,在广度优先的研究任务上明显优于单个智能体,内部测试中相比单个 Claude Opus 4 智能体高出约 90.2%,原因之一就是每个子智能体的窗口可以完整分配给一个更窄的子任务。
flowchart TB
Main["主智能体(编排者)<br/>持有任务全局"] -->|"派发:只传一段提示词"| S1["子智能体 A<br/>独立窗口"]
Main -->|派发| S2["子智能体 B<br/>独立窗口"]
S1 -->|"只回传最终结论"| Main
S2 -->|只回传最终结论| Main
S1 -.->|中间过程留在内部| X1["读文件 / 跑测试 / 检索"]
S2 -.-> X2["读文件 / 跑测试 / 检索"]
Main --> Out["整合并交付"]它通常包含什么
以 Claude Code 的实现为例,子智能体由主会话通过 Agent 工具派生(这个工具早期叫 Task)。每个子智能体在 .claude/agents/ 下用一个 markdown 文件定义:顶部 YAML 写名字、描述、可用工具和模型,正文就是它的系统提示。
通道设计是刻意收窄的:传进去只能靠调用时那段提示词,传出来只能靠它的最终回复。中间的每一次工具调用、每一次文件读取、每一行测试输出都留在子智能体自己的窗口里,不会注入到父会话。父会话拿到的就是那条最终消息。
几个常见约束值得记住:子智能体不能再派子智能体,遇到本该继续拆分的情况就在自己窗口里做完;它只在任务期间存在,任务结束即销毁;多个互不依赖的子任务可以并行派发,这是这套模式最直接的性能收益。
和多智能体、Skills 的区别
Anthropic 给过一句很干净的划分:子智能体在同一个会话内工作,而智能体团队是跨会话协作。团队里每个成员有自己的窗口、完全独立,代价是 token 消耗更高,好处是真正的对等协作。经验法则是先用子智能体,不够了再上团队。
Agent Skills 是第三种选择,适用场景不同:当你想要一段可复用的指令、并且希望它在主对话上下文里执行时用技能;当你希望执行过程被隔离在另一个窗口里时用子智能体。一个是复用知识,一个是隔离上下文。
和上下文工程的关系
在上下文工程的四类策略里,子智能体是「isolate(隔离)」这一类最典型的实现——把上下文按子任务切开,每块自带工具和指令,互不污染。它和「compress(压缩)」经常一起用:能隔离的先隔离,隔离不掉的长历史再压缩。
容易误解的地方
第一个误解是「派得越多越好」。每次派发都有固定成本:子智能体要重新建立对任务的理解,而它拿不到父会话的历史。对于需要大量背景才能判断的任务,转述背景的开销可能比省下的还多。
第二个误解是以为子智能体之间能互相通气。它们默认互不可见,共享信息只能经由父会话转手,或者写到外部文件里。设计并行任务时要保证子任务真的独立,否则会出现两个子智能体做出互相冲突的修改。
第三个误解是把它当成调试黑盒。默认情况下子智能体内部发生了什么几乎不外露,排查问题时要主动展开消息历史去看它收到的提示词和交回的结论,否则很难判断是派发描述写得不好,还是它自己跑偏了。
怎么判断它该不该用
适合派出去的任务有三个特征:过程冗长但结论简短(大范围检索、定位一个 bug、遍历目录找用法)、和主线上下文关系不大(不需要知道你前面聊过什么)、以及能被清楚地描述成一段话(因为你只能传这一段话)。
不适合的也很清楚:需要你反复追问和纠偏的探索性工作、依赖大量主会话背景才能判断的任务、以及会修改共享状态且彼此有依赖的并行任务。还有一类容易被忽略——如果任务本身只有几步,派发的固定开销可能比直接做还大。