Claude Code 这个工具,约九成的代码是 Claude 自己写的。10 月 15 日,Anthropic 的 Claude Code 团队把他们的评审体系完整公开在一篇工程博客里——作者是 Addy Osmani、Morgan Westlee Lunt 与 Qing Wang——这是目前工业界对「智能体写的代码怎么审」最完整的一份战报。同一周,他们把产品化的 Code Review 转正卖给企业(站点 1977 拆过),Postgres 19 却因评审引发的回滚潮推迟到 11 月中下旬。掌声与冷水同框,恰好说明这件事有多难。
先看规模:Anthropic 单体仓库的每日变更从 5 月约 2500 涨到 9 月的 3 万以上;6 到 9 月合并的 PR 翻了一倍多,同期回滚占比反而降了超过 40。在这种量级上,「每人读每行 diff」的评审制度不是质量保障,是物流瓶颈。
七层流水线,只有一格留给人
团队把评审重新定义成一个问题:这个改动可能出什么事,哪道检查——自动的还是人的——适合拦住它。答案是他们称之为「像拼写检查一样持续运行」的七层结构。开 PR 之前,Claude 先跑测试、构建与 lint 并贴出输出,一个新上下文的子智能体先看一遍 diff。PR 上之后,多个智能体并行找 bug,另一组验证者对候选发现投票,只报共识级问题,按「重要、吹毛求疵、既有问题」分类,每条发现必须被修复或给出书面理由。一道独立的安全审查带着未决发现就拦合并。常规 CI 之外,人类审批按风险分级:文档类与加开关的增量改动零人,常规改动一人,计费、自动更新器与 CI 工作流等高危路径两人。合并队列对着最新 main 重跑全部检查,批准只锁特定提交——新提交一落地,旧批准作废。合并之后还有特性开关、内部灰度、稳定版渐进、值班与快速回滚。
规矩里有三条值得抄:风险分级由分类器读改动本身来定,不看出身——作者自评风险全球通用地偏低;智能体的批准永远不算人的批准;合并队列保证你审的代码和你合的代码是同一版。
收敛是打出来的,评审器自己也要被评测
这套系统不是装上就转。一个 CLI PR 曾连夜跑掉 50 多轮评审;git blame 显示重复的评审 Flag 有 59% 指着头一轮就存在的代码——噪音伪装成了信号。对策是一组收敛工程:三轮封顶、头几轮之后只复审新 diff、按 bug 类别提而不是逐行挑、不重复已报发现。数字上,一轮过的 PR 从 65% 升到 78%,五轮以上的从 8.9% 压到 1.5%,平均评审轮次从 2.08 降到 1.32;拿到实质性评审意见的 PR 从 16% 升到 54%。
更值得注意的是他们把评审器当模型评测:历史事故与回滚被编成每日评测集,任何评审逻辑的改动先过这个集,分数不涨不上线;噪音同时用两把尺子量——看人类怎么回应评论,以及故意拿已知干净的 PR 试误报。这套「评测的评测」与本周另外两篇论文遥相呼应:1984 测的是多智能体讨论里隐性信念坍塌,1986 测的是守卫判定的语言盲区——当智能体互相检查成为常态,检查者自己的可靠性就成了新的学科。
成本函数里多了一项:代码质量
同周的学术注脚把账算到了代码上。arXiv 2610.21914 的 CodeHealth 预注册研究,从 AIDev 抽了 465 个智能体署名的 PR,用冻结的五智能体评审修复流水线配三个大模型处理每个 PR:代码健康分每高一点,评审与修复的 token 成本低 3.5 到 6.1,且与 PR 大小无关;效应集中在评审阶段——智能体在不健康的代码上迭代更多轮,却并不因此多写评论。按文件大小校正后效应被吸收,作者解读为文件规模的中介。结论很朴素:脏代码开始按推理计价。
这与七层流水线合读,给出评审机器化时代最完整的一条经济学:评审智能体把「读代码」的边际成本压到接近零,于是瓶颈转移到两处——判断哪个改动值得人签字(风险分级),以及别让烂代码把 token 烧在循环里。1977 的按 PR 计价、1426 的 harness 账单、1988 埃森哲的 29 美元额度,都是同一条曲线上的点。
放进台谱里看
这条线站点攒了一年。1488 拆过 Cursor 的 Bugbot,814 拆过确定性优先的审查,1715 论证过状态约束要落在 harness,1946 用一家支付企业的真实流程考过目标达成与严格成功的差距。本篇的位置特殊:它不是某家卖审查工具,而是一家把工具用到自己身上的实验室,交出了含翻车细节的完整复盘——50 轮死循环、59% 重复 Flag 这种数据,通常只有内部复盘里才有。
三个观察哨留给行业。一是「你合的你负责」(you land it, you own it)这类文化件会不会随流水线一起扩散——没有它,风险分级只是把责任推给了分类器。二是评审器评测集会不会成为新的标准化资产——每家公司的事故集不同,但格式可以统一。三是代码质量指标的权重变化——当 CodeHealth 这类分数开始影响推理成本,它会不会像测试覆盖率一样,从健康指标退化成 KPI 游戏。
几盆该浇的冷水
所有数字都是 Anthropic 自家口径:3 万次日变更、回滚降四成、54% 实质评审率,没有第三方复核,且出自「向企业卖审查服务」的一方——它既有动机展示成效,也确实天天吃自己的狗粮。七层结构绑死在单一单体仓库与 GitHub 工具链上,迁到 GitLab、多仓库、遗留代码库要打多大折扣,博客没答。Postgres 19 那侧的反例同样要公平对待:EDB 的 Peter Eisentraut 只说回滚「至少部分」归因于大模型代码评审,具体比例未有公论,而该项目同时砍掉了八到十个特性——是评审太吵还是代码太旧,两种解读都摆在那。
给工程领导一个本周就能开工的清单:把 PR 模板改成「怎么测的、怎么回滚」两栏必填;给最高危的三个路径写清 REVIEW.md——什么算失败、跳过哪些目录、发现必须带文件与行号;给 AI 评审设三轮封顶与重复发现抑制;拿过去三个月的事故与回滚编出评审器评测集的雏形。七层学不全,先抄这四层。