
Claude 编写了 Claude Code 约 90% 的代码。面对海量的代码产出,传统的代码审查模式难以为继:谁在阅读代码?如何发现并处理错误?
Anthropic 团队披露了其代码审查流程的演变。今年六月至九月,合并到 Claude Code 代码库的拉取请求(PR)数量翻倍,而需要回滚的比例下降超过 40%。团队并未取消审查,而是将大部分“阅读”工作转移给机器,优化人类注意力分配,并确保错误能被快速修正。
重新定义代码审查
随着 AI 代理(Agents)介入,变更数量激增。在 Anthropic 的单仓(monorepo)中,每日提交变更从五月的约 2,500 个增至九月的 30,000 多个。手动逐行审查已不可行。
代码审查的核心任务有二:发布前发现问题,以及建立团队共享上下文。新流程侧重于前者,将审查从“道路尽头的关卡”转变为“持续进行的拼写检查”。大多数变更在请求人类查看前,已由 Claude 审查并修复过一次,从而捕获常规错误,让人类专注于更高阶的问题。
稀缺资源:人类时间与注意力
团队的目标是:大多数 PR 合并时最多只有一名人类参与,且回滚或事故率不增加。衡量指标包括每个 PR 的人类批准数、评论数量及等待时间,并以回滚率和事故率为护栏。
变更生命周期:层层递进的过滤网
一次典型变更需经过多层审查:
1. PR 创建前的自动验证
在打开 PR 之前,Claude 需运行测试、构建或对比截图以验证输出。子代理会带着全新上下文审查差异(diff)。开发者还会运行内部技能查找 bug、简化差异或进行端到端检查。
Anthropic 工程师 Boris Cherny 指出,赋予 Claude 验证能力是关键,这使得最终结果质量提高两到三倍。同时,团队通过 CLAUDE.md(项目性质、约定)和 REVIEW.md(代码所有者指南)规范 AI 行为,并从源头修复自动审查员反复标记的问题。
2. AI 主导的 PR 审查
每个 PR 在人类查看前都会经过 Claude 审查,评估变更是否解决问题、符合系统规范或破坏其他功能。内部数据显示,获得实质性审查评论的 PR 比例从 16% 升至 54%。
审查发现由多个代理并行验证并投票,仅当足够多代理确认为真实问题时才发布,且按严重程度排序。风格或诊断类噪音被丢弃。每个发现必须得到回应:修复或用理由解决。通常,代理会在夜间接手修复,作者次日可见经过另一轮审查的 PR。
3. 可阻止的安全与自动化检查
若 Bug 或安全审查中存在未解决的开放问题,PR 禁止合并。常规操作包括 lint、类型检查、全平台测试及构建。PR 模板要求说明测试方法及回滚方案,由发起人签字确认。
4. 基于风险的人类批准
审查层级由变更风险决定,而非作者身份:
- 低风险(文档、文案等):自动化审查通过后无需人类批准。
- 中风险(普通产品变更、敏感区域):需一人批准。
- 高风险(核心代码、特定路径):需两人批准。
只有受信任的作者(如仓库所属团队)可享受较轻路径,但代理的批准永远不能替代人类。发起变更者对 PR 负责,新提交落地后需重新批准。
5. 合并队列与渐进式发布
合并队列会对主分支重新运行检查,防止冲突。新行为首先通过标志向内部员工发布,随后进入 latest 频道,最后推向 stable 频道。
6. 快速检测与回滚
对于漏网之鱼,团队依靠标志关闭、值班轮换及事故审查快速响应。工程师更倾向于提高发现和解决问题的速度,而非单纯降低开发速率。
优化审查员:减少噪音与收敛
团队将历史事故 PR 纳入评估集,每日运行审查员以检验效果。通过观察人类对评论的操作(修复、忽略、标记误报)来衡量噪音。
为避免 AI 作者与审查员陷入无限循环,团队设定了轮次上限(三轮后要求重新考虑方法),首次通过后仅重新审查差异,并标记 bug 类别以便批量修复。数据显示,约 59% 被审查员标记的代码在首次通过时已存在,表明审查员更多是在捕捉旧 bug 而非新 bug。
人类在循环中的位置
高级工程师的时间应从捕捉常规错误中解放出来,转向机器不擅长的决策:
- 方向与范围:判断“是否应该构建此功能”。
- 高风险代码:如计费、自动更新器、CI 工作流。
- 架构规范:设定他人将复制的模式。
- 证据审阅:检查测试输出、截图及审查员发现。
- 结果问责:每个人对发布的变更负责,无论代码由谁输入。
共享上下文与所有权文化
为弥补机器阅读导致的上下文缺失,团队成员利用 Claude 生成代码解释器或可视化构件,以高效学习特定模块。这种按需获取知识的方式比逐行阅读琐碎差异更有效。
团队奉行“你落地,你拥有”原则。若变更出问题,发起人通常负责修复。这依赖于小变更、可逆操作(标志、回滚)、严格的爆炸半径控制及非指责性的事故审查。开放的 Slack 频道文化使得反馈来自不拥有代码的人,进一步保障了质量。
流程采纳建议
对于希望采用类似流程的团队,建议如下:
- PR 前:提供可运行的检查列表(
CLAUDE.md),本地运行 AI 审查与安全审查,添加REVIEW.md。 - PR 中:强制 CI,添加 AI 审查员并微调指南,实施自动化安全审查,根据风险匹配审查深度,限制审查轮次。
- 批准:基于变更风险设定层级,保留轻量路径给受信任作者,关键路径始终需要人类批准,机器人批准不替代人类。
- 合并后:使用合并队列、功能标志及分阶段发布,将事故转化为评估集,以回滚率和事故率监控人类时间投入。
未来,随着界限移动,更多低风险变更可能仅凭自动化检查即可合并。目标始终不变:减少每次变更的人类时间投入,同时保持甚至降低回滚率。