随着 AI 编程代理大量参与开发,代码审查面对的最大问题已经从“如何审查一份代码”变成了“如何在代码数量快速增长时,合理分配有限的人类注意力”。
Claude Code 团队在官方博客中分享了他们的实践:不取消代码审查,而是把大部分机械性检查交给机器,把人类时间留给架构、风险和产品方向等更需要判断力的问题。
本文是对原文的中文整理与总结,并非官方翻译。原文:How the Claude Code team does code review。
一、代码审查的目标需要重新定义
传统流程通常是:开发者写完代码、提交 PR、等待同事逐行检查。但当 AI 代理能够快速生成大量代码时,人工逐行阅读很难继续作为唯一审查方式。
Claude Code 团队认为,代码审查主要承担两项职责:
- 在代码上线前发现问题;
- 帮助团队建立对代码库的共同理解。
其中,第一项可以大量交给自动化系统完成;第二项则不一定要通过阅读每一份普通 diff 来实现。对于需要理解某个模块的工程师,让 Claude 针对目标模块生成解释或可视化,往往比阅读大量低风险改动更有效。
团队的目标不是“每行代码都必须由人看过”,而是回答:
这次改动可能出什么问题?哪个检查层最适合发现它?
二、数据说明:代码增长,但回滚率下降
文章提到,Claude Code 团队在 2026 年 6 月到 9 月期间,合并到 Claude Code 代码库的 PR 数量增长超过一倍,但需要回滚的改动比例下降了超过 40%。
Anthropic 内部主仓库每天落地的改动,也从 5 月的大约 2,500 个增长到 9 月的 30,000 个以上。
这说明高吞吐开发并不必然意味着质量下降,前提是审查流程、自动化验证和回滚机制能够一起升级。
三、一份改动要经过多层检查
Claude Code 团队采用的是“多层防线”,而不是单一的人工审批门禁。
1. 在创建 PR 之前完成验证
开发者会先给 Claude 提供可以实际运行的验证手段,例如:
- 测试命令;
- 构建命令;
- 截图或界面比对;
- 端到端行为检查;
- 针对特定领域的内部技能。
要求代理展示实际执行结果,而不是只口头说明“已经完成”。完成初步实现后,再使用一个具有新上下文的子代理重新检查 diff,避免作者代理只按照自己的思路确认结果。
重复出现的问题,则应该沉淀到源头:
- 写入
CLAUDE.md; - 增加 lint 规则;
- 增加自动化测试;
- 更新项目技能或检查脚本;
- 用
REVIEW.md记录代码所有者最关心的风险。
2. 每个 PR 都进行 AI 代码审查
每个 PR 都会先经过 Claude 审查。审查不只看 diff,还会结合整个代码库和 PR 的目标,判断:
- 这次改动是否真正解决了问题;
- 是否符合现有系统设计;
- 是否破坏了其他功能;
- 修复是否触及根因;
- 是否引入了安全问题。
审查结果还会经过其他代理复核,只有多个检查者认为问题真实存在时,才会提交给开发者。这样可以减少风格建议、无关清理和误报。
3. 安全审查单独运行
安全审查与普通 bug 审查分开进行,而且可以阻塞合并。
当普通审查或安全审查仍有未解决的问题时,PR 不能合并。开发者必须修复问题,或者明确说明原因并关闭对应讨论。
这类检查尤其适合覆盖:
- 权限变更;
- 自动更新器;
- CI 工作流;
- 系统提示词;
- 凭据处理;
- 网络和数据访问。
4. CI 检查继续发挥作用
lint、类型检查、多平台测试和构建仍然是基础门槛。AI 审查不能替代确定性的自动化检查。
PR 模板还应要求说明:
- 做了哪些测试;
- 这次变更的风险是什么;
- 出问题后如何回滚。
5. 根据风险决定人工审批数量
不是所有改动都需要相同程度的人工审查。团队按改动风险分级:
| 风险等级 | 典型改动 | 人工审批 |
|---|---|---|
| 低 | 文档、文案、内部功能、特性开关后的增量改动 | 自动检查通过后可不要求额外审批 |
| 中 | 普通产品功能、缓存、自动更新器、系统提示词 | 至少 1 人 |
| 高 | 高风险代码、CI 工作流、关键路径 | 至少 2 人 |
审批数量由改动内容决定,而不是由提交者身份决定。代理的批准不能替代必须由人完成的审批。
6. 合并队列、灰度发布和快速回滚
合并队列会在最新主分支上重新运行检查,避免两个分别通过测试的 PR 合并后产生组合问题。
新功能通常先通过特性开关向内部员工开放,再逐步推向用户。发布渠道也采用渐进策略,让新版本先进入较快的渠道,稳定版本稍后跟进。
如果问题最终仍然漏过前面的检查,就依靠监控、值班响应、特性开关和一键回滚快速止损。
四、如何减少 AI 审查中的重复和噪声
AI 作者和 AI 审查者可能互相推动,导致一份 PR 不断修改、不断重新审查。Claude Code 团队发现,某些 PR 甚至经历了几十轮审查。
为避免审查失控,他们采用了几项措施:
- 限制审查轮数,超过三轮就重新考虑整体方案;
- 首轮之后主要只审查新增 diff;
- 同类问题一次性修复,而不是逐行修补;
- 不重复报告已经解决的问题;
- 每晚对已有代码进行审查,提前发现历史问题。
此外,团队会把过去造成事故或回滚的 PR 收集成评测集,每次修改审查器后都重新测试。这样,真实事故会反过来改善下一轮自动审查。
五、人类应该把时间用在哪里
AI 负责大量重复性审查后,人类并不是退出流程,而是把注意力集中到更高价值的判断上:
- 这个功能是否值得构建;
- 产品方向和范围是否正确;
- 架构是否会成为未来的坏范例;
- 高风险代码是否需要额外审批;
- 自动化检查的证据是否可信;
- 发生问题后谁负责修复和恢复。
团队强调“谁推动改动落地,谁就对结果负责”。无论代码是人写的还是代理写的,最终让它进入生产环境的人都需要承担结果责任。
六、普通团队如何借鉴
不需要一次性复制完整体系,可以从一个仓库开始逐步实施:
提交 PR 前
- 在
CLAUDE.md中写清楚项目结构、验证命令和边界; - 给代理提供可以实际运行的测试、构建和截图检查;
- 使用新上下文的子代理检查 diff;
- 建立简短的
REVIEW.md,记录真实的高频问题; - 将重复出现的意见转化为 lint 规则或自动化测试。
PR 阶段
- 为每个 PR 接入 AI 审查;
- 单独增加安全审查;
- 要求所有审查线程都得到处理;
- 在 PR 模板中记录测试、风险和回滚方式;
- 先从低风险仓库或低风险路径开始试运行。
合并和发布阶段
- 对 CI、认证、计费、安装器和自动更新器设置强制人工审批;
- 使用 CODEOWNERS 和分支保护;
- 使用合并队列;
- 新功能优先通过特性开关灰度发布;
- 将事故和回滚案例加入持续评测;
- 用回滚率和事故率衡量自动化是否真的提升了效率。
七、总结
Claude Code 团队的核心经验不是“让 AI 代替人类审查所有代码”,而是重新安排不同类型检查的职责:
- 机器负责高频、确定性和重复性的检查;
- AI 负责理解上下文、发现潜在缺陷和辅助修复;
- 人类负责方向、架构、风险和最终责任;
- 发布系统负责灰度、监控和快速回滚。
在 AI 生成代码越来越多的情况下,最重要的指标也不应只是“人工审批了多少次”,而应该关注:
- 真实问题是否被提前发现;
- 回滚率和事故率是否上升;
- 人类审查时间是否下降;
- 自动化检查是否持续减少误报;
- 出错后是否能够快速恢复。
真正成熟的 AI 开发流程,不是取消人类判断,而是让人类判断出现在最值得出现的地方。

