Claude Code 怎么做代码审查?/code-review、/security-review 和 REVIEW.md 用法

Claude Code 官方团队的代码审查流程是:自己先验证、每个 PR 过 AI 审查、安全审查能拦合并、按风险决定几个人批。个人和小团队用本地的 /code-review、/security-review 加一份 REVIEW.md 就能搭起来。我们用 AICodeWith 的 Key 实测,两个命令都能跑通。

5 分钟阅读
Claude Code 怎么做代码审查?/code-review、/security-review 和 REVIEW.md 用法

先说结论:个人和小团队用本地命令加一份 REVIEW.md 就能搭起来,不用买 Team 版。云端的 Code Review 只给 Team 和 Enterprise 套餐,但 Claude Code 自带的 /code-review 和 /security-review 在本地就能用,接第三方 API 也能跑。

我们用 AICodeWith 的 Key 实测了一遍:在一个故意埋了 3 个问题的小仓库里,/code-review 用 25 秒把 3 个问题都找了出来,还顺带指出测试没跟着改;/security-review 用 68 秒找到了其中的 SQL 注入。

官方团队怎么做代码审查

Claude Code 团队在官方博客《How the Claude Code team does code review》里讲了他们的流程。核心是分好几层检查,人只看风险高的地方:

环节做法能不能拦住合并
提 PR 之前先自验证让 Claude 跑测试、构建、lint,把输出贴出来,而不是只说“做完了”;再让一个新上下文的子代理审一遍改动这一步在本地完成
必过的 CIlint、类型检查、多平台测试、构建,红了就不能合能
每个 PR 都过 AI 审查多个代理并行找 bug,再投票核对每条发现,按严重程度排序有未处理的发现就不能合
安全审查单独再过一遍安全检查能,发现要么修掉,要么写明理由关掉
按风险决定几个人批低风险(文档、文案、开关后面的新增功能):自动审查和安全检查都通过就行,不用人批;中风险(普通功能、缓存、自动更新、系统提示词):1 个人;高风险:2 个人能
合并之后合并队列在最新 main 上重跑检查,功能先放在开关后面内部试用,出问题快速回滚—
官方还提到两个细节:风险等级由分类器根据改动内容判断,不是作者自己说了算;AI 的批准永远不能顶替需要人来批的名额。

个人和小团队不需要照搬全部。前三层(自验证、本地 AI 审查、安全审查)用下面的方法就能做到。

第一步:创建 API Key

在 AICodeWith 控制台创建一个 Key,后面配置 Claude Code 时要用。

获取 API Key →

第二步:配置第三方 API

把地址和 Key 写进 ~/.claude/settings.json 的 env 里,不用在终端里 export:

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的Key"
  }
}
写进 settings.json 的好处是每次打开终端都生效,不会因为换了窗口就丢。更多配置方式见《Claude Code 如何接入第三方 API》。

第三步:确认版本

bash
claude --version

版本要在 2.1.218 及以上。从这个版本起 /code-review 以子代理的方式运行,不会占用你当前对话的上下文。我们实测用的是 2.1.300。版本太旧就先升级:

bash
claude update

第四步:在 CLAUDE.md 里写清楚怎么测试

审查时 Claude 会读项目根目录的 CLAUDE.md。把测试、构建、lint 的命令写进去,它就会自己跑一遍来验证,而不是靠猜:

markdown
# 项目说明
- 测试:python3 -m unittest
- 构建:无
- lint:python3 -m pyflakes .

实测里 /code-review 确实照着这里跑了测试,并在结果里写明“test_total 返回 5 而不是 6,测试不通过”。CLAUDE.md 的完整写法见《CLAUDE.md 写法指南》。

第五步:写 REVIEW.md

REVIEW.md 放在项目根目录,告诉审查者在这个仓库里什么才算问题。官方的建议是写短一点,写清楚“失败长什么样”,把反复出现的审查意见挪进去。

下面是可以直接复制的中文模板:

markdown
# 代码审查规则

## 什么算失败(必须报)
- 逻辑错误:结果算错、边界条件漏掉
- 安全问题:SQL 注入、命令注入、密钥写进代码
- 改了行为却没改测试

## 不要报
- 纯风格问题(命名、空行、引号),最多提 3 条
- tests/fixtures/ 目录和 *.lock 文件

## 证据要求
- 每条问题写清文件名和行号,说明怎么触发
- 没有证据的猜测不要写

四块各管一件事:

  • 什么算失败:列出必须报的问题类型,审查者会优先找这些
  • 限制挑刺数量:风格类意见设上限,免得重要问题被淹没
  • 跳过的路径:测试数据、锁文件、生成的代码不用审
  • 证据要求:要求写文件和行号、写怎么触发,方便你直接去改

实测时 /code-review 的结果里每条都带了 store.py:4 这样的位置和触发方式,还引用了 REVIEW.md 里“改了行为却没改测试”这一条。

第六步:本地跑 /code-review 和 /security-review

在要审查的分支上打开 Claude Code,输入:

text
/code-review

它会检查当前改动里的正确性问题。加上 --fix 可以让它直接改掉发现的问题;传 PR 编号(比如 /code-review high 1234)则审查那个 PR。

安全审查单独跑:

text
/security-review

它会对比当前分支和 origin 默认分支之间的差异,查注入、权限、数据泄露这类问题。所以仓库需要有 origin 远程仓库。

实测结果

我们建了一个小仓库,main 分支是正常代码,feature 分支故意改出 3 个问题:查询从参数化改成字符串拼接(SQL 注入)、求和循环从下标 1 开始(漏掉第一项)、折扣除以 10 而不是 100。

命令耗时结果
/code-review25 秒报了 6 条,埋的 3 个问题全部找到;另外指出折扣没有范围校验、新参数没有测试、手写循环不如直接用 sum()
/security-review68 秒报了 1 条高危:store.py:4 的 SQL 注入,给出攻击输入示例和修复写法;两个计算错误不属于安全问题,没有报

两个命令都是一次跑通,没有报错。

两个命令分工不同:/code-review 看代码对不对,/security-review 只看安全。安全问题两边都可能报,计算错误只有 /code-review 会报,所以建议两个都跑。

第七步(可选):接 GitHub Action

想让每个 PR 自动审查,可以用官方的 Claude Code GitHub Action,安全审查也有开源的 security review GitHub Action。官方的建议是先在一个仓库上试,花几周把 REVIEW.md 调顺,再推广到其他仓库。

自动审查跑在 GitHub 上,Key 要存进仓库的 Secrets,不要写进工作流文件。

第八步:最多审 3 轮

官方团队踩过一个坑:反复让 AI 审同一个 PR,每轮总能再挑出点东西,有个 PR 一晚上被审了五十多轮。他们查下来,后面几轮报的大约 59% 是一开始就存在的旧代码,并不是新问题。

所以现在的规矩是:

  • 最多 3 轮,3 轮还过不了,就回头想想思路是不是有问题
  • 前几轮之后只审新改动,不再从头审整个 diff
  • 发现一类问题就把同类的地方都改掉,不要只改那一行
  • 已经报过的问题不重复报

个人用的时候也照这个来:第一轮跑完整的 /code-review,改完后让它只看新提交的部分。

常见问题

个人版能用云端的 Code Review 吗?

不能。云端的 Code Review for Claude Code 目前只在 Team 和 Enterprise 套餐上提供。个人和小团队用本地的 /code-review 和 /security-review,再配合 GitHub Action,能覆盖大部分需求。

/review 和 /code-review 有什么区别?

没有区别,/review 是 /code-review 的别名。

有一点要注意:如果你在项目里自己写了一个叫 code-review 的 Skill,它会替换掉 /code-review,但 /review 仍然走自带的版本。自己写 Skill 的方法见《怎么创建自己的 Skill》。

用第三方 Key 会报什么错?

我们实测时遇到过一次:

text
Not logged in · Please run /login

原因是 ~/.claude/settings.json 不存在,Claude Code 没读到 Key。按第二步把 env 写进去就好了,不需要运行 /login。

另一个常见错误来自 /security-review:如果仓库没有 origin 远程仓库,它没法找到默认分支来对比,会报 ambiguous argument 之类的错误。先加上远程仓库:

bash
git remote add origin 你的仓库地址
git fetch origin

审查用哪个模型好?

审查是找 bug 的活,模型越强越好。选模型可以参考《Claude Code 用哪个模型最好》;想省钱可以让子代理用便宜一点的模型,见《Claude Code 子代理配置 Haiku》。

还有哪些相关玩法?

立即注册,开始用 Claude Code 审查代码 →

同类场景

想看更多用 AI 检查代码的实战做法,可以看 AI 代码审查 场景页。

相关文章

Claude Code 怎么控制 Unreal Engine?Epic 官方插件安装、MCP 连接与安全设置(UE5 实操)

Claude Code 怎么控制 Unreal Engine?Epic 官方插件安装、MCP 连接与安全设置(UE5 实操)

Epic Games 在 Anthropic 官方插件市场提供了 Claude Code Unreal Engine 插件 unreal-engine-skills-for-claude-code,配合编辑器里的 Unreal MCP,就能让 Claude Code 直接操作 UE5 编辑器。本文讲清编辑器端要开哪两个插件、怎么启动 MCP 服务、Claude Code 端怎么装插件和验证连接,以及 execute_tool_script 等安全设置。我们用 AICodeWith 的 Key 实测:插件 2.5 秒装好,全程不需要登录 Anthropic 账号。