多 Agent 协作入门 · Lesson 1 of 6

第 1 课:为什么要多个 Agent——单上下文的极限

学习目标:

  • 说出单个 Agent 在长任务里会遇到的两种具体限制:上下文污染和注意力稀释
  • 用官方给出的 token 成本数据,判断一个任务是否值得引入多个 Agent
  • 识别「协调开销大于收益」的场景,说出多 Agent 系统今天不擅长做哪类任务

前置要求:完成前 5 门课(会写 prompt、懂工具调用协议、了解 Agent 记忆与状态、能读基础 JS) | 下一课 第 2 课 >>

一个 Agent,一路做到底,会遇到什么

假设你让一个 Agent 完成这样一个任务:「调研三家云服务商最近一年的定价变化,横向对比,写一份 2000 字的选型建议。」

单个 Agent 会怎么做:先搜第一家的定价页面,读进来一大段 HTML 和价格表;再搜第二家,又是一大段;再搜第三家的历史变更记录,可能还要翻几页;期间搜到几条不相关或者过时的结果,也一并读了进来;最后基于这一整段越滚越长的对话历史,写出那份 2000 字的建议。

这个过程本身没有问题——前几门课你已经知道,这就是 Agent 的基本工作方式:读取上下文、决定下一步、调用工具、把结果放回上下文,循环往复。真正的问题出在任务变长、变复杂之后,这条越滚越长的单一上下文,会在两个地方悄悄拖累最终结果。

上下文污染:早期的弯路,甩不掉

调研进行到一半,Agent 搜到了一条误导性的结果——也许是一篇过时的博客文章,报了一个已经作废的价格;它没有意识到这条信息有问题,把它当作真实数据继续往下推理,甚至写进了对某家云服务商的初步判断里。

这条错误判断产生之后,并不会凭空消失。它留在对话历史里,成了后续所有推理的一部分背景。等 Agent 真正搜到权威、最新的定价页面时,两条互相矛盾的信息都摆在同一个上下文窗口里,模型未必能干净地识别出哪条才该被采信——尤其是当那条错误信息出现得更早、被反复引用过的时候。

这就是上下文污染:早期一步产生的错误或无关信息,混进了后续全部推理都要依赖的同一份上下文里,而且很难被后来的正确信息彻底冲刷掉——上下文窗口里的 token 越多,模型从中准确回忆、分辨具体信息的能力反而越低1。任务越长、中间步骤越多,这类污染累积的机会就越大。

注意力稀释:读得越多,看得越模糊

第二个问题和第一个不同——不是信息错了,而是信息「太多」本身就是代价。三家云服务商的定价页面、历史变更记录,加起来可能是几万字的原始内容,全部堆进同一个上下文窗口。模型在生成最终建议时,理论上要同时兼顾这几万字里的每一处细节,但它对其中任何一处细节的「注意力」,会随着上下文变长而被摊薄。

这就是注意力稀释:模型解析大量上下文时靠的是一份有限的「注意力预算」,每多一个 token 都会消耗掉一点1——同一个上下文窗口里塞的内容越多,模型对其中任意一小段具体信息的关注程度就越低,越容易在总结、对比这类需要精确记住多处细节的任务上出错或遗漏。

上下文污染和注意力稀释合在一起,就是「单上下文」这条路径的天花板:任务一旦长到一定程度,靠一个 Agent 从头做到尾,质量会逐步往下掉——官方把这种退化描述为「渐变而非断崖」1——而且单靠加长 prompt 很难补回来。

多 Agent 系统:把长任务拆给多个上下文

多 Agent 系统给出的答案,是把一个大任务拆成几块,分别交给几个独立的 Agent 去做,而不是塞进同一个越滚越长的上下文里。官方给出的定义是:「多 Agent 系统由多个 Agent(在循环中自主使用工具的 LLM)协同工作组成。」2

放回云服务商调研的例子:与其让一个 Agent 一路读完三家公司的所有资料,不如分别让三个 Agent 各自专心调研一家——每个 Agent 有自己独立的上下文窗口,互不干扰2。第一家调研里搜到的过时博客文章,只会污染那一个 Agent 自己的上下文,不会混进另外两家的推理过程——官方把这称为「关注点分离」,各自独立的工具、提示词和探索路径降低了路径依赖2;每个 Agent 手上要兼顾的原始内容也从「三家公司的全部资料」变成「一家公司的资料」,注意力稀释的问题也跟着减轻。这种「一个中心 Agent 拆任务、多个 Agent 并行处理、再汇总结果」的结构,具体怎么运作,下一课会展开讲。

代价:多 Agent 更贵

分给多个 Agent 不是免费的。每个子 Agent 都要重新读一遍任务背景、组织自己的推理,这些都要消耗 token;最后还要有一步把几个 Agent 的结果汇总起来,这一步也要消耗 token。官方给出的实测数据是:「在我们的数据中,Agent 消耗的 token 通常约为对话式交互的 4 倍,而多 Agent 系统约为对话式交互的 15 倍。」2

15 倍不是一个小数字。这意味着引入多 Agent 系统,只有在任务本身的价值足够高、值得为提升效果多付这份 token 成本时才划算——官方原文也是这么说的:「多 Agent 系统要具备经济可行性,需要任务本身的价值高到足以覆盖性能提升带来的额外开销。」2

具体该配几个子 Agent,也不是越多越好。官方给出过一条效果扩展规则:简单的事实查找,1 个 Agent 配 3 到 10 次工具调用就够;直接的横向对比,2 到 4 个子 Agent、每个 10 到 15 次调用;只有足够复杂、任务边界能被清楚拆分的调研,才值得用到 10 个以上子 Agent。2 早期版本里,团队踩过反例——有的 Agent 给一个简单查询就派生出 50 个子 Agent,或者无休止地满网搜一个根本不存在的来源,多个 Agent 之间还互相发一堆没必要的更新,把彼此的注意力也占满了。2

这条规则背后的态度,和 Anthropic 在另一篇讲 Agent 架构的文章里给出的建议是一致的:「只有在能明确改善结果时,才应考虑增加复杂度。」3 先把任务用一个 Agent 跑通,观察它到底卡在哪一步、是上下文污染还是注意力稀释,再决定要不要、以及在哪一步引入多 Agent,比一上来就搭一套复杂的多 Agent 系统更划算。

什么时候不该用多 Agent:协调开销大于收益

多 Agent 系统的价值建立在「任务可以被拆成几块、各自独立处理」这个前提上。一旦这个前提不成立,拆分本身就成了额外负担——这就是协调开销:为了让多个 Agent 分工协作而额外花费的时间和 token,包括拆任务、汇总结果、处理 Agent 之间互相矛盾的产出。当一个任务本来就没多少能真正拆开并行化的部分时,协调开销很容易超过拆分带来的好处。

官方明确指出过一类不适合的场景:「大多数编码任务比调研任务能真正并行化的部分要少得多,而且 LLM Agent 目前还不太擅长实时协调、委派给其他 Agent。」2 修一个 bug 通常需要理解代码里前后相关的好几处逻辑,这些逻辑环环相扣,很难干净地切成几块分给不同 Agent 各自处理而不互相踩脚——这类任务更接近深度优先任务:答案藏在一条需要逐步深入的推理链条里,而不是分散在几个互不相关的方向上。相反,官方总结多 Agent 系统真正擅长的,是那些「涉及大量并行化、信息量超出单一上下文窗口、需要对接大量复杂工具」的高价值任务2——调研云服务商定价、横向对比多份文档,属于广度优先任务:答案分布在几个相对独立的方向上,可以真正分头去查、互不依赖彼此的中间结果。

判断一个任务该不该上多 Agent,可以先问三个问题:这个任务能不能拆成几块互相独立的子任务?拆开之后总的信息量是不是超过了一个上下文窗口能装的范围?任务的价值是不是高到能覆盖那笔多出来的 token 成本?三个问题只要有一个答案偏向「不能」或「不值得」,先老老实实用一个单 Agent 系统把任务做完,通常比强行拆成多 Agent 更划算。

小结

  • 单个 Agent 一路做到底,会在长任务里遇到两个具体限制:上下文污染(早期的错误或无关信息混进后续推理,很难被冲刷掉)和注意力稀释(同一个上下文塞的内容越多,模型对任意一处细节的关注度越低)。
  • 多 Agent 系统由多个各自独立使用工具的 Agent 协同工作组成2,靠给每个 Agent 分配独立的上下文窗口来缓解污染和稀释问题。
  • 多 Agent 不是免费的:官方数据显示它的 token 消耗平均约为对话式交互的 15 倍,只有任务价值足够高才划算2;该配几个子 Agent,也有官方给出的效果扩展规则可以参考,而不是越多越好2
  • 更稳妥的态度是先用单 Agent 把任务跑通,只有在能明确改善结果时才考虑增加复杂度3
  • 判断该不该拆给多个 Agent,先问:任务能不能拆成互相独立的子任务?信息量是否超出单上下文?任务价值是否值得多付的 token 成本?官方明确指出编码这类深度优先、前后强依赖的任务并行化程度低,不是多 Agent 的强项2,广度优先、可以分头查的调研类任务才是。

>> 第 2 课:编排者与子代理:扇出与汇总

Footnotes

  1. Effective context engineering for AI agents(Anthropic Engineering) — https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents 2 3

  2. How we built our multi-agent research system(Anthropic Engineering) — https://www.anthropic.com/engineering/multi-agent-research-system 2 3 4 5 6 7 8 9 10 11 12 13

  3. Building effective agents(Anthropic Engineering) — https://www.anthropic.com/engineering/building-effective-agents 2

Exercises

01

下面四个任务,判断每一个更适合用单个 Agent 完成,还是拆给多个 Agent 分头处理,并说明理由。

Level 1:给四个任务判断该不该拆
  1. "帮我看看这个函数为什么在并发场景下偶尔会返回错误结果,定位到具体的 bug。"
  2. "帮我调研五个不同行业的头部公司,各自最近一年发布过哪些和 AI 相关的产品,整理成对比表格。"
  3. "帮我把这段 300 字的产品介绍翻译成英文。"
  4. "帮我读完这个仓库最近 20 个 PR 的描述和讨论,总结出团队最近在关注哪几类问题。"
Done criteria · checked locally
02

任务是:「调研三家竞品最近半年各自新发布的功能,各写一段 200 字左右的总结,不需要横向对比。」参照本课讲到的效果扩展规则,给这个任务估算一下大致该配几个 Agent、每个 Agent 大概需要几次工具调用,并说明你的估算依据。

Level 2:给一次调研任务估算 Agent 配置
Done criteria · checked locally

My note

Jot down thoughts, sticking points, things you didn't get. Written to this course's appendix only — the lesson file is never touched.