速成课 · No. 29
单个智能体在一个循环里处理一个目标。有些问题比这更大——工具太多、需要的不同技能太多、一个上下文装不下。Multi-agent 系统把工作拆分给由一个 orchestrator 协调的多个专门智能体。做对了,它更可靠、更可扩展;条件反射式地上,它会成倍放大每一种故障模式。这里讲的是:多个智能体何时胜过一个,以及如何把它们接起来。
19 个概念 · 每个都有一张图 · 结尾有速查表
在把智能体接到一起之前,先理解它要解决的问题。Multi-agent 系统的存在有一个具体的理由——没有那个理由就伸手去用,正是它出错的方式。
地图:七组里的 19 个概念
一张地铁图:先看整条线路,再一站一站地坐。
这门课分七组。第一,为什么要拆——为什么要把工作分给多个智能体,以及你为此付出什么。然后是系统里的三种角色:负责拆分和汇总的 orchestrator、做窄任务的 worker,以及它们之间的 handoff。接着是把智能体接起来的三种形态、multi-agent 会成倍放大的三种故障模式,最后是实践:什么时候该拆,什么时候不该拆。
如何阅读每个概念
一本护照:每个人的栏目都相同,所以容易比较。
从这里开始,每个概念都有同样的几部分:它的英文名(记住它——文档和论文就这么叫)、一幅生活中的画面、一张图,以及一张带有问题、思路、例子、代价和关联等栏目的卡片。这门课的核心想法:更多的智能体既成倍放大能力,也成倍放大出错的方式——所以只有当一个智能体真的不够用时,才拆。
Specialization——什么都做的一个智能体,什么都做不好
一个人被要求同时当建筑师、水管工、电工和检查员,对比一支小队,每个专家把一件事做好。
这就是 Specialization(专门化)的概念。单个智能体的职责太宽——所有工具、各种任务、一个巨大的 prompt——每一步都有太多出错的方式。活越大,它的可靠性就越低。
把工作拆给专门的智能体,每个只负责一件窄任务,能让整个系统更强、更可靠——就像一队专家胜过一个疲于奔命的多面手。专门化是 multi-agent 存在的核心理由。
- 问题
- 职责宽泛的一个智能体——所有工具、一个巨大的 prompt——经常出错。
- 思路
- 把工作拆成窄的智能体,每个把一件事做好。
- 例子
不用一个"什么都做的智能体",而是一个研究员、一个程序员、一个事实核查员和一个排版员。
- 代价
- 现在需要协调——得有东西来拆分工作并汇总。
- 关联
使用 Orchestrator 和 Worker Agent 的理由;代价是 Coordination Cost。
Context & Tool Overload——上下文和工具让单个智能体不堪重负
一张桌子堆满了十种不同工作的所有文件和所有工具——工作的人花在整理杂物上的力气,比干活还多。
有两个具体的限制把你推向单个智能体之外——这就是 Context & Tool Overload。第一:一个智能体的上下文窗口被任务各个部分的所有内容塞满,而塞得过满的上下文会拉低质量(上下文工程的问题)。第二:拿着所有工具的单个智能体,每一轮都得从一份巨大的菜单里选——菜单越长,选得越差。
拆开之后,每个智能体只带它那份窄任务所需的上下文和工具——干净、专注、可靠。
- 是什么
- 单个智能体的两个限制:上下文窗口塞得过满,工具菜单过长。
- 为什么重要
- 塞满的上下文会拉低质量,过长的菜单让每一轮的工具选择都更差。
- 例子
- 一个客服智能体的窗口里放着账单、技术文档和全部历史记录,外加二十个工具。
- 坑
- 先试着收窄这一个智能体的工具、清理它的上下文——有时这就够了。
- 关联
- 用 Context Isolation 和窄的 Worker Agents 来解决。
Coordination Cost——专门化是收益,协调是代价
接力队比一个人跑四棒更快——但前提是交接棒练习过;接力棒一掉,比赛就输了。
multi-agent 的收益是专门化:窄的智能体各自把一件事做好。代价是 Coordination Cost(协调成本):现在得有东西来拆分工作、路由、在智能体之间传递上下文,并汇总结果。而这种协调本身就是复杂性和故障的来源。
整套功夫就是:拿到专门化的收益,同时不让协调成本把它吃掉。当收益盖不过成本时,一个智能体才是正确答案。
- 是什么
- 让智能体一起工作所需的一切:拆分、路由、传递、汇总。
- 为什么重要
- 协调本身就是复杂性和故障的来源。
- 例子
- 只有交接棒练习过,接力才能胜过一个人跑。
- 坑
- 如果它盖过了收益,multi-agent 让系统变差,而不是变好。
- 关联
- 具体体现为 Coordination Overhead 和 Compounding Error。
什么都做的一个智能体什么都做不好——上下文太多,工具太多。多个专门的智能体可以更强,但代价是协调,而协调必须值得这份收益。
multi-agent 系统最常见的形态,中心有一个协调者。理解了 orchestrator,就理解了这类系统大半的接法。
Orchestrator——分派工作的协调者
工地上的总承包商:他们不砌砖,也不接配电箱——他们把项目拆成一项项工作,分派给合适的专业人员。
这就是 Orchestrator 模式(也叫协调者)。它是负责统筹的智能体:接过整体目标,拆成子任务(分解),再把每个子任务路由给合适的专门智能体。它自己不做专门的活;它的工作是分解和指挥。
这呼应了智能体课程里的 plan-and-execute 思路,只是规模更大——一个有能力的智能体负责规划和委派,专注的 worker 负责完成各个部分。
- 问题
- 需要不同技能的大目标,不能直接丢给一个窄的智能体。
- 思路
- 一个主智能体把目标拆成子任务,并把每个路由给合适的 worker。
- 例子
- 研究类 orchestrator 把子话题分给几个研究智能体。
- 代价
- 多一个智能体,多一层可能出问题的地方。
- 何时使用
- 工作确实能拆成需要不同技能或工具的几块。
- 关联
放大版的 Plan-and-execute;通过 Handoffs 指挥 Worker Agents;通过 Assembly 合并结果。
Assembly——orchestrator 合并各 worker 的结果
编辑向不同的作者约稿,再把各部分合成一篇连贯的文章——稿子交回来,得有人把它们变成一个整体。
orchestrator 的第二项工作是 Assembly(汇总,也叫综合):收集各个 worker agent 返回的内容,合并成一个连贯的最终结果。研究类 orchestrator 可能把子话题发给几个智能体,再把它们的发现综合成一个答案。
这个收集合并的步骤,是各条独立的工作流变成一个输出的地方——做好它(化解冲突、去掉重复)和拆分一样重要。
- 是什么
- orchestrator 把各 worker 的输出变成一个结果的步骤。
- 为什么重要
- 没有好的汇总,你得到的不是答案,而是一堆互相矛盾的碎片。
- 例子
- 三个智能体研究了三个子话题;orchestrator 写出一份没有重复的报告。
- 坑
- 汇总常被当成细节——但冲突和重复恰恰在这里冒出来。
- 关联
- Orchestrator 的后半部分;Parallel 的最后一步。
Coordination Layer——协调层才是真正的架构
管弦乐队不是一堆出色的独奏者——而是指挥和乐谱在决定谁在何时演奏。协调就是音乐。
在 multi-agent 系统里,价值和难点都转移到了 Coordination Layer(协调层):谁在何时运行、用什么输入、结果如何合并。大家的注意力在各个智能体上,但系统能不能工作,取决于围绕它们的编排——路由、上下文传递、错误处理。
和单个智能体一样,模型是容易的部分;可靠性是赢在还是输在它周围的结构上。
- 是什么
- 围绕智能体的代码和规则:谁在何时运行、用什么输入、结果如何合并。
- 为什么重要
- 系统能否工作在这里决定,而不是在单个智能体里。
- 例子
- 智能体都很出色,但某个 worker 拿到了错误的输入——整个系统输出的都是垃圾。
- 坑
- 把心思花在打磨智能体的 prompt 上,却把协调交给运气。
- 关联
包含 Orchestrator、Handoff 和 Assembly;用 Multi-agent Tracing 来调试。
orchestrator 分解目标,把每个子任务路由给专门的 worker,再汇总它们的结果。协调层——而不是单个智能体——才是真正的架构。
orchestrator 指挥的智能体,在每个都很窄的时候最有用。让 worker 保持专注的纪律,正是整个系统可靠、可测试的原因。
Worker Agent——每个 worker 只有一项明确的工作
一间厨房,每项工作一个工位——一个人管酱汁,一个管烤架,一个管摆盘——每人精通自己那个窄角色,而不是样样手忙脚乱。
Worker Agent 是一个专门的智能体,有一项窄而明确的工作:搜文档、写代码、核查事实、排版输出。因为它的职责小,所以它的 prompt 专注,工具很少,行为可预测。
orchestrator 交给它一个明确的子任务,它做这一件事,然后返回结果。窄的 worker 是积木——每块都简单到能做对、能信任。
- 是什么
- 只有一项窄工作、一个短 prompt 和很少工具的智能体。
- 如何工作
- 从 orchestrator 拿到明确的子任务,完成它,并返回结果。
- 例子
一个搜文档的智能体、一个写代码的智能体、一个核查事实的智能体、一个排版的智能体。
- 坑
- worker 慢慢地"再多加几个工具",又变回了多面手。
- 关联
由 Orchestrator 指挥;用 Per-agent Evals 检查;遵循 Depth over Breadth。
Per-agent Evals——窄的智能体更容易测试、更值得信任
你可以彻底检查一位专家的工作,因为他的活小而明确——比审查一个什么都沾点边的多面手容易得多。
窄的智能体比庞杂的智能体容易评估、调试和信任得多。有了一项明确的工作,你就能给它写 evals——这就是 Per-agent Evals 的做法,给每个智能体单独做测试。你能准确看到它在哪里失败,并单独修好它——和智能体课程里同样的可靠性论证,只是用在每一块上。
multi-agent 系统只有在每个 worker 单独都可靠时才可靠,而当每个只做一件范围明确的事时,这容易得多。
- 是什么
- 给每个 worker 单独准备的一套测试,而不只是给整个系统。
- 怎么做
- 为每项窄工作准备自己的"输入 → 期望输出"样例,并检查结果。
- 例子
- 事实核查员的 evals 失败了——你修它的 prompt,不去动其他智能体。
- 坑
- 只测系统的最终输出:失败时,你分不清该怪哪个智能体。
- 关联
- 只有每个 Worker Agent 都够窄才有效;与 Multi-agent Tracing 互补。
Depth over Breadth——在一项工作上的深度胜过在多项工作上的广度
一个外科医生只做一种手术,做上几千次,胜过偶尔做一次的多面手——专注带来的可靠性,广度给不了。
贯穿这一切的原则是 Depth over Breadth(深度胜过广度):一个反复做一件事的专注智能体,比偶尔做很多事的宽泛智能体更可靠。这就是为什么要分解——不是为了多出一些智能体,而是为了让每个都窄到真正擅长自己那一块。
如果某个 worker 的工作仍然宽到不可靠,答案通常是再拆细,而不是给它堆更多工具。
- 是什么
- 只做一件事的窄智能体,比做很多事的宽智能体更可靠。
- 为什么重要
- 这正是分解的意义——不在于智能体的数量,而在于它们的窄度。
- 例子
- 一个"调研并写报告"的智能体总是出岔子——把它拆成"调研"和"写作"。
- 坑
- 用更多工具去修一个不可靠的 worker——那只会让它更宽,而不是更好。
- 关联
- Specialization 和 Worker Agent 的基础。
worker agent 是窄的专家——一项明确的工作、专注的 prompt、很少的工具——这让每个都可测试、可信任。在一项工作上的深度,胜过在多项工作上的广度。
智能体的好坏,取决于它们彼此传递的东西。工作和上下文在它们之间怎么流动——干净还是凌乱——决定了系统是保持连贯,还是退化成噪声。
Handoff——在智能体之间传递工作
接力跑者交接棒:交接本身就是一门技术,赢得比赛的是一次干净的交接,而不只是跑得快的选手。
Handoff(交接)是一个智能体把工作交给另一个的那一刻——orchestrator 交给 worker,或者一个智能体直接交给下一个。传递的是子任务和完成它所需的上下文。
handoff 是很多 multi-agent 故障发生的地方:如果接收方没拿到它需要的东西,或者拿到的是一个含糊的版本,不管这个智能体多好,它的输出都会是错的。交接是设计中的一等公民,不是细节。
- 是什么
- 工作和上下文从一个智能体转到另一个的那一刻。
- 如何工作
orchestrator → worker,或智能体 → 下一个智能体:子任务加上它所需的上下文。
- 例子
- 研究智能体把找到的事实和任务"写这一节"交给写作智能体。
- 坑
很强的智能体拿到糟糕的输入,就会给出糟糕的结果——被怪罪的是智能体,出错的却是 handoff。
- 关联
要做成 Clean Handoff;它让 Context Isolation 成为可能;每次 handoff 都是 Compounding Error 的一步。
Clean Handoff——传干净、有结构的上下文,而不是全部
一次好的交底,只给下一个人完成任务所需的东西——而不是把之前每场对话的完整记录丢给他去翻。
诱惑在于把到目前为止的全部历史都传给每个智能体,但这会在每个智能体内部重现上下文塞得过满的问题。更好的做法是 Clean Handoff(干净交接):给接收方一份专注、有结构的摘要,只含它需要的东西——相关事实和具体任务——而不是原始的信息洪流。
这让每个智能体的上下文保持紧凑、专注,而这正是当初拆分之所以值得的原因。
- 问题
- 传递全部历史会让下一个智能体的上下文过载。
- 思路
- 传一份简短有结构的摘要:所需的事实 + 具体任务。
- 例子
- 不传 40 轮对话,而是"事实:…;任务:写定价这一节,不超过 300 字"。
- 代价
- 得有人决定什么重要——还可能不小心漏掉需要的东西。
- 何时使用
- 每次 handoff 都默认这样做。
- 关联
- 做 Handoff 的正确方式;正是它带来了 Context Isolation。
Context Isolation——每个智能体有自己干净的上下文
分开的工作间,每间只有那个房间的工作所需的材料——这样没人会被其他所有任务的杂物分心或搞糊涂。
multi-agent 的一个实在好处是 Context Isolation(上下文隔离):每个智能体在自己干净的上下文里工作,只看到它的工作所需的东西,而不是整个系统积累下来的一团乱。这也是拆分能提高可靠性的原因之一——它避免了单个长时间运行的智能体里逐渐积累的 context rot(上下文腐烂)。
但只有 handoff 做得规范,你才能得到这个好处;要是把一切都传给所有人,你就是在用额外的步骤重建那个单个过载智能体的问题。
- 是什么
- 每个智能体在自己干净的窗口里工作,里面只有它的任务。
- 为什么重要
- 不会像单个长时间运行的智能体那样积累 context rot。
- 例子
- 审阅智能体只看到草稿和评审标准——看不到搜索日志或失败的代码尝试。
- 坑
- 只有配合干净的 handoff 才有效;"所有东西给所有人"会毁掉它。
- 关联
- Context & Tool Overload 的答案;建立在 Clean Handoff 之上。
handoff 在智能体之间传递工作,而它们正是 multi-agent 常出问题的地方。传一份只含所需内容的干净、有结构的摘要,让每个智能体保持拆分本该带来的那种专注的上下文。
multi-agent 系统是按几种反复出现的形态接起来的。了解其中三种主要的——以及各自何时合适——就知道了大半该怎么组织协调。
Sequential——分阶段的流水线
一条装配线:每个工位做自己的那部分,按固定顺序把产品传给下一个,直到最后成品下线。
Sequential(顺序)模式把智能体按固定顺序串起来:智能体 A 的输出喂给智能体 B,B 的输出再喂给智能体 C。先是起草智能体,再是编辑智能体,再是事实核查智能体。
它是最简单的 multi-agent 形态,也最可预测,适合工作有必须按顺序发生的自然阶段的情形。它本质上是一条专家流水线——当步骤固定时,它比每次都重新决定顺序的循环更可靠。
- 问题
- 工作有必须严格按顺序进行的阶段。
- 思路
- 一条智能体链:前一个的输出是后一个的输入。
- 例子
- 起草智能体 → 编辑智能体 → 事实核查智能体。
- 代价
- 比 parallel 慢;早期阶段的错误会沿链往下传。
- 何时使用
- 步骤固定且彼此依赖。最简单的形态。
- 关联
- 像架构模式里的 Pipe-and-Filter;每个衔接处都是一次 Handoff。
Parallel——扇出再汇集
把同一个调研问题同时发给几位助手,再把他们的发现收到一起——许多人同时工作,最后合并结果。
Parallel(并行)模式让多个智能体同时处理相互独立的部分,然后汇集它们的结果——先 fan-out(扇出),再 gather(汇集)。调研五个子话题、处理很多条目、获取几个独立的视角:这些并行做都比一个接一个更快。
orchestrator 拆分工作,worker 同时运行,结果再合并。当各部分互不依赖且速度重要时,parallel 最能发挥作用。
- 问题
- 有很多相互独立的部分,一个一个做太慢。
- 思路
- 把各部分同时交给几个智能体,再汇集结果。
- 例子
- 并行调研五个子话题,再把发现合并成一份报告。
- 代价
- 同时发出更多模型调用;汇总时必须化解各结果之间的冲突。
- 何时使用
- 各部分互不依赖,且速度重要。
- 关联
- 最后一步是 Assembly;Orchestrator 负责扇出和汇集。
Hierarchical——orchestrator 的 orchestrator
公司的组织架构图:经理指挥组长,组长各自指挥自己的员工——协调分层嵌套,用于一层装不下的大工作。
Hierarchical(层级)模式把协调嵌套起来:顶层 orchestrator 把活委派给子 orchestrator,各自管理自己的 worker。这样靠一层层分解,来处理真正庞大复杂的任务,就像一个组织那样。
它是最强大的形态,也是最复杂的——更多协调,更多出错的地方——所以只有当任务大到确实需要嵌套分解时才用它。大多数系统用 sequential 或 parallel 就够了;层级是留给少数不够用的情形。
- 问题
- 任务大到一个 orchestrator 拆不开,也撑不住。
- 思路
- 顶层 orchestrator 委派给子 orchestrator,每个都有自己的 worker。
- 例子
一个大型研究项目:顶层智能体把它分成几个领域,每个领域有自己的协调者和研究员。
- 代价
- 最复杂的形态:更多协调,更多出错的地方。
- 何时使用
- 只有当任务确实需要嵌套分解时。很少用。
- 关联
Orchestrator 嵌套在自己里面;每一层内部是 Sequential 或 Parallel。
sequential 把智能体串成固定的流水线;parallel 把独立的工作扇出再汇集;hierarchical 为大任务嵌套 orchestrator。用工作真正需要的最简单的形态。
multi-agent 很诱人,也常被滥用。更多的智能体不只是增加能力——它们成倍增加系统出错的方式,而忽视这一点,正是这类系统悄悄失败的原因。
Compounding Error——步骤越多,误差累积越多
更长的接力有更多次交接,就有更多机会掉棒——每多一次交换,就多一个让整场跑失败的地方。
这就是 Compounding Error(误差累积)的概念。单个智能体在一条长链上本来就只有一部分时候能成功(智能体课程里的可靠性问题),而 multi-agent 让链更长:更多智能体、更多 handoff、更多步骤,每一步都可能失败,并把错误传给下游。
可靠性沿链条相乘,所以增加智能体可能降低整体成功率,除非每一块和每次 handoff 都扎实。更多的智能体意味着更多误差累积的面,而不是自动意味着更多能力。
- 是什么
- 成功的概率一步步相乘,所以长链更容易失败。
- 为什么重要
- 每多一个智能体、每多一次 handoff,就多一个小于 1 的乘数。
- 例子
- 每步 95%,三步后约 86%,十步后约 60%。
- 坑
- 以为更多的智能体总是意味着更多的能力。
- 关联
随每次 Handoff 增长;所以 Sequential 要保持短,Hierarchical 很少用。
Coordination Overhead——协调有它自己的开销和成本
为协调五个团队开的一场会,可能比活本身还贵——过了某个点,协调比干活更费劲。
这就是 Coordination Overhead(协调开销)。每个智能体都有自己的模型调用、自己的延迟、自己的成本——而编排又在上面再加一层:路由、handoff、汇总、重试。同一个任务,multi-agent 系统可能比单个智能体慢得多、贵得多,有时还没有更好。
如果专门化的收益没有明显盖过这些额外的成本和延迟,那么更简单的单个智能体才是更好的工程选择。
- 是什么
- 花在路由、handoff、汇总和重试上的额外模型调用、延迟和金钱。
- 为什么重要
- 系统可能变得比一个智能体更慢、更贵——却没有变得更好。
- 例子
- 一个简单的问题要经过一个 orchestrator 和三个 worker,而不是一次调用。
- 坑
- 拆分前后不衡量成本和延迟。
- 关联
Coordination Cost 的具体形态;支持 Single Agent by Default 的论据。
Multi-agent Tracing——更难追踪和调试
追踪一个包裹很容易;在一张由仓库、卡车和交接构成的网里追查故障,是另一回事,难得多。
multi-agent 系统出了问题,要找到在哪里,比单个智能体难得多:故障可能在任何一个 worker、任何一次 handoff,或编排本身。所以可观测性变得必不可少——这就是 Multi-agent Tracing 的做法:跨智能体追踪一个请求,并记录每一次 handoff。
这种调试成本是代价的真实组成部分。一个你无法追踪的系统,就是一个你无法可靠修复的系统,而 multi-agent 确实让追踪更难。
- 是什么
- 记录一个请求经过每个智能体和每次 handoff 的路径。
- 怎么做
共用的请求 ID、每次 handoff 的日志(传了什么、回来了什么)、每一步的耗时和成本。
- 例子
- 答案是错的——追踪显示代码智能体在 handoff 时拿到的上下文不完整。
- 坑
- 没有追踪,故障就是"系统里的某个地方"——盲目修复几乎不可能。
- 关联
你调试 Coordination Layer 的方式;配合 Per-agent Evals 能看出该怪谁。
更多智能体成倍放大故障模式:更多步骤累积误差、实实在在的协调开销和成本,以及难得多的追踪。条件反射式的 multi-agent 降低的是可靠性,而不是提高它。
multi-agent 对合适的问题是强大的工具,对不合适的问题则是昂贵的错误。用好它主要是克制:只有当单个智能体真的应付不了时才拆。
Single Agent by Default——只有当一个智能体真的应付不了时才拆
回答一个简单的问题,你不会组一个委员会——只有当活确实大到一个能干的人干不了时,你才请来一个团队。
这就是 Single Agent by Default(默认单个智能体)的原则。默认应该是单个智能体,只有当一个确实应付不了这项工作时——不同的技能太多、工具太多、上下文多到无法连贯地装下——你才去用 multi-agent。如果一个构建良好的单个智能体能做到,multi-agent 版本只是白白增加成本、延迟和故障模式。
问题从来不是"我能拆吗?"——几乎任何东西都能拆——而是"一个智能体在这里真的不够吗?"
- 是什么
- 从一个智能体开始,只有当它真的应付不了时才拆。
- 为什么重要
- 多出来的智能体增加成本、延迟和故障模式,却没有收益。
- 例子
- 一个智能体在 20 个工具里迷路了——先只留给它需要的 5 个,之后再考虑拆。
- 坑
- 问"这能拆吗?"——几乎任何东西都能拆。
- 关联
Coordination Overhead 和 Compounding Error 的制衡;通往 Orchestrator 的出口——只在真正需要时。
让每个智能体保持窄,每次 handoff 保持干净
一支管理良好的队伍有明确界定的角色和练习过的交接——让它可靠的是结构,而不是英雄式的拼搏。
当你确实要上 multi-agent 时,让它奏效的两条纪律是:让每个 worker 保持窄(一项明确的工作、很少的工具、能单独测试),让每次 handoff 保持干净(只含所需内容的专注摘要,而不是全部历史)。大多数 multi-agent 故障都能追到某个太宽的 worker 或某次太含糊的 handoff。把这两点做对,再配上明确的 orchestrator 和最简单的适用模式,系统在扩大规模时仍能保持可靠。
- 一个智能体真的做不了这件事吗——还是它在这个负载下确实会崩?
- 有没有明确的 orchestrator,负责分解、路由和汇总?
- 每个 worker 都够窄吗——一项工作、很少的工具、能单独测试?
- handoff 干净吗——专注的摘要,而不是倒过去整段历史?
- 哪种模式适合——sequential、parallel 还是 hierarchical——它是可行的里面最简单的吗?
- 收益盖过成本了吗——更多步骤、延迟、花费,以及更难的追踪?
- 你只在一个智能体真的应付不了时才用 multi-agent。
- 一个明确的 orchestrator 负责分解、路由和汇总工作。
- 每个 worker 都很窄——能单独测试、值得信任。
- handoff 是干净的,传递专注的上下文,让每个智能体的窗口保持紧凑。
- 你用的是适合的最简单的模式,并且能跨智能体追踪一次故障。
这一切如何串起来
完整的地铁图:现在你能看到各条线在哪里交汇。
你从一个智能体开始。如果它应付不了,orchestrator 就出现了:它挑一种模式(sequential、parallel 或 hierarchical),通过干净的 handoff 把活交给窄的 worker,然后汇总结果。每个智能体和每次 handoff 都会增加开销和累积误差——如果收益小于成本,就退回一个智能体。而追踪能准确显示哪里出了问题。
速查表:全部 19 个概念
为什么要拆
- Specialization专门的智能体
窄的智能体各自把一件事做好——multi-agent 的核心理由。
- Context & Tool Overload上下文太多、工具太多
一个智能体的窗口塞得太满,工具菜单太长。
- Coordination Cost协调的代价
拆分、路由、传递、汇总——这要花成本,而且必须值得。
Orchestrator
- Orchestrator协调者
主智能体把目标拆成子任务,交给 worker。
- Assembly综合
把各 worker 的输出合并成一个结果:化解冲突、去掉重复。
- Coordination Layer编排
谁在何时运行、用什么输入、结果如何合并——真正的架构。
Workers
- Worker Agent专家智能体
一项窄工作,一个短 prompt,很少的工具。
- Per-agent Evals给每个 worker 的测试
单独测试每个 worker——看出谁失败了,并单独修好它。
- Depth over Breadth窄胜过宽
worker 太宽、不可靠——再拆细,别加工具。
Handoffs
- Handoff传递工作
子任务及其上下文从一个智能体转到另一个的那一刻。
- Clean Handoff专注的简报
一份简短的摘要:所需的事实 + 任务,而不是全部历史。
- Context Isolation分开、干净的上下文
每个智能体有自己干净的窗口——没有 context rot。
模式
- Sequential流水线
A → B → C,顺序固定。最简单、最可预测。
- Parallelfan-out / gather
独立的部分同时进行,然后汇集。追求速度。
- Hierarchical嵌套的 orchestrator
orchestrator 的 orchestrator。最强大也最复杂——很少用。
故障模式
- Compounding Error误差相乘
成功率逐步相乘:智能体越多——链越长——故障越多。
- Coordination Overhead额外成本
路由、handoff、汇总、重试——更多延迟和金钱。
- Multi-agent Tracing跨智能体的可观测性
记录每次 handoff,这样就能准确找到哪里出了问题。
实践
- Single Agent by Default从一个智能体开始
只有当一个构建良好的智能体真的应付不了时才拆。
multi-agent 是深思熟虑的选择:只有当一个智能体真的应付不了时才拆,给它一个明确的 orchestrator,让每个 worker 保持窄、每次 handoff 保持干净,并用最简单的模式——因为你每多加一个智能体,成本和故障模式都会成倍增加。