17.05概念更新于 2026年9月17日

多 Agent 的代价

成本倍增、信息丢失、责任不清与调试困难。

17.05 · 课时讲解

多 Agent 的代价

每多一个 Agent,就多一份账单、一次压缩、一个责任接口和一段调用链。

1 / 13

一句话理解:每多一个 Agent,就多一份 Token 账单、一次信息压缩、一个责任接口和一段需要追踪的调用链;只有收益明确大于这四项代价时,多 Agent 才值得。

多 Agent 方案在演示时通常很惊艳:几个 Agent 各司其职,屏幕上同时滚动着多条进度。问题往往在上线后才暴露:账单比预估高出几倍;汇总报告里出现了没有任何子 Agent 真正查到过的“事实”;用户投诉结论错误,团队花了一下午才弄清楚是哪个 Agent 在哪一步出的错。

前几课讲了多 Agent 能带来什么,这一课专门清点代价。它的作用是帮你在方案评审时问出正确的问题,并在确实采用多 Agent 时提前准备好对策。

图 1 先把四项代价放在一起:

每多一个 Agent 带来的四项代价:成本倍增、信息丢失与冲突、责任不清、调试与评估困难 每多一个 Agent 代价一 · 成本倍增 多一份 Token 账单 代价二 · 信息丢失与冲突 多一次有损压缩 代价三 · 责任不清 多一个责任接口 代价四 · 调试与评估困难 多一段要追踪的调用链 只有收益明确大于这四项代价时,多 Agent 才值得
图 1 · 每多一个 Agent,就多出四项代价

代价一:成本倍增

多 Agent 的成本增长来自三个地方:

  • 重复的固定前缀。 每个 Agent 都有自己的系统指令和工具定义,每次调用都要发送。
  • 各自独立的探索。 每个子 Agent 都在自己的上下文里多步探索,而 Token 随步数增长很快(原理见 成本模型)。
  • 协调开销。 主 Agent 需要规划、分派、阅读所有子 Agent 的结果并综合。

Anthropic 在多 Agent 研究系统的文章中给出的数据是:在他们的场景中,多 Agent 系统消耗的 Token 大约是普通聊天的 15 倍,单 Agent 约为 4 倍。

用一个例子估算。 全站 SEO 诊断,比较单 Agent 与“1 个 Manager + 5 个 Worker”两种方案。单价均为 假设值:输入 ¥20 / 百万 Token,输出 ¥100 / 百万 Token,不考虑缓存。Token 数也是示意性假设,实际应以 Trace 统计为准。

方案 输入 Token 输出 Token 模型费用 端到端耗时
单 Agent 串行检查 150,000 5,000 ¥3.00 + ¥0.50 = ¥3.50 约 6 分钟
Manager 60,000 4,000 ¥1.20 + ¥0.40 = ¥1.60
5 个 Worker(每个 80,000 / 3,000) 400,000 15,000 ¥8.00 + ¥1.50 = ¥9.50
多 Agent 合计 460,000 19,000 ¥11.10 约 2 分钟

图 2 把两种方案的费用和耗时并排放在一起:

全站 SEO 诊断两种方案对比:单 Agent 3.50 元、约 6 分钟;1 个 Manager 加 5 个 Worker 11.10 元、约 2 分钟 模型费用 单 Agent ¥3.50 多 Agent 5 个 Worker ¥9.50 ¥11.10 Manager ¥1.60 端到端耗时 单 Agent 约 6 分钟 多 Agent 约 2 分钟
图 2 · 单 Agent 与 Manager + 5 Worker:约 3.2 倍成本,换来约 3 倍速度(假设单价与 Token 数)

多 Agent 方案约为单 Agent 的 3.2 倍成本,换来约 3 倍的速度,以及可能更全面的覆盖。这笔交易是否划算,取决于两个问题:用户是否真的在乎这 4 分钟?在同一份评测集上,质量提升了多少?如果质量没有明显提升、用户也不急,单 Agent 甚至批处理才是更好的选择。

代价二:信息丢失与冲突

多 Agent 之间传递的是 摘要,而每一次摘要都是有损压缩,类似“传话游戏”(图 3):

摘要的传话游戏:Worker 的原始发现经过 Worker 摘要和 Manager 汇总两次压缩,丢掉了 canonical 指向别处的限定条件 Worker 的原始发现 /pricing 页 title 过长(72 字符),但 canonical 指向 /pricing-v2 “/pricing 页 title 过长” “多个核心页面存在 title 过长问题,建议立即修改” 结果:用户去改了一个根本不会被索引的页面 Worker 摘要 ✕ 丢掉:canonical 指向别处 Manager 汇总 ✕ 再压缩:扩大成“多个核心页面”
图 3 · 传话游戏:两次摘要后,关键的限定条件丢了

关键的限定条件(canonical 指向别处)在两次压缩中被丢掉了。

更隐蔽的问题是 隐含决策冲突。Cognition 在《Don’t Build Multi-Agents》中提出:行动本身隐含着决策,相互冲突的决策会带来糟糕的结果。两个并行的 Worker 分别决定“按移动端标准评估”和“按桌面端标准评估”,各自都合理,合在一起的报告就自相矛盾。

对策:

  • 结构化返回。 规定子 Agent 的输出字段,包含结论、证据、前提条件与置信度,不允许只返回一句话。
  • 共享决策记录。 在分派前由 Manager 明确全局约定(评估标准、时间范围、口径),写进每个子任务的委派中。
  • 产物走引用。 大块原始结果写入文件或存储,只把引用传回主 Agent,需要时再读取原文。Anthropic 的研究系统采用了这种做法来减少多阶段处理中的信息丢失。
  • 单一写入者。 对共享产物(报告、代码、业务数据)只允许一个 Agent 执行写操作,其他 Agent 只提供输入。

代价三:责任不清

单 Agent 出错,责任链很短:这个 Agent 的指令、工具或模型出了问题。多 Agent 出错时,会出现一连串难以回答的问题:

  • 结论错误,是 Worker 查错了,还是 Manager 综合错了?
  • 两个 Agent 给出相反结论时,以谁为准?
  • 需要用户审批的操作由哪个 Agent 发起?用户看到的审批请求是否包含了足够的上下文?
  • 权限是否被“借用”:一个只读的调研 Agent 能否通过请求另一个有写权限的 Agent,间接完成它自己无权做的操作?

最后一个问题尤其危险。如果读取外部网页的 Agent 被 Prompt 注入 攻击,它可以在返回给主 Agent 的“结论”里夹带指令,诱导拥有写权限的 Agent 执行操作。多 Agent 之间传递的内容,应该和工具返回的外部内容一样被视为不可信数据,敏感操作仍需按 最小权限与凭据管理 和审批规则单独校验。

图 4 画出了这条攻击路径和对应的防线:

权限被借用的路径:外部网页的注入指令经只读调研 Agent 的结论传给有写权限的执行 Agent,对策是写操作前独立校验与审批 攻击路径:注入指令借“结论”一路传到有写权限的 Agent 外部网页 含注入指令 调研 Agent 只读权限 执行 Agent 有写权限 校验与审批 写操作单独判断 写操作 发邮件、改数据 对策:Agent 间消息视为不可信数据 · 写操作按最小权限与审批规则独立校验
图 4 · 权限借用:注入指令可以借“结论”传到有写权限的 Agent,写操作前必须单独校验

对策: 为每个 Agent 写清职责、权限和输出契约;明确唯一的“最终答案负责人”;冲突结论必须在最终产物中显式呈现,而不是由模型悄悄选一个。

代价四:调试与评估困难

Agent 本身就是非确定的,多个 Agent 叠加后,同一个输入每次运行的路径差异会更大。几个现实问题:

  • 错误会累积。 Anthropic 在文章中指出,Agent 是有状态的,长时间运行中的小错误可能不断放大;他们的做法是持久化执行并设置检查点,出错后从出错的位置恢复,而不是从头重跑。
  • Trace 必须跨 Agent 串联。 每个 Agent 的运行都要挂在同一个 trace_id 下,并保留父子关系。OpenTelemetry GenAI 语义约定定义了 invoke_agent Span,其指标约定还特别说明:子 Agent 或被交接 Agent 发起的模型调用应计入它们自己的调用,保证整棵调用树中每次模型调用只被统计一次。OpenAI Agents SDK 的内置追踪会为 Handoff 单独记录 Span。
  • 评估要看终态。 多 Agent 的执行路径变化多端,很难逐步断言“应该先调用谁”。更可行的是评估最终产物和系统状态是否正确,再辅以对关键轨迹的检查,见 结果评估与轨迹评估。
  • 发布要谨慎。 多 Agent 系统的运行时间可能较长,更新时正在运行的任务可能处在任意阶段。Anthropic 提到他们使用彩虹部署(rainbow deployments),在新旧版本同时运行的情况下逐步切换流量,避免打断正在运行的 Agent。

失败模式速查表

症状 可能原因 对策
多个子 Agent 查了同样的东西 委派没有划定边界 委派中写明范围与排除项;由代码按确定维度拆分
简单问题也派出大量子 Agent 缺少投入规模的规则 在指令中按复杂度规定子 Agent 数量;设置并发与花费上限
汇总报告中出现无出处的结论 综合阶段幻觉,或摘要丢失限定条件 要求每条结论带证据引用;汇总时只允许引用子 Agent 的结构化结果
各部分风格、口径不一致 并行 Agent 各自做了隐含决策 分派前统一全局约定;由单一 Agent 负责最终成稿
Agent 之间来回委派、迟迟不结束 缺少停止条件和交接上限 设置最大轮次与交接次数;超过上限转人工
只读 Agent 间接触发了写操作 权限通过 Agent 间请求被“借用” Agent 间消息视为不可信输入;写操作独立校验与审批
出错后无法定位是哪个 Agent Trace 未跨 Agent 串联 统一 trace_id 与父子 Span;记录每个 Agent 的版本

常见误区

  • “成本高一点没关系,效果好就行。” 要用同一份评测集去证明“效果好”,并确认用户愿意为此付费。很多时候同样的预算给单 Agent 更多步数,效果差距并不大。
  • “让模型自己协调,冲突会自动解决。” 模型倾向于把冲突抹平成一个看似合理的说法。冲突应该显式暴露给程序或人来决定。
  • “多 Agent 更安全,因为权限分开了。” 只有当 Agent 之间的消息也被当作不可信输入处理时,权限隔离才真正有效。
  • “调试多 Agent 和调试单 Agent 差不多。” 没有跨 Agent 的 Trace,多 Agent 的问题几乎无法复现和定位。这项基础设施必须先于多 Agent 上线。

产品经理检查清单

多 Agent 方案上线前的评审清单:

  • 是否在同一份评测集上对比过单 Agent 与多 Agent 的质量、成本和延迟?结论是否支持多 Agent?
  • 单任务成本的 P50 / P95 是多少?是否设置了子 Agent 数量、嵌套深度与总花费上限?
  • 每个 Agent 的职责、权限和输出契约是否写清楚?最终答案由谁负责?
  • 子 Agent 的返回是否结构化,并包含证据与前提条件?
  • 相互冲突的结论如何处理:显式呈现、程序裁决,还是转人工?
  • Agent 之间传递的内容是否被当作不可信数据?写操作是否独立校验?
  • Trace 能否跨 Agent 串联?出错时能否从检查点恢复?
  • 发布新版本时,正在运行的长任务如何处理?

练习

完成本模块的综合实践(60 分钟左右):

  1. 选一个你已经做过的单 Agent(例如 SEO 诊断或销售分析),把它改造成 Manager / Worker 结构(可以只在纸面上设计,也可以用 SDK 实现)。
  2. 用同一组 10 个任务分别运行或推演两种方案,填写下表:
指标 单 Agent Manager / Worker
任务成功数
平均 Token 与估算成本
平均耗时
出错时定位问题所用时间
  1. 写一段 200 字的结论:在这个场景下是否值得使用多 Agent,并引用上面的数据。

延伸阅读

下一步

无论是单 Agent 还是多 Agent,最终都要由人来监督和验收。下一模块从「从聊天到监督」开始,讲如何为 Agent 设计让人放心的交互界面。

试试:上下文、MCP、沙箱、Prompt 注入、外链