AgentRoom双Agent把弃任务率从31%压到5%,协调优于并行

AgentRoom: Concurrent Multi-Agent Coding in a CRDT-Backed Shared Workspace

Seonglae Cho, Donghyun Lee

cs.AI, cs.SE

2026-08-25

在CRDT共享文件系统上加文件级认领和广播MCP工具,双Agent在匹配算力下把单Agent的1-file弃任务率从31%压到5%。并行合并比单Agent更差,质量峰值在N=2。

这篇在解决什么

多 Agent 写代码的承诺是分模块、互为备份、并行探索。落地时大多数系统还是排队:设计、实现、审查,后一个等前一个。另一路是各自写完再并文件。单 Agent 面对难任务会交一份单文件骨架就退出,论文把这种失败叫做 1-file abandonment。CodeCRDT 试过用 CRDT 隐式协调,结果是双峰:21% 加速、39% 变慢。问题变成:在匹配算力下,显式协调能不能同时打过顺序流水线和「只共享、不说话」。

方法

AgentRoom 是一间带状态的房间。底层是 pycrdt(Y.js 的 Yrs 移植)合并的共享文件系统,字符级冲突在 2 秒窗口内合并,外加括号配平检查。CRDT 保证字节不丢,不保证语义兼容:两个 Agent 在同一偏移写入互斥的函数签名,合并后两边都在,编译照样挂。

协调层通过 MCP 工具暴露:

认领是 Chubby 式劝告锁,约束写在提示层,不写进内核。有人没认领就写,字节仍被 CRDT 保住,违规会出现在房间日志里,方便同伴修 bug。提示里的六步流程是建议:读状态、认领、冲突就换文件、写、轮询、广播完成。

对照在匹配算力下铺开:Solo;Shared-only(共享 CRDT,无提示、无 MCP);Parallel-merge(独立工作区事后按时间戳并文件);ChatDev 式三阶段顺序流水线;Shared+协作提示但无 MCP。主任务是四套 Express.js/TypeScript 后端:JWT 认证、市场 API、复式记账账本、交易平台。质量分是 LLM-judge 四维加权(规格覆盖 0.35、正确性信号 0.30、代码质量 0.20、测试严谨 0.15),再用正则和 TypeScript AST 打分交叉验证。Agent 自己写 vitest,没有外部正确性套件。

结果

弃任务是判定器打的二元标签,不经过质量分。12 个模型×任务层上,Solo 40/131(31%),AgentRoom 5/94(5%),CMH 公共优势比 13.7(95% CI [3.9, 48],p < 10^{-5})。T4 上 Haiku 从 12/35 降到 1/17,Codex 从 9/17 降到 2/21,Sonnet 从 6/33 降到 0/17。预算内非失败 run 的分数标准差大约收 30–45%:T4 Sonnet 0.23→0.14,Haiku 0.25→0.17,Codex 0.27→0.15。

T4 Sonnet、600 秒、LLM-judge 的六条件排序是单调的:

条件均分n
ChatDev 三阶段顺序0.3336
Parallel-merge0.45612
Solo0.54432
Shared-only0.57511
共享+提示、无 MCP0.5887
AgentRoom0.66914

AgentRoom 比 Parallel-merge 高 0.213(Welch p=0.003)。无协调的双 Agent 会互相覆盖 server.ts,比单 Agent 更差。Agent 数在 T4 Sonnet 上 2 个最好:0.544 / 0.669 / 0.553 / 0.489 对应 N=1/2/3/4,广播量过了 3 个开始超线性涨。两个 Haiku 均分 0.662,一个 Sonnet 0.544,美元成本大约一半。Rust+axum 和 Python DevBench 方向一致,样本很小。

为什么重要

扛结果的是显式协调(文件认领 + 广播),不是多开几个 Agent,也不是 CRDT 本身。只共享文件夹而不认领,质量停在 Solo 和完整 AgentRoom 之间。N=2 是这套设置的工作点,N=3 和 N=4 线性加钱、均分往下走。Cursor、Claude Code Agent Teams、JetBrains Multi-Agent 已经在产品里做文件认领;这篇给出匹配算力下把协调层从并行和合并底座里拆出来的数字。

质量分不是执行神谕。主结果绑在 Express.js/TypeScript 上。

局限与存疑

单格 n 大约 7–35,Gemini 只有 5+5。ChatDev 对照在丢掉 7 次编排器崩溃后只剩 6 次真实 run。MCP-chat 对 CRDT-state 的对照是 2 对 7。拆开 CRDT 和 MCP 的探测在 n=7 时区间穿过零,只能报排序,不能报百分比贡献。任务没有外部测试套件,vitest 由 Agent 自己写。Rust 和 Python 是机制可迁移的点测,不是跨运行时幅度。托管模型无法逐比特复现。GPT-5.4-mini 在并发 MCP 下崩溃,被排除在所有格子之外。

术语

原文与代码

相关论文

全部论文解读