在很多团队里,PR Review 往往是一个“大家都知道重要,但总是排队”的环节。

代码写完了,测试过了,准备合并了,结果 Review 还没回来;等审查意见回来,开发者上下文已经丢了一半,修复、解释、再提交,又是一轮等待。真正拖慢交付的,很多时候不是写代码,而是代码审查没有标准化、没有自动化、没有前置过滤

这篇文章讲的不是“让 AI 替你决定合并与否”,而是把 AI 变成Review 前置筛子:先帮你发现明显问题、整理风险点、补齐检查清单,再把真正需要人来判断的部分交给团队成员。

一、为什么 PR Review 总是慢

大多数团队的 Review 变慢,问题通常不在“人不愿意看”,而在于 Review 的输入本身太差。

常见的四个瓶颈

  1. 改动太大

    • 一个 PR 里塞了功能、重构、格式化、修 bug
    • 审查者需要先理解意图,再判断实现,成本很高
  2. 上下文不足

    • 只看 diff 不知道为什么改
    • 没有设计说明,没有测试说明,没有风险提示
  3. 检查点不统一

    • 有的人看命名,有的人看性能,有的人看安全
    • 审查标准不一致,反馈质量波动很大
  4. 重复劳动太多

    • 大量时间花在找拼写、缩进、明显的空指针、无意义重构上
    • 真正该关注的业务逻辑、边界条件、权限问题反而被稀释

AI 适合处理的,正是这些重复、机械、结构化的部分。


二、AI 辅助代码审查到底该做什么

先说结论:AI 不是“最终裁判”,而是“第一轮审查员”。

适合交给 AI 的内容

  • 代码风格和命名一致性
  • 明显的逻辑漏洞
  • 潜在的性能问题
  • 可能的安全风险
  • 测试覆盖缺口
  • 是否违反项目约定
  • 是否缺少必要的错误处理
  • 是否有多余改动

不适合只靠 AI 的内容

  • 架构级决策
  • 业务规则是否真的合理
  • 对复杂边界的经验判断
  • 跨团队影响评估
  • 是否应该拆 PR、重设方案

简单说,AI 负责“扫雷”,人负责“拍板”。


三、一个实用的 AI Review 工作流

最稳妥的方式,不是把整个仓库丢给模型,而是让 AI 只看变化范围审查目标

推荐流程

  1. 开发者提交 PR
  2. CI 把 diff 导出来
  3. AI 先做结构化审查
  4. 输出风险清单和建议
  5. 人工只看高风险项
  6. 必要时再补人工深审

这个流程的核心价值是:先缩小问题空间,再把人的注意力集中在真正重要的地方


四、AI Review 提示词怎么写

提示词不要写成“帮我看看代码有没有问题”,这种太空。

要明确让 AI 输出结构化结果,并且限定审查维度。

推荐提示词模板

你是一个资深代码审查员。
请审查以下代码变更,重点关注:
1. 安全性问题
2. 性能问题
3. 可维护性问题
4. 测试缺口
5. 是否违反常见项目规范

输出格式:
- 发现的问题
- 风险等级
- 修改建议
- 是否建议阻塞合并

如果信息不足,请明确说明,不要猜测。

进一步增强的约束

你还可以加上:

  • 只基于 diff 判断,不要假设未提供的上下文
  • 对不确定的内容标记为“需人工确认”
  • 先给出高风险问题,再给出低风险问题
  • 避免泛泛而谈,必须指出文件、行号、原因

这样做出来的审查结果,才更像可执行报告,而不是聊天建议。


五、一个可落地的 GitHub Actions 示例

下面这个思路适合大多数团队:PR 打开或更新时,自动跑一轮 AI Review,结果作为评论或检查结果返回。

name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: Prepare diff
        run: |
          git diff origin/${{ github.base_ref }}...HEAD > changes.diff

      - name: AI Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude --print "你是一个资深代码审查员。请审查以下变更,重点关注安全性、性能、可维护性和测试缺口。输出必须结构化,指出具体风险并给出建议。只基于以下 diff:$(cat changes.diff)"

这个方案的好处

  • 每次 PR 都有统一的第一轮检查
  • 减少漏看明显问题的概率
  • 审查意见格式统一,方便团队阅读
  • 可以把 AI 结果沉淀成模板,越来越稳定

但要注意

不要把 AI 审查结果直接当最终结论。CI 适合做“前置过滤”,不是“完全替代”。


六、AI Review 最适合发现哪些问题

下面这些场景,AI 通常比人更快。

1. 空指针和边界遗漏

很多 bug 并不是复杂逻辑,而是简单的输入没判断、返回值没处理。

例如:

const user = await getUser(id);
return user.profile.name;

如果 getUser 可能返回 null,AI 很容易帮你抓出来。

2. 重复逻辑和可抽取代码

AI 很擅长指出“这里和别处差不多,可以抽函数”。

这类建议对长期维护很有价值,因为它帮助团队尽早发现代码膨胀的趋势。

3. 明显的性能问题

比如:

  • 在循环里重复查数据库
  • 对大数组做多次全量遍历
  • 在请求路径里做同步阻塞操作
  • 不必要的深拷贝或序列化

AI 可以快速标出这些模式。

4. 测试缺失

很多 PR 只改了实现,没有改测试。

AI 可以自动检查:

  • 是否新增了关键逻辑却没有对应测试
  • 是否覆盖了异常路径
  • 是否只测了 happy path

这点和《用 AI 写单元测试的正确方法》是强相关的。


七、把 AI Review 和团队规范绑定起来

如果团队没有审查规范,AI 的输出会显得很散。

所以更好的方式,是把团队规则写进审查提示里,甚至写进项目说明文件里。

建议加上的规范项

  • 新增接口必须有单元测试
  • 数据库访问必须有错误处理
  • 用户输入必须校验
  • 关键路径禁止同步 I/O
  • 公共函数必须写清楚边界行为
  • 生产相关改动必须给出回滚方案

这样 AI 审查时就不是“泛评论”,而是“照着你们团队的尺子看代码”。

如果你在用 Claude Code

可以把项目约定放进 CLAUDE.md,让它在审查时自动遵循团队规则。

这和本博客前面那篇《Claude Code 完整使用指南:从入门到自动化工作流》是天然连贯的:一个解决“怎么用”,一个解决“怎么把它用进流程里”。


八、审查报告应该长什么样

AI Review 的输出不要太散,最好固定成三层:

第一层:结论

  • 是否建议合并
  • 风险等级
  • 是否需要人工重点复核

第二层:问题列表

每个问题最好包含:

  • 文件位置
  • 问题描述
  • 风险等级
  • 修改建议

第三层:补充建议

比如:

  • 是否应拆分 PR
  • 是否应增加测试
  • 是否应更新文档
  • 是否应补回滚说明

推荐示例格式

结论:建议暂缓合并

高风险问题:
1. src/api/user.ts:42
   - 问题:未处理 null 返回值,可能导致运行时异常
   - 建议:增加空值判断并返回 404

中风险问题:
2. src/service/report.ts:88
   - 问题:在请求路径中进行了两次全表扫描
   - 建议:改为分页查询或缓存

测试缺口:
- 新增接口未覆盖鉴权失败场景
- 未验证异常分支

这种格式最适合团队协作,因为开发者可以直接按项修。


九、哪些团队最适合先上 AI Review

并不是所有团队都要一上来就全自动。

最适合先做的团队

  • PR 数量多、Review 排队明显的团队
  • 有统一编码规范的团队
  • 业务迭代快、重复改动多的团队
  • 新人比较多、代码风格不稳定的团队
  • 需要频繁做安全和合规检查的团队

不建议一开始就完全自动化的情况

  • 项目文档很差,代码约定不统一
  • 业务规则高度复杂,审查主要依赖经验
  • 团队对 AI 结果没有信任基础
  • 变更量很小,人工 Review 已经足够快

这类场景更适合先做“辅助建议”,再逐步提权。


十、落地时最容易踩的坑

坑 1:把 AI 输出当权威

AI 会帮你找问题,但它不是上下文全知者。涉及业务规则和历史包袱的部分,必须人工确认。

坑 2:审查输入太长

整仓库、整个 PR、几十个文件一起喂,结果通常会变差。更好的做法是按模块、按 diff、按风险拆分。

坑 3:没有统一模板

没有模板就没有稳定输出。今天像代码审查,明天像代码助手,后天像技术顾问,团队很难复用。

坑 4:只看问题,不看建议

AI 的价值不只是指出问题,更重要的是给出“下一步怎么改”。


十一、推荐的真实使用方式

如果你现在就想开始,建议这样上:

第一步:人工审查前加一层 AI 预审

先让 AI 看 diff,输出风险点。

第二步:把 AI 结果写进 PR 模板

例如要求提交人附上:

  • 改动目的
  • 风险点
  • 测试结果
  • 回滚方式

第三步:对高风险模块做强制 AI 审查

比如:

  • 鉴权
  • 支付
  • 数据导出
  • 用户隐私相关逻辑

第四步:定期复盘误报和漏报

只要复盘几轮,AI 审查模板就会越来越准。


十二、总结

AI 辅助代码审查的真正价值,不是替代人,而是让审查流程从“纯人工排队”升级为“机器先筛、人再决策”。

它最擅长的是:

  • 快速找出明显问题
  • 统一审查标准
  • 降低重复劳动
  • 给出结构化建议
  • 让 Review 更早发生

当你把 AI Review 和项目规范、CI 流程、测试体系结合起来之后,PR 审查就不再只是“等别人看”,而会变成一个可复制、可扩展、可持续优化的工程环节。

如果你已经在用 Claude Code,不妨把它进一步推进到“审查助手”角色;如果你还没有,那就从一条最简单的规则开始:让 AI 先帮你看第一遍,再让人做最终判断。


延伸阅读