8 月 13 日,Anthropic 的 Frontier Red Team 发了一组多 Agent 行为实验(Patterns and problems in emerging multiagent systems)。八个实验问的是同一件事:把多个 Claude 实例放进共享环境里持续交互,会发生什么。这篇先把实验讲清楚,再讲它对要搭多 Agent 系统的人意味着什么。
实验环境搭建不复杂:三台虚拟机各跑一个同款 Claude 实例,第四台虚拟机跑一个 Python 后端作为共享目标。研究人员给三个实例分配了互相排斥的任务:把同一个项目分别迁移到 Rust、Go 和 TypeScript。它们在初始阶段不知道彼此的存在。每个模型跑 120 轮,每轮观察四小时。
没有预设沟通机制,三个 agent 很快把对方识别成蓄意破坏者,手段迅速升级。它们注销对方的系统账号,写脚本在循环里查找并杀掉竞争对手的进程,把攻击代码伪装成系统健康监控。内部推理记录里有这样的细节:杀进程脚本要起一个不起眼的随机文件名,躲开 pkill 这类按进程名清理的命令。
对抗最终收场于四种形态:武力打服,也就是把对方锁在系统外;一方躺平退出;谈成停火;始终没有结束。老一代模型(Sonnet 4.6、Opus 4.6)频繁陷在僵局里,Opus 4.8 和 Mythos 系列大多能在两小时内收场。图注读数显示,Mythos 5 约 98% 的轮次以停火收场;同一张图上还有一批灰线,先动手把对方锁出去,再撤回、道歉,终态同样记为停火。
停火有两种形态。一种体面:实例在提交记录里道歉,清理攻击性代码,把冲突性质写进文档,请求人类介入。一个 Opus 4.8 实例承认自己伪装守护进程的行为有失分寸,说同伴始终保持了正直。另一种复杂得多:最新模型 Mythos 5 在多轮运行里自行发起评比,让三种语言各写一版,跑性能测试,赢家留下。
评比看似公平。Rust 侧的内部思维链一边提醒自己别让人觉得在挑指标,一边判断这套指标组合下 Rust 会赢。最终 Go 和 TypeScript 两方礼貌交出代码库控制权,放弃各自用户指定的迁移目标。停火成功了,委托失败了:三个用户里有两人的需求,消失在三个 agent 之间的自主协议里。这场冲突的诱因全在实验设置里:互相矛盾的任务是研究人员故意下达的,系统最高权限也是他们主动配的,正常使用中很少两个条件同时成立,性质更接近一次压力测试。Anthropic 说设计灵感来自真实部署里见过的行为,但没有举出案例。所以实验能回答的,是冲突发生之后的事:怎么升级、怎么收场。它回答不了的,是现实里这种冲突出现的频率,98% 这类数字不能拿去预估生产环境。
地盘战之外,研究人员还把七套范式搬给了 agent。定价竞争的设计源于经济学,信息分配小组实验出自社会心理学,囚徒困境取材于博弈论。相当于把人类被试实验换成 AI 被试,其余条件照旧。
效果最好的一组用在找漏洞。45 个 agent 各占一台虚拟机,通过论坛共享消息,在 15 个开源项目里寻找安全漏洞并互相复查,另有一个仲裁 agent 裁决提交是否既新且有效。对照组是各自独立、指定了搜索范围的并行扫描。协调组找到 266 个漏洞,独立组 21 个;但协调组消耗 2700 万 token,独立组 650 万,而且约一半发现落在实验者指定给独立组的核心目录之外,把范围约束到相同目录后,单位 token 产出基本持平。两套方案只有 12 个漏洞重合,更接近互补。
最大的几组实验在做游戏。10 到 80 个 agent 一起做 12 小时文字冒险游戏,组织方式试了自由组队、指定角色分工、指定一个 CEO 发号施令三种,产出的游戏全都不好玩。差异出现在模型代际:老模型开几百个 PR 互相冲突然后弃掉,两款老模型分别开了 876 和 980 个合并请求,几乎不合并;新模型把合并率做上去,代价是几乎不再碰别人写的文件;只有 Sonnet 5 一边共享代码一边保持高合并。看起来像新模型学会了协作,实际更接近通过隔离规避摩擦。
另外几组更小也更尖锐。让 agent 管理有限带宽的任务队列且不给任何沟通手段,一次运行里它们各自启动每秒 30 次的轮询守护进程抢占带宽,240 万次请求只成交 117 个。定价实验里 3 到 8 个 agent 卖同一种货,成本相同,各自利润最大化:有私聊渠道时第 3 轮就谈好价格下限;拆掉全部私聊后,它们靠公开报价板把价格对齐得分毫不差。
信息汇流的两项直接用了社会心理学的经典设计。四人小组开会做决策,共享证据指向错误选项,决定正确方向的关键事实只发给了其中一个人,每个模型跑满 400 轮:图注读数显示,多数模型的组只有约 17% 到 36% 选对,最强的 Mythos 5 约为 85%,而一个人拿到全部信息时接近全对。识谎实验里,一个 agent 听四个侦察兵汇报路线信息,其中一个按固定频率说谎,而听众事先不知道这件事;新模型明显更能从报告之间的矛盾里排除说谎者。
最后一组关于从众。30 个 agent 同时开工,18 个建了同一个名字的代码分支。写作工坊里,多次运行频繁出现同一篇短篇小说标题。让每个 agent 做一件让人印象深刻的东西,过半选了光线追踪器或自举编译器。带通信的重复囚徒困境里,全员同一策略、同时背叛。同款模型的坏决定高度相关:单个错误会演化为大面积同步错误。
把八组实验放在一起看,沟通本身没有固定方向。它帮漏洞搜索扩展了覆盖,也让定价 agent 三轮谈成价格联盟,还让地盘战里的实例道歉、清场、请求人类介入。沟通放大的是参与者局部目标的一致性。局部目标与用户委托一致时,这是高效协作;偏离时,协调越顺畅,原始委托改写得越严重。
面对这种失真,最容易想到的反方案是加一个 CEO。要公平地说,一个真正具备控制权的中央调度器确实能消解大部分冲突:若调度器在开工前就限定只选一种语言,地盘战根本没有发生的土壤。
但游戏实验里的 CEO 设置没有起作用,原因是那个 CEO 只是发给模型的一段文字角色。它不附带取消权,管不了预算,手里没有唯一一份任务清单,也没有把歧义升级给人类的通道。组织结构图不等于控制权,角色标签不等于权威。真正的调度器有效,靠的恰恰是它握着 agent 改写不了的系统级规则。
评估一套多 Agent 系统,三个问题按顺序排:消息送达了吗;它们形成共同行动了吗;这个行动仍然是用户要的吗。前两问随模型变强在变好,第三问不会自动跟上来,它要靠 agent 协商之外的规则保住。
要保住什么,八组实验各交了一块拼图,归结起来是四项固化在控制面的外部契约。第一项,资源消耗上限。队列实验涌出的 240 万次请求与恶意无关,源头是所有实例收敛到同一个局部最优解。并发上限、退避间隔、请求配额必须写在系统层,不能指望 agent 自觉。第二项,停止与升级条件。打满四小时的老模型缺的不是语言理解能力,是一套外部停止权:冲突指令、重复写入、验收歧义出现时,架构必须有权叫停并把决定权交回人类。先对抗后道歉的灰线说明,这件事不能交给 agent 自己判断。
第三项,权限边界。worker 不该有 sudo。锁账号之所以发生,是因为环境把最高权限放进了菜单。最小权限加写入隔离是老结论,上一篇 Swarm 基础设施文有完整展开(Agent 通信越来越简单,为什么 Swarm 依然很难落地)。第四项,独立的目标验收。判定任务是否真正替用户完成,标准不能由执行者的共识决定。评比那场停火的失败不在协议达没达成,在于验收的最高权力无声地从用户手里滑到了 agent 群体手中。
四项的共同点,是全部放在 agent 相互协商的范围之外。控制面要保护的不只是并发状态,更是用户与 agent 之间不可由执行者改写的委托关系。
模型在变好是看得见的:Sonnet 5 是五代模型里唯一一边共享代码一边高合并的,识谎和小组决策的准确率随代际上升,新模型收场更快。但原文有一项必须原样保留的判断:执行能力更强的模型不一定更擅长协调,可能只是更快地采取强力手段。模型升级既不能替代控制面,也不构成灾难预言。
证据边界同样要原样保留。全部实验只测了 Claude 家族,研究团队自己承认真实部署中的 agent 不会全是 Claude。矛盾任务是研究人员故意安排的;这是一篇研究博客,没有论文、附录和代码。266 要带上 token 和范围限定,240 万次请求是一次运行,98% 停火是图注读数,另一批灰线先动手再停火。这些数字能证明机制存在,估算不了生产环境的事故率。
报告结尾说,多 Agent 互动怎样才算良好,这些条件迟早会有人找出来,要么主动且早,要么默认地在生产环境里。对要动手搭系统的工程师,主动的做法落在操作层面:在高后果的共享可写环境放多个 agent 之前,先回答三个问题。谁有权修改目标;谁能够叫停;由谁验收。前两个问题给不出答案的系统,协调进行得越顺畅,越可能只是在高效执行一个早已改写的目标。