8.1 从单智能体到多智能体
面向经管学生、研究者与从业者的 AI 智能体设计教材

8.1 从单智能体到多智能体
在日常使用中,一个 Claude Code 智能体已经能处理很多工作。但任务复杂到一定程度后,单个智能体的表现会明显下降。原因主要有三点:
- 上下文窗口有限:所有中间结果堆在同一个窗口里,窗口占满后前面的信息会被压缩甚至丢失
- 任务切换成本高:不同任务的信息会互相干扰,产生上下文污染(Context Contamination)
- 串行执行效率低:分析三家公司的财务报表只能逐一进行,但三家公司的分析彼此并无依赖
子代理不是为了把任务拆得更碎,而是为了拆得更稳。 主代理负责分派目标和整合结果,子代理负责在独立上下文里完成各自的工作。这样既能并行推进,也能减少不同子任务之间的相互干扰。
多智能体的实证效果与成本
Anthropic 在 2025 年公开了多智能体研究系统的实测数据。在 BrowseComp 基准测试中,token 使用量解释了 80% 的性能差异。多智能体的核心优势,是让系统能在同一问题上投入更多 token 和更多并行搜索。
以 Claude Opus 做主代理、Claude Sonnet 做子代理的配置,在内部研究评估中比单个 Claude Opus 高出 90.2%。模型本身的升级也会放大 token 的使用效率——从 Sonnet 3.7 升到 Sonnet 4 带来的提升,比单纯把 token 预算翻倍还大。
多智能体系统的 token 消耗远高于单智能体。Anthropic 的数据显示,普通智能体任务大约消耗聊天的 4 倍 token,多智能体系统约为 15 倍。从经济性看,多智能体更适合任务价值足够高、值得为更高质量付费的场景。
并非所有任务都适合拆成多智能体。以下场景目前更适合单智能体处理:
| 场景 | 原因 |
|---|---|
| 所有智能体需要实时共享同一上下文 | 当前架构下子代理上下文互相隔离,无法实时同步 |
| 子任务之间依赖关系紧密 | 频繁的跨智能体协调反而增加复杂度和延迟 |
| 大多数编程任务 | 代码修改通常有强依赖,真正能并行拆开的部分不多 |
| 简单的事实查询 | 一个智能体几步就能完成,拆分反而增加开销 |
在金融分析场景中,分析一家上市公司的年报可能就要消耗数万 token。如果同时分析十家公司,多智能体的开销会迅速增长。决定是否采用多智能体之前,先评估任务价值是否匹配成本。
子代理的核心特征
子代理(Subagent)是由主代理按需生成的独立智能体实例,具有四个核心特征:
| 特征 | 说明 |
|---|---|
| 独立上下文 | 每个子代理拥有独立的上下文窗口,不与主代理或其他子代理共享 |
| 工具隔离 | 可限制子代理只使用完成任务所需的最小工具集 |
| 任务聚焦 | 接收明确的任务指令,专注执行特定工作 |
| 结果回报 | 完成后将结果返回给主代理,由主代理决定如何使用 |
子代理和传统的函数调用(Function Call)都能完成特定工作,但本质区别在于:函数调用是确定性的,给定输入就会得到固定输出;子代理具有自主性,给定目标后可以自行决定使用什么工具、采用什么顺序,以及如何处理意外情况。任务一旦涉及判断、选择和适应,子代理通常更合适。
独立上下文是子代理最关键的特性。 主代理发起子代理时,子代理会获得新的上下文空间,其中只有任务指令和必要信息。这种隔离既能减少无关信息干扰,也能避免主代理被子任务细节占满。
Claude Code 自带一组内置子代理,主代理会在合适的时机自动调用它们:
| 子代理 | 模型 | 用途 |
|---|---|---|
| Explore | Haiku | 代码库搜索与探索,只有只读工具权限 |
| Plan | 继承 | 实施规划,收集上下文后提出方案 |
| general-purpose | 继承 | 通用任务,支持探索和修改,处理多步操作 |
| Bash | 继承 | 在独立上下文中运行终端命令 |
除了内置子代理,你还可以通过 agent.md 文件创建自定义子代理,配置专属的系统提示词、工具权限、Skills 和 Hooks。
一个直观的例子
假设你要分析贵州茅台、比亚迪和宁德时代三家公司的最新财务报表,并生成一份对比报告。
单智能体方式:一个智能体依次分析三家公司,所有财务数据、计算过程和分析结论都堆积在同一个上下文窗口中。到第三家公司时,前两家的关键数据就可能被遗漏。
多子代理方式:主代理把任务拆成四个环节,三个子代理分别负责一家公司的财务分析,最后由主代理整合三份报告并生成对比结果。三个分析子代理可以同时运行,各自在独立上下文中专注分析。
请创建 3 个财务分析子代理,并行分析贵州茅台、比亚迪和宁德时代三家公司的最新年报。
主代理职责:
- 只负责创建子代理、跟踪进度和整合结果
- 不自己展开单家公司分析
- 待 3 个子代理全部完成后,读取各自输出文件并生成横向对比报告
子代理 1:负责贵州茅台
子代理 2:负责比亚迪
子代理 3:负责宁德时代
每个子代理都要:
- 只分析自己负责的公司
- 计算盈利能力、偿债能力和运营效率指标
- 将结果保存到 `output/{股票代码}-analysis.md`
- 只返回一句状态摘要,不返回完整分析内容
最终由主代理生成 `output/comparison-report.md`。
这类写法把子代理数量、职责和主代理边界都说清楚了,主代理只做调度和整合。主代理保留干净上下文,最后只做整合。