بلاگ پر واپس جائیں

Anthropic 如何重做代码审查:让机器读更多 diff,把人的注意力留给风险

工程实践2026-10-1818 منٹ مطالعہAnthropicClaude Code代码审查Code ReviewCI软件工程AI Agent

本文以 Anthropic 工程团队于 2026 年 10 月 15 日发布的 How the Claude Code team does code review 为主要来源,作者为 Addy Osmani、Morgan Westlee Lunt 和 Qing Wang;并参考宝玉对这套实践的中英文视频介绍。原帖发表于 2026 年 10 月 17 日,包含约 10 分钟英文版和约 9 分 34 秒中文版。团队报告的吞吐、回滚和审查轮次数字是阶段性内部数据,不等于其他组织可以直接复现的结果。

Anthropic 原文封面:How the Claude Code team does code review

先说结论:代码审查的目标不是让人读完每一行

当 Agent 大量编写代码,变更数量会迅速增加,人工逐行审查很难成为唯一的质量控制手段。Anthropic 团队重新提出的问题是:这次变更可能在哪里出错,自动化还是人工最适合发现它?

因此,他们没有取消审查,而是把审查分散到变更生命周期中:作者先让代码通过可执行验证;AI 对每个 PR 做 diff 审查;安全审查和 CI 可以阻断合并;人按风险决定审批数量;合并后通过 feature flag、渐进发布、监控和回滚控制影响面。

原文报告,Claude Code 代码库在 6 月到 9 月间合并 PR 数量超过翻倍,同时需要回滚的变更占比下降超过 40%。这个结果是该团队的内部阶段性数据。更可迁移的经验是:节省人工审查时间必须同时观察回滚和事故,单看审批变少并不能证明质量没有下降。

一、代码审查有两项工作

原文把代码审查的职责分成两项:

  1. 在代码上线前发现并修复问题;
  2. 在团队成员之间建立对代码库的共同理解。

机器可以承担更多重复的 diff 阅读和常见缺陷发现,但这会影响团队成员如何学习系统。Anthropic 文中也讨论了第二项职责:成员不必把整个代码库都装进脑中,而是在需要理解某个模块时,让 Claude 针对那一部分生成解释,甚至做一个小型可视化。

这并不意味着人工理解可以省略。它意味着学习应该跟具体任务相连:准备修改某模块的人,先理解相关路径、约束和数据流;而不是把每一个低风险、低信息量的 diff 都当成知识传递的唯一方式。

二、变更生命周期中的七层防线

原文关于按需理解代码库和共享上下文的示意图

Anthropic 描述的不是单一 AI reviewer,而是一条有多层检查和回退能力的发布路径。每层会漏掉不同类型的问题,后续层继续接住一部分,最后仍可能漏网,因此需要能快速发现并撤回的机制。

层发生时间主要职责典型机制
1. 提 PR 前验证本地或 Agent 工作阶段要求提交者展示实际结果,而不只报告“已完成”测试、构建、截图对比、端到端验证;用新上下文复核 diff
2. AI 代码审查每个 PR对照 diff、仓库和 PR 意图找逻辑问题或跨模块回归Claude review;发现由其他 Agent 并行复核,再按共识、严重度和证据过滤
3. 安全审查每个 PR单独检查安全风险,并可阻止合并安全 reviewer;未解决的问题需要修复或给出关闭理由
4. 阻断式 CI合并前检查代码能否通过确定性验证lint、类型检查、测试、构建及跨平台任务
5. 按风险进行人工审批合并前把人放在方向、架构和高影响变更上低风险零审批或轻审批,中风险一人,高风险两人或指定路径 owner
6. 合并队列与渐进发布合并及发布防止多个各自通过的 PR 组合后破坏主干,控制新功能暴露范围merge queue、feature flag、内部先用、分阶段发布
7. 快速发现与回滚发布后接住前面所有层都可能漏掉的问题telemetry、on-call、incident review、关闭 flag、回滚或快速修复

层与层之间不能互相替代:AI review 不代替测试,CI 通过不代表产品方向正确,人工审批也不能替代发布后的监控。可靠性来自多层机制互相补位,并且错误发生后有清晰的撤回路径。

三、视频提出的五个问题,分别由哪一层回答

宝玉的视频把这套系统浓缩成五个实际问题。它们并不是五种独立的 AI 功能,而是关于审批边界、自动审查如何收敛、漏检后的补救、工程师如何建立理解,以及最终由谁承担责任。

问题Anthropic 实践中的回答落地时要守住的边界
哪些修改仍要人看?按变更风险分级:文档、小范围且有保护的低风险改动可减少额外审批;普通改动至少一人;账单、自动更新器、CI 等高影响路径需要更多或指定 owner 审批。不能只按 diff 大小决定风险;目录、权限、数据流、发布范围和可逆性都要纳入判断。分类器可以辅助分流,审批规则和责任人仍由团队定义。
AI 审 AI 会不会没完?会发生循环。Anthropic 报告过单个 PR 一夜超过 50 轮的情况;随后设置轮数上限、后续只看新增 diff、合并重复问题,并要求超过一定轮数时重新审视整体方案。不能用“再跑一轮”代替明确的停止条件。用通过轮数、重复 finding、误报导致的修改和等待时间判断新增一轮是否值得。
审查 AI 漏掉问题怎么办?AI review 只是多层检查之一,后面还有安全审查、阻断式 CI、按风险审批、合并队列、渐进发布、监控和回滚。历史事故与修复案例还会进入 reviewer 评测集。任何单层都可能漏检。为每层写清它能发现什么、不能发现什么,并保证发布后能观察影响、停止放量和撤回变更。
人不逐行读代码,怎么理解代码?把理解放到具体任务中:准备修改某模块的人,按需了解相关路径和约束;Claude 可以帮助解释局部代码或生成可视化。机器承担更多重复 diff 阅读,人仍需理解变更意图、验证证据和高风险设计。减少逐行阅读不等于盲目批准。批准者必须能说明验证覆盖范围、剩余不确定性,以及为何当前风险可以接受。
出问题算谁的?团队仍由变更负责人承担交付责任;Agent 的批准不能替代要求的人类审批。出错后由熟悉变更的人推动修复,并通过事故复盘找出系统哪一层应当接住它。模型可以协助写代码、审查和解释,但不是组织中的责任主体。责任需要对应具体 owner、可追踪的 commit 和可执行的回滚路径。

这五个问题合在一起,说明“让 AI 多看 diff”不是完整方案。只有风险决策、检查收敛、独立验证、上下文理解和责任归属都明确,才适合减少人工逐行审查的比例。

四、人工审批按变更风险分配

Anthropic 文中列出的内部分级大致如下:

风险级别原文举例人工审批要求
低文档、文案、仅内部可见功能、由 flag 保护的增量变更自动代码与安全检查通过后,可不要求额外人工审批
中普通产品变更,以及缓存、自动更新器、系统提示词等敏感区域一名人工 reviewer
高最高风险代码,以及明确要求双人审批的路径两名人工 reviewer

这里有几个关键约束。风险等级由变更本身决定,而不是由作者或 Agent 的自我判断决定;另一个分类器还可以判断某个具体改动是否需要额外的人。敏感路径、CI workflow 等也可以始终要求人工介入。

低审批路径只对可信作者开放。Agent 的批准不能占用需要人工审批的名额;指挥 Agent 提交代码的人仍要对变更负责。审批针对具体 commit,如果之后出现未经验证的新 commit,审批就需要重新确认。

这套规则的目标不是让机器批准高风险代码,而是把人工时间从低风险重复检查中释放出来,同时保证风险高、影响大或证据不足的变更仍有明确的人类责任人。

五、AI Reviewer 需要做精度和收敛管理

AI 审查如果只是不断增加发现数量,会把噪声和返工转嫁给提交者。Anthropic 团队描述了几种控制办法。

多 Agent 复核发现

多个 Agent 可以并行寻找问题,另一组 Agent 再对每条 finding 投票;达到足够共识后才发布。纯风格建议、泛化诊断或低价值清理会被过滤。每条评论按严重度排序,标注 Important、Nit 或 Pre-existing,避免把已有问题误算成当前 PR 引入的错误。

发现要有证据,至少指向具体文件、行和失败机制。提交者必须处理每条 finding:修复它,或在线程中说明为什么关闭。误报也需要一个简短理由,不能让未解决评论静默通过。

把真实事故加入评测集

团队把造成事故或回滚的历史 PR、对应修复和回滚交给熟悉代码的人核实,把确认过的问题加入评测集。Reviewer 的 prompt、工具或模型更新后,再在同一组案例上测试,判断改动是否真的提升了召回,且没有增加不可接受的误报。

从处理行为中衡量噪声

除了统计发现了多少问题,还要看人们如何处理评论:修复、判断为错误、确认行为是有意的,还是认为问题不重要。对于已知干净的 PR,也可以估算 reviewer 的误报率。

原文特别指出,Agent 作者会让噪声更昂贵:人可以很快忽略一个 nit,而 Agent 可能真的去改它,产生新 commit 和额外 review round。因此评估不能只看 bug recall,还要看评论是否让系统做了有害或无价值的改动。

防止 Agent 互相拉长审查循环

作者提到一条 CLI PR 曾经一夜间经历超过 50 轮审查与修复。回看 reviewer 反复提到的问题,约 59% 已经在它第一次审查时存在,后续多轮经常是在发现旧问题,而非新问题。

团队于是加入轮次上限:超过三轮后,要求作者重新考虑整体方案;早期几轮之后改为只看新增 diff;要求修复一类问题的所有实例;不重复发布已提出的问题。团队同时跟踪从第一次 review 到通过的轮次。

六、公布的指标说明了什么

原文给出一组收敛改进前后的内部 PR 指标:

指标调整前调整后
一轮审查和修复后通过65%78%
需要五轮或更多8.9%1.5%
平均通过审查轮次2.081.32

这些数字来自 Anthropic 团队内部 pull request,不是对外部团队的预测。更值得借鉴的是指标组合:除了 AI reviewer 的召回率,也要跟踪 reviewer 评论噪声、通过所需轮次、人类审批数量、PR 等待人工的时间,以及最终的回滚和事故率。

原文衡量人工审查成本时同时看审批数(中位数和 95 分位)、人工评论数和等待人工的时间,并用 reverts 与 incidents 作为护栏。如果审查时间减少但回滚、事故增加,说明成本只是从 review 转移到修复和 on-call。

七、人仍然要做的判断

Anthropic 团队把人的注意力集中在机器较难承担的工作上:

  • 要不要做这项改动:方向、取舍、范围和产品判断;
  • 高风险代码:账单、自动更新器、CI 等可能影响面大的路径;
  • 架构选择:会成为后续代码范式的设计决定;
  • 阅读验证证据:测试输出、运行命令、截图和 reviewer finding;
  • 承担交付结果:不论代码由谁输入,负责人都要对上线结果负责。

审查不再要求每个人完整阅读所有 diff,但批准者仍需要知道验证能覆盖什么、漏掉什么。如果无法说明检查的盲点,就不应该把自动结果当成充分依据。

“你合入,你负责”也不是责备机制。原文把它与小变更、可逆发布、风险匹配检查、快速发现回归联系起来。责任的含义是由最了解变更的人推动修复;事故复盘则用来找系统里哪一层应当接住问题。

八、普通团队可以怎样逐步采用

不必一次复制整套流程。可以从以下次序开始:

PR 之前

  • 给 Agent 可执行的验证方式,让它展示测试、构建或截图结果;
  • 用短的 CLAUDE.md 或等价项目说明写清技术栈、命令、约定和非目标;
  • 给敏感目录增加简短的 REVIEW.md 或路径级审查规则;
  • 用新上下文复核 diff,反复出现的意见应升级为 lint、测试或仓库规则。

每个 PR

  • 必需 CI 包含 lint、类型检查、测试和构建;
  • PR 模板要求填写验证方式、风险和撤回方案;
  • 在一个仓库先试 AI reviewer,收集误报和漏报案例,校准后再扩展;
  • 独立运行安全审查,并要求所有 reviewer thread 都有明确结论;
  • 限制自动 reviewer 反复审查的轮数,后续优先审查新增 diff。

审批与发布

  • 写出低、中、高风险的路径和例子,先保守设置审批人数量;
  • 用 CODEOWNERS 和分支保护锁定账单、认证、CI、发布流程和安装器等目录;
  • 不允许 Agent 审批代替要求的人类审批;新 commit 需要重新确认审批有效性;
  • 用 merge queue、feature flag、内部试用、分阶段发布和可操作回滚控制影响面。

持续改进

  • 把已确认的线上事故、回滚和相关修复加入 reviewer 评测集;
  • 同时观察真实缺陷召回和误报造成的返工;
  • 记录人类审批数、评论数、等待时间、review rounds、reverts 和 incidents;
  • 定期检查成本是否真正下降,而不是转移到返工和 on-call。

常见误区

误区更准确的理解
AI reviewer 通过就代表代码安全Reviewer 只是一层;安全检查、CI、风险审批和发布监控仍各有职责
人工审批少了,流程就更高效还要看回滚、事故、误报和返工,否则只是把成本移到了后面
多跑几轮一定更好多轮可能发现新问题,也可能重复旧问题;要评估收益并设置收敛规则
所有 PR 都应同样审批文档小改与发布流程、账单、认证改动的影响不同,审批级别也应不同
Agent 写的代码由 Agent 负责Agent 可以执行和解释;变更负责人仍要对上线结果负责

小结

Anthropic 这篇文章的核心,不是“把代码审查交给 AI”,而是重新安排每种检查发生的位置:作者先验证,机器广覆盖找问题,安全与 CI 负责阻断,人按风险做判断,发布系统通过渐进放量和回滚接住剩余错误。

要复制这类做法,先建立可重复验证和可逆发布,再引入 AI review;用事故案例检查 reviewer 是否有效,用噪声和审查轮次控制返工,最后才逐步减少低风险路径上的人工等待。评估目标应始终是降低每次变更消耗的总人工时间,同时不增加回滚和事故。

关于“GitHub PR 代码审查”和“本地审批 reviewer”是不同能力的说明,可继续阅读《Codex auto-review 的边界》。

来源

本文为来源整理与工作流归纳。团队报告的业务指标及其成因按原文转述,没有独立审计;实施建议是基于原文各层机制整理的通用迁移思路,不代表 Anthropic 对其他团队的保证。