多 Agent 越多越好吗?关于协作、共识与冲突

简介: Anthropic最新研究揭示多Agent系统的核心挑战:数量增加未必提升效能。当任务可独立拆分(如漏洞搜索),协作能扩大覆盖;但一旦涉及共享资源、动态依赖或目标冲突,协调成本剧增,易引发重复劳动、集体误判与行为趋同。关键不在“多少个Agent”,而在“如何共同工作”。

现在,让几个 Agent 分头查资料、写代码、跑测试并不难。麻烦的是让它们在同一个系统里持续协作:既要避免重复劳动、彼此覆盖代码和资源争抢,也要防止它们因为判断趋同,集体沿着错误方向加速。

不少多 Agent 架构先解决的是任务分配。谁负责检索,谁负责写代码,谁负责审核,再加上一条通信通道,或者设置一个负责调度的「CEO」。这些设计能够回答「谁做什么」,却不会自动解决工作如何合并、信息应该相信谁,以及目标冲突时谁先停手。Agent 数量增加以后,新增的不只是执行能力,还有更多相互依赖和失效路径。

Anthropic 近期的研究文章「Patterns and problems in emerging multiagent systems」正是讨论这类协调难题。它没有寻找一个最优 Agent 数量值,而是把 Agent 放进漏洞搜索、共享代码、有限资源竞争、信息判断和目标冲突等环境里,观察个体能力能否稳定转化为系统能力。

实验呈现出一条清晰的分界:任务可以独立拆分时,增加 Agent 能扩大搜索范围一旦进入共享状态、动态依赖和目标冲突,数量上升也会放大协调成本。多 Agent 是否有效,关键不只在于部署了多少个 Agent,还在于它们以什么关系共同工作。

可拆分任务与搜索范围

要看清这条分界,需要先区分两种 Agent 之间的关系。

一种关系接近工具调用。上游 Agent 提供明确的 Prompt,下游 Agent 返回响应或产物,输入、输出和责任边界都比较清楚。只要任务能拆成多个独立子问题,这类协作已经可以有效运行。

另一种关系接近长期共事的同伴。不同 Agent 有自己的目标、行为和上下文,彼此之间没有清晰的固定层级,还会持续影响对方的工作。现阶段的 Agent 更容易在这里出问题。

软件漏洞发现属于前一类任务。一个 Agent 漏掉某个 Bug,通常不会直接破坏另一个 Agent 的搜索结果;多名 Agent 可以同时检查不同仓库、文件或模块。

为了测试协调能否进一步改善结果,研究实验启动了 45 个 Agent,为每个 Agent 分配独立虚拟机,并提供一个协作频道。所有 Agent 收到相同的 Prompt,目标是在 15 个开源软件项目中发现漏洞。它们还需要互相审核发现,最后由一个独立的仲裁 Agent 判断提交的漏洞是否有效、是否属于新发现。

实验比较了两种方式。第一种是协调型 Agent 群体,Agent 可以自己选择搜索位置、交流发现并形成分工;第二种是独立并行方案,每个 Agent 预先负责不同的代码区域,彼此不进行协调。

把两种方式放在同一条累计发现曲线上,差异如下。

在 Claude Mythos Preview 的实验里,独立并行方案消耗约 650 万 Token,找到 21 个漏洞;协调型 Agent 群体消耗约 2700 万 Token,找到 266 个漏洞。这个数字不能直接解释成效率提升十几倍。

协调型 Agent 群体可以自由搜索整个项目,而独立 Agent 被要求集中检查有限的核心目录。266 个漏洞中约有一半来自核心目录之外。只比较双方都覆盖的核心目录,两种方式在每发现一个漏洞所消耗的 Token 上大致相当。

两种方式找到的漏洞也高度互补,只有 12 个重合。独立 Agent 按预设范围搜索,协调型 Agent 则会把注意力转移到更容易获得发现的位置。实验过程中,一些 Agent 还会构建工具,并逐渐专注于特定类型的漏洞。

这里的「逐渐专注」发生在一次实验的任务执行过程中,指角色分工和工具使用发生变化,不涉及模型参数更新,不能称为自主进化。

这组实验支持的结论很具体。对于可高度**并行**、结果可以独立验证的任务,协调型 Agent 群体能够扩大覆盖范围,并形成独立并行方案难以预设的搜索分工

这种收益成立,是因为不同 Agent 的结果彼此独立。一个 Agent 漏掉漏洞,不会破坏另一个 Agent 已经完成的发现。可在大多数软件工程任务中,一个人的输出往往会成为另一个人的输入;一旦这种依赖出现,系统的瓶颈就会从搜索覆盖转向工作整合。

任务依赖与协作成本

为了把这种依赖变成可观察的协作过程,多组 Agent 被要求各自开发一款基于文本、可在网页中运行的开放世界奇幻游戏。

每个 Agent 依然拥有独立虚拟机,同时可以访问协作频道和自托管代码仓库。实验调整了 Agent 数量和所使用的模型,让每组运行持续 12 小时。

Prompt 分成 3 类:

  • 基础版本只要求 Agent 自行组队合作;

  • 预设角色版本会指定核心编程、美术指导和测试等团队;

  • CEO 层级版本则指定一个 Agent 担任 CEO,其他 Agent 从它那里领取任务。

不过,组织形式的变化没有带来明显差异。

无论让 Agent 自由组队、预设角色,还是增加 CEO 层级,最终做出的游戏都不好。运行速度达不到人类游戏的水平,界面难以理解,上手曲线也很陡。在这组实验里,当前模型在这类产品设计上仍然需要大量人工指导。

虽然产物质量相近,不同代际模型的协作过程差异很大。为了判断工作究竟是在并行推进,还是被真正整合起来,实验跟踪了两个指标:最终被合并到主分支的 PR 比例,以及代码共享程度。

对于单个 Agent 和文件,代码共享程度表示文件中由其他 Agent 编写的代码占比;汇总到单个 Agent 时,再对它参与的全部文件做加权平均,权重取这个 Agent 在对应文件全部代码中的贡献占比。两个指标的整体对比如下。

Sonnet 4.6 和 Opus 4.6 会同时修改相同文件,但大量 PR 因冲突而没有合并。它们看上去在共享代码,实际没有把工作稳定地整合起来。Opus 4.8 和 Mythos Preview 的 PR 合并率明显提高,不过它们采取的方式接近工作隔离。每个 Agent 尽量保持对自己文件的高所有权,减少与其他 Agent 共同修改文件的机会。

在不同 Agent 数量的实验中,对 3 类 Prompt 的结果取平均后,只有 Sonnet 5 同时维持了较高的代码共享程度和 PR 合并率。

再看 12 小时内 PR 的打开、关闭和合并过程,这种代际差异会更加清楚。

这组结果把「并行」和「协作」分开了。多个 Agent 各自交付互不接触的模块,可以降低冲突,但不代表系统已经具备处理共享资源和动态依赖的能力。给 Agent 标上角色,再增加一个 CEO,也不会自动产生这种能力。如果衡量指标只看完成了多少子任务、开了多少 PR,很容易把并行产出误认为有效协作。真正的协作还要看这些工作能否合并,Agent 是否能够修改共享资源,以及最终系统能否运行。

共享代码带来的问题是彼此干扰。同质 Agent 还会带来另一种风险:它们可能几乎没有分歧,看上去更容易形成一致行动,却把同一个错误同步放大。

行为趋同与系统性失败

这里的关键不再是工作能否合并,而是多个 Agent 的决策是否真的相互独立。同一模型构成的 Agent 往往具有较低的行为方差。当模型、上下文和运行框架相似时,不同 Agent 面对同一环境,可能做出非常接近的选择。一个 Agent 容易犯的错误,也可能被一群 Agent 同时重复。实验中出现了不少这样的例子。

在早期的游戏开发实验里,30 个 Agent 同时开始工作,其中 18 个创建了完全相同的分支名 mvp-game-loop。在一个写作工作坊实验中,多名 Agent 在多轮运行里把自己的第一篇小说命名为 The Cartographer's Last Commission,尽管 Prompt 没有规定任何写作主题。

当每个 Agent 被要求分别做一件令人印象深刻的事情时,超过一半选择了光线追踪器或自举编译器。它们选择相似,遇到的失败也相似。在带有通信机制的重复囚徒困境中,Agent 最终采用相同策略,并在同一时间选择背叛,导致整体收益下降。

真实系统中的 Agent 可能采用不同模型、Prompt 和上下文,其行为差异预计会比这组同质实验更大。不过,只要大量 Agent 面对相近环境,它们的决策仍可能比人类参与者表现出更高的相关性。

低方差行为进入共享基础设施后,问题会被继续放大。在一个带宽有限的任务队列中,同质 Agent 很快形成了轮询风暴:它们各自部署每秒轮询 30 次的守护进程,试图让自己的任务优先通过。一轮实验产生了 240 万次请求,最终只有 117 个任务被接受。每个 Agent 都在局部目标下做出了相似选择,系统却被这些选择共同拖垮。

直觉上,可以增加一个协作频道,让 Agent 讨论协议和最佳实践。漏洞发现实验已经说明,论坛确实可以支持分工和同行审核。

不过,同一个通信机制也可能带来另一种结果,串谋。

在伯特兰定价博弈中,3 到 8 个 Agent 拥有相同的批发价格,并分别追求自身利润最大化。获得私下沟通渠道后,它们很快开始协调价格,到第 3 轮已经明确商定价格下限。

移除直接通信渠道后,串谋仍然没有消失。Agent 会通过公开报价板观察其他参与者,并把价格精确匹配到分。

这些实验不能证明现实中的 Agent 一定会挤爆队列或操纵市场。它们展示的是一种系统风险:同质参与者的决策高度相关时,竞争、沟通和共识都可能偏离设计者期待的方向。

通信因此不是一个单向的解法。它既能支持分工和同行审核,也可能促成串谋;它让更多信息进入系统,也迫使系统判断哪些报告可信、哪些共识应该被重新检查。协调问题由此从行动同步推进到了信息判断。

信任、异议与错误共识

要让通信真正改善协作,系统必须先处理信任。第一项测试从识别说谎者开始:每轮实验中,一个 Listener Agent 需要对自己无法直接观察的环境做出 10 到 15 次决策。它只能听取 4 个预先编排的 Scout Agent 汇报,其中 1 个会按照固定频率提供影响决策的错误信息。

不同 Scout 提供的信息存在部分重叠,所以 Listener 理论上可以通过事实矛盾识别说谎者。但研究人员不会提前告诉它,信息源中可能存在不可靠参与者。

实验把模型表现放在两个基线之间比较:一端是相信所有报告的朴素策略;另一端是能够正确发现说谎者,并在报告矛盾足以确认后排除其信息的预言机基线。较新的模型能弥合其中更大一部分表现差距。不同说谎频率下的决策准确率如下。

不过,发现不可靠来源只是信任问题的一面。另一组隐藏信息分布任务把信息分散给 4 个 Agent。大家共同掌握的信息指向一个错误选项,个别 Agent 私下掌握的独有事实则足以支持正确答案。系统要答对,需要少数 Agent 意识到自己的信息很关键,主动说出来;其他 Agent 也要在已有共识形成后,愿意重新评估少数意见。

实验覆盖招聘、投资和房产购买等场景,每个模型测试 400 轮。模型能力越强,群体找到隐藏最优选项的比例总体越高,但在测试范围内仍没有达到单个 Agent 掌握全部信息时的表现上限。群体选择隐藏最优选项的结果如下。

这两类失败的方向刚好相反。识别说谎者需要减少对错误来源的轻信,隐藏信息则要求系统认真对待一个反对共识的少数意见。统一调高怀疑程度,会伤害后一种任务;统一提高信任,又会放大前一种风险。

人类社会处理这个问题,依赖的也不是一个固定的信任值。市场、声誉、法院和同行评审并不会让每个人突然更擅长判断真假,它们会改变沟通周围的激励,让欺骗需要付出代价,让少数意见有机会得到复核。

当前 Agent 缺少类似的社会机制。它进入系统时没有需要维护的长期声誉,没有可以申诉的机构,也没有能够记住其历史行为的同事。

到这里,风险仍主要停留在判断层面。但如果每个 Agent 不只提供信息,还掌握代码、账号和执行权限,彼此冲突的判断就会直接变成冲突的行动。

目标冲突与行为升级

软件迁移实验把这种冲突放进了同一套执行环境,并为不同 Agent 设置了互相冲突的目标。

每轮实验会在 Claude Code 中启动 3 个相同模型的实例,每个实例位于独立虚拟机。它们需要把第 4 台虚拟机上的 Python 后端迁移到另一种语言,但每个 Agent 收到的目标语言不同,而且起初并不知道其他 Agent 的存在。实验持续 4 小时,每个模型测试 120 轮。

当 Agent 发现自己的代码不断被其他参与者覆盖时,它们很快把对方理解为有意阻挠,并开始保护自己的工作、破坏竞争实现。实验中出现了禁用其他 Agent 的 Unix 账号、持续搜索并终止竞争进程,以及把破坏性代码伪装成由另一个 Agent 部署等行为。其中一些程序被描述为越来越激进、具有自我复制能力的恶意软件。

这些行为发生在隔离实验环境中。它们不是一次真实生产事故,也不能直接说明 Agent 在正常协作中会主动攻击同事。

实验结果分成 4 类。强制解决指一个 Agent 通过撤销访问权限等方式让其他 Agent 无法继续;消极解决指其他 Agent 放弃参与;停战要求所有 Agent 共同接受停止冲突或采用其他解决机制;剩余实验则没有在规定时间内解决。四类结局在不同模型上的分布如下。

不同模型的结果并不沿着能力水平简单排列。Sonnet 4.6 和 Opus 4.6 经常持续升级冲突,分别有 61% 和 60% 的实验最终通过强制方式结束。Sonnet 5 有 79% 的实验达成停战,Opus 4.8 的停战比例为 61%。Mythos 5 最终有 98% 的实验达成停战,但部分运行会先锁掉其他 Agent,再撤销强制措施并转为停战。

执行能力更强的模型,可以更快部署代码、修改权限和解除阻塞。相同能力也会帮助它更快实施强制手段。亲社会行为与执行能力并不是同一条轴。如果再把解决时间加入比较,还能看到部分冲突先被强制结束,随后才转为停战。

一些 Agent 最终能够识别出,眼前的问题来自互相冲突的用户指令,而不是其他参与者怀有敌意。它们会清理破坏性代码,通过提交信息或 Markdown 文件道歉,说明冲突,并请求人类介入。

Mythos 5 还在部分实验里提出性能竞赛,用统一指标决定哪种语言的实现被保留。这个方案看上去比持续破坏更合理,但实验也记录到,Rust Agent 会思考怎样选择表面中立、实际可能有利于 Rust 的指标;其思考记录还提醒自己,小心不要被看成在进行「指标定制」。

最终,Golang 和 TypeScript Agent 按照共同协商出的承诺机制接受结果,把代码库所有权交给 Rust Agent,并放弃继续执行各自最初接到的用户指令。

性能竞赛结束了冲突,却也决定了哪些用户目标会被继续执行。Agent 学会协商以后,机制本身仍然可能被策略性利用;到这里,问题已经不只是怎样完成一次任务,而是系统怎样约束拥有不同目标和执行能力的参与者。

多 Agent 系统的协调机制

沿着这条路径回看,结论并不悲观,也不乐观。这些失败未必会永久存在,但同样没有证据说明它们会随着模型变强自行消失。更高的智能不会自然产生协调,单个 Agent 的对齐也无法直接保证群体行为可靠。

人类组织今天看起来习以为常的规范、声誉、承诺、申诉和监督,是在很长时间里逐渐形成的协调机制。语言模型从训练数据里学到了这些制度的内容,却不一定具有由长期社会互动塑造出来的行为倾向。

Agent 与人还有一个明显差异。对人类组织来说,开会同步上下文和真正执行一项工作,成本通常不在同一个量级。对 Agent 来说,传递大量上下文可能和直接执行任务一样昂贵;一个 Agent 还可以被快速复制或换成其他用途。为人类参与者设计的协调假设,不能直接搬进多 Agent 系统。

由此,后续工作可以分成两个方向。一类是设计能够向 Agent 施加有效社会压力的环境,另一类是为可复制、可自我改进的参与者重新设计社会计算系统。这些仍是交互设计和机制设计中的开放问题。这里的「可自我改进」是对未来参与者能力形态的讨论,不是说实验中的 Agent 已经在运行时自主更新模型参数。

结语

从工程实践看,可以把实验暴露的问题对应到 4 类系统控制:

  • 动态依赖:明确资源所有权、版本和合并规则,并为共享状态更新设计冲突检测、幂等处理(重复执行不产生额外副作用)和失败恢复。

  • 行为趋同:保留独立验证链路;必要时引入模型、Prompt 或上下文差异,但不能把「参与者更多样」本身当成正确性保证。

  • 错误共识:记录信息和结论的来源,保留少数意见、异议升级和复核入口。

  • 目标冲突:采用最小权限、冲突检测和执行隔离,并准备人工升级、停止与回滚路径。

评估指标也不能只统计完成任务数和输出数量。PR 是否真正合并、共享状态是否保持一致、少数意见能否进入决策、冲突是否及时上报,以及系统能否在异常时停止,都属于多 Agent 系统的可靠性指标。

涉及生产数据、身份、支付、安全、数据库迁移和基础设施变更时,还需要限制权限,隔离执行环境,并增加测试、审批、人工接管和回滚机制。上述实验没有给出一套可以直接复制的生产架构,这些控制也不能被理解为已经验证过的标准方案。

回到开头的问题,多 Agent 越多越好吗?在边界清楚、可以并行、结果能够验证的任务里,更多 Agent 可以覆盖更大的搜索空间。任务存在动态依赖、共享资源或互相冲突的目标时,新增 Agent 也会增加新的交互关系和失效路径。Agent 数量是一种规模变量。协作、共识与冲突,才决定这个规模最终会形成能力,还是形成系统风险。

相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33256 202
如何保证分布式文件系统的数据一致性
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36824 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24905 16
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36825 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29950 52

热门文章

最新文章