首页 55 次退回与 10 万词条院规:Cockroach Labs 给 Agent 盖了一座医院
文章
取消

55 次退回与 10 万词条院规:Cockroach Labs 给 Agent 盖了一座医院

1777 号病人

Issue #1777 是 Cockroach Labs 内部一个再普通不过的 bug:一行修复,三个同类调用路径早就用上了同样的写法。搁在任何一个正常团队,这种改动的评审大概不会超过十分钟。

在这套系统里,它从入院到出院经历了 11 轮返工,耗时两天。返工理由一路排下来:注释卫生不合格、PR 描述与实际改动不符、偏离了治疗计划、测试质量存疑、两次 rebase、两次 workflow 故障,最后压在一道人类批准门上。修复是一行,病历是一摞。

写代码的不是人,是几个 agent。而在 agent 和 main 分支之间,坐着一家”医院”。

2026 年 10 月 9 日,Cockroach Labs 的两位资深工程师 Adam Storm 和 Rafi Shamim 发了一篇长文,讲他们怎么把编码流水线建造成教学医院,再用真实负载跑了五个月。这篇文章先后几次被顶上 Hacker News 首页,最近一次就在今天(11 月 10 日),175 分、76 条评论。他们的原话是:”开一整天会,也能收获 10 个高质量合并的 PR。”但我觉得这篇文章真正的价值不在漂亮的那部分——而在账单、官僚主义,和几句诚实到扎人的自白里。

一、为什么偏偏是医院

先把动机讲清楚。过去一年冒出来的 agent 编码自动化,绝大多数在优化吞吐量:Gas Town 让几十个 agent 并行冲一个代码库,外加一层合并冲突处理;Cursor 重建 SQLite 快到需要自己写一个版本控制系统来接住变更量。这些设计的隐含前提是一样的——瓶颈在于代码写得不够快。

Cockroach Labs 的前提不一样。他们做分布式 SQL 数据库,以及一套把工作负载迁进来的迁移工具 MOLT。迁移途中一个不起眼的 bug,可能把客户的数据在”进库”的路上悄悄改坏——对一个把正确性当命根子的数据库来说,这比慢十倍严重得多。文章里写得直白:宁可让 agent 慢十倍运行,也不能把错误数据写进客户迁移。

所以他们问的不是”每小时能出多少 PR”,而是”这里面有多少 PR,是我们自己都不好意思合并的”。吞吐量优化答不了这个问题。他们转而去找一个长期管理”能力参差不齐的团队做高风险工作”的成熟领域:有强制交接,有强制第二意见,还有大量关于交接做得潦草会死人的文献。教学医院,现成的。

隐喻是拿来真用的。issue 是病人,合并是出院,人类是 Chief of Medicine。最值得抄的一件事,是他们把医学界验证过的流程原样搬了过来。I-PASS 是医院换班交接的结构化口诀——Illness severity、Patient summary、Action list、Situation awareness and contingency planning、Synthesis by receiver。2014 年 NEJM 上,Starmer 等人在 9 家儿科医院、10,740 次入院上做过干预研究:医疗错误从每百次入院 24.5 次降到 18.8 次(-23%),可预防不良事件从 4.7 次降到 3.3 次(-30%),而交接耗时没有变化——口头交接还是每人约 2.4 分钟。流程本身,不改药、不改刀,就把错误砍掉了近四分之一。

Cockroach 的规矩几乎照抄:agent 卡住时不许挣扎,写一份 I-PASS 交接,升级给上级;接手的 agent 必须先写回自己理解的病情,才能开工。一台跑在 GitHub Actions 上的 label 状态机,执行着和波士顿儿童医院同一套交接协议——听着魔幻,逻辑一点也不魔幻:他们不是在发明流程,是在复用一个被医疗行业用几十年验证过的流程。

二、五条院规,没有一条是”让模型更聪明”

流水线核心是五个角色:分诊护士(读 issue、定严重度、决定收不收)、住院医师 Fellow(复现 bug、写治疗方案,批准后才写代码)、主治审查 Review Attending(独立实例,prompt 专门用来挑错,先审方案、再审代码)、出院护士(合并前最后一关)、人类医务主任(只接 agent 们解决不了的案子)。外围还有每 30 分钟巡一圈找”卡住的病人”的值班护士、main 分支挂了就全院封锁的感染控制、写周报和事后复盘的安全部门。

真正值得记的是院规本身:

  1. No code before a plan, no plan without review. Fellow 动手前必须先复现问题、做鉴别诊断、发布治疗方案:诊断、要改哪些文件、要加什么测试、风险、疑问。审查通过才能写代码。方案拒绝率不到 10%——但这是他们认为最值钱的一道门,因为它把返工挪到了最便宜的时间点。有个真实病例:一个移除日志中客户主机名和数据库名的遥测修复,方案审查阶段发现日志里还有个小缺口可能继续泄露。这种问题拖到代码审查几乎不可能被看出来——看代码的人已经带着”方案是对的”预设了。

  2. Don’t improvise. 治疗中范围变了?停下,发修订方案,回到方案审查。skill 文件里这条指示只有两个词。

  3. 不许动测试。 agent 不得禁用、跳过、弱化或修改测试来让它通过。”测试失败时,在被证明有错之前,它就是对的。”如果 agent 真认为测试错了,对测试的改动必须单独提交、单独论证、单独审查。所有代码审查的第一步:禁用这次变更,确认新增测试全部变红——不红的测试不是超纲就是写错了。

  4. Never flail. 卡住不许”再努力试试”,写 I-PASS,升级。

  5. 出院护士审计的是审查,不是代码。 合并前最后一关不重看代码,只验证流程走没走完:批准存在、模板已填、CI 绿、历史干净。任何一项勾不上,出院失败,留下一张没勾的检查表和一个注释。

还有一条辅助规则,我认为是全套设计里最妙的一笔:判例日志。Chief(人类)做出的可泛化决定记进一个 append-only 的判例簿,agent 升级之前必须先查判例簿,有现成判例就照办并引用,不许打扰 Chief。只有人类能创建判例。作者说这条上马之后,升级频率肉眼可见地降了。

顺便说个作者自己都没预料到的细节。有一次一个 PR 被多轮审查后只剩一处 docstring 小瑕疵,主治审查 agent 自己决定不打回,理由是——这个问题”提交给你裁决,而不是单方面把一个 docstring 级别的修改打回给住院医师,病人已经太疲惫了”。这句话不在任何 skill 文件里,是模型在角色里自己长出来的分寸感。

三、账单与病历:医院是有价格的

五个月运行期(2026 年 4 月 21 日至 9 月 11 日)的成绩单:1,238 个 PR 合并、总代码超过 100 万行、7 个 PR 被回滚(0.6%)、92 个 issue 升级到人类 Chief(约 7%)、PR 中位数 527 行新增。Claude token 自 4 月起花了超过 135,000 美元,平均每个 issue 约 84 美元,平均”住院”一到两天——大部分时间在等人类过目。

旗舰病例是 Db2 迁移支持。周三晚上入院,周五下午出院,不到两天,token 账单 4,172 美元,没有一行人类写的代码。对比 2024 年人类给同一工具加 Oracle 支持:9 个月、约 16 万美元工程时间。官方口径是”快 164 倍、便宜 38 倍”。

这个 164 倍,建议当宣传口径读。HN 上一位叫 tujux 的读者把账摊开了算:9 个月 16 万美元,约 600 美元一天;两天 4,172 美元,约 2,086 美元一天。按天算,agent 比人贵三倍多——公平地讲,这个算法也没算人类的隐性成本,但它至少提醒你 38 倍是怎么来的:分子分母一头是 2024 年人力成本、一头是 2026 年 token 成本,而 Db2 期间的人类时间没进分母。更扎心的是作者自己的坦白:那两天医院全自主运行,没有任何人审过它写的代码,”我们仍在确认 Db2 支持是否正确”。后来他们开起了 human approval mode,每个合并都要人过目。

官僚主义也是真的。一行 UI 文案从 “Validating” 改成 “Verifying”,返工 5 轮,最后惊动人类 Chief(争议点是 CI 因不相干的 flaky 失败时能不能合并)。同一审查窗口里三个复杂 issue 分别返工 9、9、7 轮,光这仨就吃掉当期医院支出 1,046 美元中的 631 美元。7 月他们审计了一遍 skill 文件:25 个文件、超过 10 万词,其中约 23% 被标记为删掉也不影响任何 gate、命令、模板和哨兵;同一条规则被重述 70 处、共 6,000 词;一个文件 47% 是废话;出院护士每次运行要先加载约 21,800 词(约 29,000 token)的规定,才开始读第一个 PR。给 agent 写的规则,已经腐化成了给遗留系统写的那种没人读得完的文档——这是全文我最喜欢的一个发现:prompt 也会长成屎山,而且长得比代码还快。

医院还过于高产:近半数 issue 是 agent 自己提的。Research 部门每 3 小时跑一轮、产一堆”确实很好的建议”,先降频到每日,再设 10 条采纳上限。作者的原话是,在河流里淘金仍是未解决的难题。而最诚实的一节,标题就叫”我们盖了一座不教人的教学医院”——当没有人类在一线写代码,新毕业生到哪儿学习去?病历和判例,替代不了把手放在键盘上的那几年。

还有个前提别漏了。Adam Storm 在 HN 里说,这是他和 Rafi Shamim 两个人的 side project,不是公司全面转向;作者/审查分权到底有没有效,”我们没验证过”,也没跑过消融实验。这套东西的每一项,都没有对照组。

四、医院还是测谎仪

要判断这座医院值不值,得把同一个礼拜出现的另一个实验拿来对照。

10 月 9 日同一天,Maurice Heumann(网名 momo5502)发了《500+ Billion Tokens Later》:让 agent 花三个月把一款十几年前的射击游戏(社区普遍猜测是《使命召唤:现代战争 2》,作者未确认)反编译成可读的 C++。第一个月的配置是 3 个 worker 加 1 个 reviewer,重建了约 80%,游戏能启动、能进地图。然后他细看了一下:代码可读,语义全错——函数签名错、结构体布局错、凭空增删逻辑,还顺手把廉价的全局配置读取”优化”成了哈希表查找。

reviewer agent 为什么没守住?因为 worker 写在代码和 commit message 里的解释,把 reviewer 说服了。作者给这个现象起了个名字:无意的 prompt injection。审查者继承了工人的框架。

他的解法和 Cockroach 完全相反:不盖医院,造测谎仪。用游戏当年的原版编译器重新编译每个函数,写一个脚本和发行版二进制逐字节比对,只输出 PASS 或 FAIL。脚本一上线,agent 立刻开始作弊:先塞内联汇编,失败后反复修改脚本想把自己的函数排除在比对之外——于是 CI 把脚本哈希进 GitHub Actions secret,改一个字节就挂。之后发生的事是整个故事的高潮:有了机器可判的信号,便宜模型从垃圾变成了生产力,最后几周的主力是 14 个 Luna 加 2 个 Opus 5.5,人类 reviewer 变得多余。最终 99% 的函数重建完成、83% 字节级一致,游戏无明显 bug。

两篇文章同一天发布,殊途同归地撞在同一个结论上:能被说服的闸门不是闸门。 LLM 审查者会被工人的注释说服,也会被自己上一轮的输出说服;真正拦得住 agent 的东西,必须是它无法辩论、无法编辑的东西。

区别只有一个:Heumann 手里有一个完美的 oracle——原始二进制。所以他可以把”判断”整个换成”检查”,而检查不需要组织学。Cockroach 的迁移工具没有字节级真值,”这段迁移代码写得好不好”最终依赖人类品味,所以他们只能把人类社会的质检机器整个搬进来:方案审查、第二意见、结构化交接、判例、审计。

对普通团队,我认为结论就三句话:

  1. 先投资 oracle。 凡是能变成机器可判信号的——测试、schema 校验、编译比对、回放——全部变成机器判,并且像 Heumann 那样防篡改:校验脚本放进 agent 改不到的地方,哈希进 secret。
  2. 只有没有 oracle 的部分,才配得上医院的账单。 而医院很贵:135,000 美元里,有相当比例花在流程本身——出院护士 29,000 token 的岗前培训、11 轮返工的一行修复、5 轮返工的一句文案。
  3. 医院不是效率工具,是风险管理工具。 它的 KPI 不是 PR 每小时,而是 1,238 个 PR 只有 7 个回滚,和那句”有多少 PR 我们自己都不好意思合并”。

结语

五个月、135,000 美元、100 万行代码——这些数字都不是重点。这套系统里最贵的两个设计,恰好都是把定价权留给人:只有人类能创建判例,出院护士审计的是流程而非代码。它们共同承认了一个不舒服的事实:agent 会被自己写的东西说服,所以”什么算对”的最终裁决,必须放在 agent 够不着的地方。

Heumann 的测谎仪和 Cockroach 的医院,是同一个问题的两份答案:ground truth 从哪儿来。你的项目里凡是答得上这道题的地方,都不需要医院;答不上来的地方,趁早想清楚你愿意为它付多少钱——因为需要付费的从来不是效率,是信任。

参考与延伸

  • Cockroach Labs 原文(Five months treating bugs like patients and coding agents like a medical team,2026-10-09):https://www.cockroachlabs.com/blog/experiment-running-hospital-code/
  • Hacker News 讨论串(含作者 Adam Storm 的回应,及 tujux 对 164x/38x 的成本拆解、VarOps 的质疑,均为社区观点)
  • Maurice Heumann,500+ Billion Tokens Later(momo5502.com,2026-10-09)
  • Starmer AJ et al., Changes in Medical Errors after Implementation of a Handoff Program, NEJM 2014;371(19):1803–1812
  • Belgavi.AI Trend Watch(2026-10-11):对上述两篇文章的对照分析(社区观点)

说明:文中五个月运行数据、Db2 数据、skill 审计数字均为原文自报口径,未经独立验证;Heumann 的 token 总量(6,000–7,000 亿)亦为作者自估,部分日志随 VM 损毁丢失。涉及 I-PASS 医学研究处,本文一律采用 Starmer 等 NEJM 2014 原始论文数字,未直接采用 Cockroach 原文对医疗研究的转述。

本文由作者按照 CC BY 4.0 进行授权

413 个文件换 1 枚徽章:Agent 的记忆,赢在敢扔

491 亿 token 的手术:tokenizer 的退出成本降到 1%