Multi-Agent 不该被神化:真正重要的是上下文隔离

Multi-Agent 不该被神化:真正重要的是上下文隔离

最近看了一篇关于 Harness 工程的分享,文章表面上在讲怎么把 LLM Agent 的 prompt cache 命中率做到 90%+,但我读完之后更在意的,其实是它对 Multi-Agent 的一个反向提醒:

Multi-Agent 不应该被理解成“多几个角色就更智能”,它真正值得保留的价值,是上下文隔离和工程边界。

这件事很有意思。过去一年,大家谈 Agent 时很容易自然滑向 Multi-Agent:一个 Planner,一个 Coder,一个 Reviewer,一个 Tester,再加一个 Manager 做调度。这个结构看起来很像真实团队,也很符合人类对协作的直觉。但问题在于,模型不是人。把人类组织结构照搬到模型运行时里,未必会得到更好的系统,反而可能得到更高的成本、更长的链路和更多上下文损耗。

先说结论:Multi-Agent 不是默认更高级

很多人喜欢 Multi-Agent,是因为它看起来更“体系化”。

单 Agent 像一个人在闷头干活,Multi-Agent 则像一个团队:有人规划,有人执行,有人测试,有人评审。直觉上,这当然更可靠。

但 Agent 系统的关键矛盾,和人类团队不一样。

人类分工的前提是:每个人的大脑独立存在,沟通成本虽然高,但每个人可以长期保留自己的经验、判断和上下文。模型不是这样。每个 Agent 背后本质上都是一次或多次 LLM 调用,而每次调用都要面对 prompt、history、tool schema、上下文窗口、cache 命中率这些工程问题。

所以 Multi-Agent 一旦拆得太细,就会出现几个很现实的代价:

  • 每个 Agent 都需要自己的 system prompt
  • 每次交接都要序列化状态
  • 每个角色看到的上下文都不完全一样
  • 中间过程会不断膨胀 history
  • cache 很容易因为前缀变化而失效
  • 最终还需要一个额外步骤把多个结果重新收敛

这不是“协作变复杂”这么简单,而是每一次拆分都会变成真实成本。

原文里提到一个很刺耳的经验:Planner / Coder / Reviewer / Tester 这种多 Agent 工作流,可能让一个单 Agent 几分钟能完成的任务被拉长到十几分钟,成本也被放大很多。这个结论未必适用于所有场景,但它提醒我们,Multi-Agent 并不是免费抽象。

为什么人类分工不能直接照搬给 AI

很多 Multi-Agent 设计有一个潜在假设:既然软件团队可以按角色分工,那么 AI 也可以按角色分工。

但这里忽略了一个差异:人类角色之间的边界,往往是为了降低认知负担;模型角色之间的边界,却可能制造新的上下文损耗。

一个人类 Reviewer 不需要每次 review 都重新加载自己的“评审人格”和“评审工具说明”。他的大脑里本来就有长期经验。模型不是这样。你让一个 Reviewer Agent 出场,就要给它 prompt,给它上下文,给它工具说明,让它读材料,再让它输出判断。然后主 Agent 还要读它的结论,再继续下一步。

这套过程如果没有非常明确的收益,很容易只是把一个任务拆成更多轮调用。

更麻烦的是,角色拆分会让上下文变得碎片化。Planner 看到的问题、Coder 看到的问题、Reviewer 看到的问题并不天然一致。为了让它们一致,就要传递更多状态;为了传递更多状态,就要写更长的消息;消息越长,成本越高,压缩越早到来,cache 越容易被破坏。

所以,Multi-Agent 最大的问题不是“模型会不会协作”,而是:

这种协作结构是否真的减少了系统复杂度,还是只是把复杂度转移到了上下文传递里。

真正有价值的是“隔离”,不是“分工表演”

那是不是 Multi-Agent 就完全没有价值?我觉得不是。

问题不在于“多 Agent”,而在于为什么要多。

如果多 Agent 只是为了模拟一个组织结构:Planner、Coder、Tester、Reviewer 各跑一遍,我会比较警惕。因为这很容易变成一种形式感很强、工程收益不稳定的编排。

但如果多 Agent 是为了做上下文隔离,它就有意义了。

比如代码审查场景。主 Agent 正在做实现,如果让它在同一个 history 里读几十个文件、跑一堆 grep、展开长篇分析,主会话会迅速膨胀。后续每一轮都要背着这些中间过程继续跑,成本和干扰都会变大。

这时候启动一个子 Agent 做只读审查,是合理的。子 Agent 可以在自己的上下文里完成大量探索,最后只把结论返回给主 Agent。主 Agent 不需要保存所有中间细节,只需要看到“发现了什么、建议怎么处理、风险在哪里”。

这和传统 Multi-Agent 编排不一样。

传统编排强调角色分工;这里强调的是状态隔离。前者容易把任务拆碎,后者是在保护主上下文。

所以我更愿意把这类能力叫做:局部子 Agent 调用,而不是宏大的 Multi-Agent 工作流。

Multi-Agent 应该长在 Harness 里

这也回到我最近一直在思考的 Harness。

如果 Agent 是执行能力,那么 Harness 就是让执行能力稳定工作的工程外壳。Multi-Agent 如果要有价值,也应该是 Harness 的一部分,而不是在 Agent 之上再套一个抽象的组织架构。

一个健康的设计应该是:

  • 主 Agent 负责保持任务主线
  • 子 Agent 只在局部场景出现
  • 子 Agent 有明确输入、明确输出和明确退出点
  • 中间探索尽量不污染主会话
  • 返回结果必须被主 Agent 或人工重新判断

这样的 Multi-Agent 是克制的。它不是为了“看起来像团队”,而是为了让任务边界更清楚。

比如下面这些场景,我觉得适合子 Agent:

  • 大范围代码审查
  • 独立安全风险扫描
  • 文档资料压缩
  • 多方案并行比较
  • 复杂问题的反方审视
  • 对某个子目录或子系统做局部分析

它们有一个共同点:中间过程很多,但最终只需要一个高质量结论。把这些过程隔离出去,能减少主 Agent 的上下文负担。

但下面这些场景,我会慎用 Multi-Agent:

  • 简单功能开发
  • 小范围 bugfix
  • 明确步骤的机械修改
  • 只是为了套 Planner / Coder / Reviewer 模板
  • 没有明确收敛规则的开放讨论

因为这些任务本来就不需要复杂编排。强行拆开,只会增加交接成本。

Prompt Cache 其实暴露了架构问题

原文从 prompt cache 角度切入,这一点很有启发。

很多人会把 cache 命中率当成成本优化问题。但我觉得它更深层的意义是:它暴露了 Agent 架构是否稳定。

如果一个系统动不动就改 system prompt,动不动就换工具 schema,动不动就把动态信息塞进稳定前缀,那么 cache 命中率低只是表象。真正的问题是:系统边界不清楚,稳定信息和动态信息没有分层。

Multi-Agent 也是一样。

如果每个 Agent 都有一套 prompt,每次交接都要重新描述上下文,每个角色都要重新理解任务,那么成本上升只是结果。更底层的问题是:你没有设计好信息应该在哪里稳定、在哪里变化、在哪里隔离、在哪里收敛。

这就是为什么我觉得 Multi-Agent 不能脱离 Harness 来谈。

没有 Harness 的 Multi-Agent,容易变成一堆 Agent 互相传话;有 Harness 的 Multi-Agent,才有机会变成可控的局部能力调用。

对个人和团队的启发

如果要把 Multi-Agent 真正用进日常开发,我觉得可以从几个问题开始,而不是先画角色图。

第一,先问这个任务是否真的需要隔离。

如果只是一个小改动,单 Agent 加清晰上下文就够了。不要为了高级感而拆角色。

第二,问子 Agent 的输出能不能被压缩成稳定结果。

如果一个子 Agent 跑完之后,主 Agent 还必须接收它的大量中间过程,那隔离价值就被抵消了。

第三,问每个子 Agent 有没有明确退出点。

没有退出点的 Agent 很危险。它会不断探索、不断膨胀上下文,最后把任务变成一个越来越大的黑箱。

第四,问 Harness 能不能兜住失败。

子 Agent 的结论不能自动等于事实。尤其是安全审查、架构建议、性能判断,都应该被主 Agent 或人类重新校验。Multi-Agent 不是为了取消判断,而是为了给判断提供更好的材料。

我的判断:未来不是多 Agent 取代单 Agent,而是 Harness 重新定义 Agent 边界

Multi-Agent 这个方向不会消失,但它会从“角色编排崇拜”里慢慢降温。

真正留下来的,不会是那种把人类团队结构机械复制一遍的系统,而是更克制、更工程化的形态:

  • 主会话保持稳定
  • 子任务按需隔离
  • 工具集尽量稳定
  • 动态信息不污染稳定前缀
  • 中间过程不长期拖累主上下文
  • 结果通过 Harness 收敛和校验

说到底,Multi-Agent 的价值不是“多”,而是“边界”。

如果多个 Agent 只是让系统更乱、更贵、更慢,那它不是架构升级,只是复杂度膨胀。只有当它能隔离状态、降低主上下文污染、改善风险控制、提高结果质量时,Multi-Agent 才是值得引入的工程手段。

所以我现在对 Multi-Agent 的态度更谨慎了:

不要先问要几个 Agent,先问哪些上下文必须隔离。

这个问题问清楚了,Multi-Agent 才不会变成一种漂亮但昂贵的表演,而会变成 Harness 里真正有用的一块工程能力。