4 4
5# Code Review5# Code Review
6 6
7> 设置自动化 PR 审查,通过对完整代码库的多代理分析来捕获逻辑错误、安全漏洞和回归问题7> 使用 Code Review 捕获 GitHub Pull Request 中的错误:Claude 审查每项更改、验证其发现,并发布内联评论。适用于 Team 和 Enterprise 套餐
8 8
9<Note>9借助 Code Review,Claude 会审查您 GitHub 仓库中的 Pull Request。多个 Agent 会结合周围代码阅读每项更改,查找逻辑错误、安全漏洞或破损的边界情况等问题。验证步骤会在报告发现之前对照代码检查这些发现。
10 Code Review 目前为研究预览版,仅适用于 [Team 和 Enterprise](https://claude.ai/admin-settings/claude-code) 订阅。对于启用了 [Zero Data Retention](/docs/zh-CN/zero-data-retention) 或应用了 [HIPAA 配置](/docs/zh-CN/hipaa-setup)的组织,此功能不可用,且不在 Anthropic 的 BAA 涵盖范围内。在其他套餐上,您仍然可以使用 `/code-review` 命令[在本地审查 diff](#review-a-diff-locally)。
11</Note>
12
13Code Review 分析您的 GitHub pull request,并在发现问题的代码行上发布内联评论。一支由专业代理组成的团队在完整代码库的上下文中检查代码更改,寻找逻辑错误、安全漏洞、破损的边界情况和微妙的回归问题。
14
15发现结果按严重程度标记,不会批准或阻止您的 PR,因此现有的审查工作流保持不变。您可以通过向存储库添加 `CLAUDE.md` 或 `REVIEW.md` 文件来调整 Claude 标记的内容。
16
17要在您自己的 CI 基础设施中运行 Claude 而不是使用此托管服务,请参阅 [GitHub Actions](/docs/zh-CN/github-actions) 或 [GitLab CI/CD](/docs/zh-CN/gitlab-ci-cd)。对于自托管 GitHub 实例上的存储库,请参阅 [GitHub Enterprise Server](/docs/zh-CN/github-enterprise-server)。
18 10
19本页涵盖:11发现以内联评论的形式出现在相关代码行上,按[严重程度](/docs/zh-CN/code-review-pull-requests#severity-levels)排序,并在 Pull Request 上附带摘要和检查运行。审查永远不会批准或阻止 Pull Request,因此合并的决定权仍在您的团队手中。
20 12
21* [审查工作原理](#how-reviews-work)13<img src="https://mintcdn.com/claude-code/gLJVaPQEgKC8ZyUD/images/code-review-pipeline.svg?fit=max&auto=format&n=gLJVaPQEgKC8ZyUD&q=85&s=0351c96df9efa3105172eb00a672f130" className="dark:hidden" alt="审查分为四个阶段的示意图。GitHub 上的 Pull Request 被交给多个 Agent,它们在 Anthropic 基础设施上并行搜索。验证步骤剔除误报,剩余的发现经过去重并按严重程度排序,然后审查将内联评论、摘要和检查运行发布回 GitHub。" width="760" height="300" data-path="images/code-review-pipeline.svg" />
22* [设置](#set-up-code-review)
23* [手动触发审查](#manually-trigger-reviews),使用 `@claude review` 和 `@claude review always`
24* [自定义审查](#customize-reviews),使用 `CLAUDE.md` 和 `REVIEW.md`
25* [定价](#pricing)
26* [故障排除](#troubleshooting)失败的运行和缺失的评论
27* [在本地审查差异](#review-a-diff-locally),使用 `/code-review` 命令
28
29<h2 id="how-reviews-work">
30 审查工作原理
31</h2>
32 14
33一旦管理员为您的组织[启用 Code Review](#set-up-code-review),审查将在 PR 打开时、每次推送时或手动请求时触发,具体取决于存储库的配置行为。在任何模式下,注释 `@claude review` 可以[在 PR 上启动审查](#manually-trigger-reviews)。15<img src="https://mintcdn.com/claude-code/gLJVaPQEgKC8ZyUD/images/code-review-pipeline-dark.svg?fit=max&auto=format&n=gLJVaPQEgKC8ZyUD&q=85&s=9cf26bde98f4e999d0d9ff5bf5bdff40" className="hidden dark:block" alt="审查分为四个阶段的示意图。GitHub 上的 Pull Request 被交给多个 Agent,它们在 Anthropic 基础设施上并行搜索。验证步骤剔除误报,剩余的发现经过去重并按严重程度排序,然后审查将内联评论、摘要和检查运行发布回 GitHub。" width="760" height="300" data-path="images/code-review-pipeline-dark.svg" />
34
35当审查运行时,多个代理在 Anthropic 基础设施上并行分析差异和周围代码。每个代理寻找不同类别的问题,然后验证步骤检查候选项是否与实际代码行为相符,以过滤掉误报。结果被去重、按严重程度排序,并作为内联评论发布在发现问题的特定行上,并在审查正文中包含摘要。如果未发现问题,Code Review 会更新 GitHub 检查运行以显示未检测到问题。Claude 也可能在 PR 上发布简短的确认评论。
36
37审查成本随 PR 大小和复杂性而扩展,平均在 20 分钟内完成。管理员可以通过[分析仪表板](#view-usage)监控审查活动和支出。
38
39<h3 id="severity-levels">
40 严重程度级别
41</h3>
42
43每个发现都标有严重程度级别:
44
45| 标记 | 严重程度 | 含义 |
46| :- | :- | :- |
47| 🔴 | 重要 | 应在合并前修复的错误 |
48| 🟡 | 小问题 | 轻微问题,值得修复但不阻止 |
49| 🟣 | 预先存在 | 代码库中存在但不是由此 PR 引入的错误 |
50
51发现包括可折叠的**为什么被标记**部分,您可以展开以了解 Claude 为什么标记该问题以及它如何验证问题。
52
53<h3 id="rate-and-reply-to-findings">
54 对发现进行评分和回复
55</h3>
56
57Claude 的每条审查评论都已附加 👍 和 👎,因此两个按钮都会在 GitHub UI 中出现,以便一键评分。如果发现有用,请点击 👍;如果发现错误或嘈杂,请点击 👎。Anthropic 在 PR 合并后收集反应计数,并使用它们来调整审查者。反应不会触发重新审查或更改 PR 上的任何内容。
58
59回复内联评论不会提示 Claude 响应或更新 PR。要对发现采取行动,请修复代码并推送。如果 PR 订阅了推送触发的审查,下一次运行将在问题修复时解决线程。要请求新审查而不推送,请作为[顶级 PR 评论](#manually-trigger-reviews)注释 `@claude review`。
60
61要在不更改代码的情况下关闭发现,请解决其线程;回复不会关闭它。
62
63<h3 id="check-run-output">
64 检查运行输出
65</h3>
66
67除了内联审查评论外,每次审查都会填充 **Claude Code Review** 检查运行,该运行与您的 CI 检查一起出现。展开其 **Details** 链接以在一个地方查看每个发现的摘要,按严重程度排序:
68
69| 严重程度 | 文件:行 | 问题 |
70| - | - | - |
71| 🔴 重要 | `src/auth/session.ts:142` | 令牌刷新与登出竞争,导致过期会话保持活跃 |
72| 🟡 小问题 | `src/auth/session.ts:88` | `parseExpiry` 在格式错误的输入上静默返回 0 |
73
74每个发现也作为 **Files changed** 选项卡中的注释出现,直接标记在相关的差异行上。重要发现用红色标记呈现,小问题用黄色警告,预先存在的错误用灰色通知。注释和严重程度表独立于内联审查评论写入检查运行,因此即使 GitHub 拒绝在移动的行上的内联评论,它们仍然可用。
75
76检查运行始终以中立结论完成,因此它永远不会通过分支保护规则阻止合并。如果您想根据 Code Review 发现来限制合并,请在您自己的 CI 中读取检查运行输出中的严重程度分解。Details 文本的最后一行是一个机器可读的评论,您的工作流可以使用 `gh` 和 jq 解析。要找到检查运行 ID,请使用 `gh api repos/OWNER/REPO/commits/<commit-sha>/check-runs --jq '.check_runs[] | {id, name}'` 列出提交的检查运行,并获取 `Claude Code Review` 运行的 `id`。将 `OWNER`、`REPO` 和 `CHECK_RUN_ID` 替换为您的存储库所有者、存储库名称和该 ID:
77
78```bash theme={null}
79gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID \
80 --jq '.output.text | split("bughunter-severity: ")[1] | split(" -->")[0] | fromjson'
81```
82
83这返回一个 JSON 对象,其中包含每个严重程度的计数,例如 `{"normal": 2, "nit": 1, "pre_existing": 0}`。`normal` 键保存重要发现的计数;非零值意味着 Claude 发现了至少一个在合并前值得修复的错误。
84
85<h3 id="what-code-review-checks">
86 Code Review 检查的内容
87</h3>
88
89默认情况下,Code Review 专注于正确性:会破坏生产的错误,而不是格式偏好或缺失的测试覆盖。您可以通过[向存储库添加指导文件](#customize-reviews)来扩展其检查范围。
90
91<h2 id="set-up-code-review">
92 设置 Code Review
93</h2>
94
95管理员为组织启用一次 Code Review,并选择要包含的存储库。
96
97<Steps>
98 <Step title="打开 Claude Code 管理员设置">
99 转到 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 并找到 Code Review 部分。您需要对 Claude 组织具有 Owner 或 Primary Owner 角色,并有权在 GitHub 组织中安装 GitHub Apps。
100 </Step>
101
102 <Step title="开始设置">
103 点击**设置**。这将开始 GitHub App 安装流程。
104 </Step>
105
106 <Step title="安装 Claude GitHub App">
107 按照提示安装 Claude GitHub App:选择拥有您要审查的存储库的 GitHub 组织,选择应用可以访问的存储库,并批准请求的权限。
108
109 要审查 pull request,Claude 通过应用的读取访问权限读取您的存储库内容,并通过其对 pull request 和检查的写入访问权限发布评论和 [check run](#check-run-output)。在安装期间,您授予由其他 Claude 功能(如 [GitHub Actions](/docs/zh-CN/github-actions))共享的更广泛权限集;有关完整列表,请参阅 [GitHub App 权限](/docs/zh-CN/github-actions#github-app-permissions)。
110 </Step>
111
112 <Step title="选择存储库">
113 选择要为 Code Review 启用的存储库。如果您看不到存储库,请确保在安装期间为 Claude GitHub App 提供了对其的访问权限。您可以稍后添加更多存储库。
114 </Step>
115
116 <Step title="为每个存储库设置审查触发器">
117 设置完成后,Code Review 部分在表格中显示您的存储库。对于每个存储库,使用**审查行为**下拉菜单选择何时运行审查:
118
119 * **PR 创建后一次**:当 PR 打开或标记为准备审查时运行一次审查
120 * **每次推送后**:在每次推送到 PR 分支时运行审查,在 PR 演变时捕获新问题,并在您修复标记的问题时自动解决线程
121 * **手动**:打开或推送到 PR 不会启动审查;注释 [`@claude review`](#manually-trigger-reviews) 以请求审查,或 `@claude review always` 以同时订阅 PR 到后续推送的审查
122
123 无论您选择哪个选项,Claude 仅在有人在 [fork 中的 pull request](#review-pull-requests-from-forks) 上注释 `@claude review` 时才审查它。
124
125 每次推送时审查会运行最多审查并花费最多。手动模式对于高流量存储库很有用,您可以选择特定 PR 进行审查,或仅在 PR 准备好后才开始审查。
126 </Step>
127</Steps>
128
129存储库表还显示每个存储库基于最近活动的平均审查成本。使用行操作菜单为每个存储库打开或关闭 Code Review,或完全删除存储库。
130
131要验证设置,请打开测试 PR。如果您选择了自动触发器,在几分钟内会出现名为 **Claude Code Review** 的检查运行。如果您选择了手动,在 PR 上注释 `@claude review` 以启动第一次审查。如果没有出现检查运行,请确认存储库在您的管理员设置中列出,并且 Claude GitHub App 有权访问它。
132
133<h2 id="manually-trigger-reviews">
134 手动触发审查
135</h2>
136
137注释命令按需启动审查。无论存储库的配置触发器如何,它们都有效,因此您可以使用它们在手动模式下选择特定 PR 进行审查,或在其他模式下获得立即重新审查。
138
139| 命令 | 作用 |
140| :- | :- |
141| `@claude review` | 启动单次审查,不订阅未来推送 |
142| `@claude review always` | 启动审查并将 PR 订阅到今后的推送触发审查 |
143| `@claude review once` | 与 `@claude review` 相同:启动单次审查,不订阅 |
144
145当您想要对 PR 的每个后续推送启动新审查时,使用 `@claude review always`,例如在设置为手动模式的存储库中的高优先级 PR 上。由于基础命令不订阅 PR,您可以请求一次性第二意见,而不改变后续推送是否触发审查。
146 16
147<Note>17<Note>
148 在 2026 年 7 月更新之前,`@claude review` 将 PR 订阅到推送触发审查。如果您依赖该行为,请改为注释 `@claude review always`。`@claude review once` 仍然有效,行为与基础命令相同。18 Code Review 使用 AI 审查代码,可能会遗漏错误、安全漏洞或其他问题。没有发现的审查并不意味着您的代码没有错误或是安全的。
149</Note>19</Note>
150 20
151对于任一命令触发审查:21<span id="review-a-diff-locally" />
152
153* 将其作为顶级 PR 评论发布,而不是差异行上的内联评论
154* 在注释开头放置命令,`once` 或 `always` 与命令的其余部分在同一行
155* 您必须对存储库具有写入、维护或管理员权限
156* PR 必须打开
157
158与自动触发不同,手动触发在草稿 PR 上运行,因为显式请求表示您想要现在的审查,无论草稿状态如何。
159
160如果该 PR 上已有审查正在运行,请求将排队等待进行中的审查完成。您可以通过 PR 上的检查运行监控进度。
161
162<h3 id="review-pull-requests-from-forks">
163 审查来自分支的拉取请求
164</h3>
165
166Claude 不会自动审查来自分支的拉取请求,无论存储库的**审查行为**设置如何。要启动一个,请在拉取请求上注释 `@claude review`。[注释命令的要求](#manually-trigger-reviews)仍然适用,您需要的写入访问权限是针对基础存储库的,而不是分支。
167 22
168要获得分支拉取请求的另一次审查,请发布新的 `@claude review` 注释。`@claude review always` 也有效,但不会将拉取请求订阅到后续推送上的审查。除了注释命令外,没有其他任何东西会在分支拉取请求上启动审查:23要启用 Code Review,需由您 Claude 组织的 Owner 按照[设置 Code Review](/docs/zh-CN/code-review-setup)进行操作。Claude 也可以在不使用此服务的情况下审查代码。在任何套餐上,都可以在 Claude Code 会话中运行 [`/code-review`](/docs/zh-CN/code-review-local),或[比较所有选项](#compare-ways-to-get-a-review)。
169 24
170* 在检查运行上单击**重新运行**不会启动审查25<h2 id="availability">
171* 推送新提交不会启动审查,即使在设置为**每次推送后**的存储库中也不会26 可用性
172
173<h2 id="customize-reviews">
174 自定义审查
175</h2>27</h2>
176 28
177Code Review 从您的存储库读取两个文件来指导它标记的内容。它们在如何强烈影响审查方面有所不同:29在设置 Code Review 之前,请确认您的组织符合条件:
178
179* **`CLAUDE.md`**:共享项目说明,Claude Code 用于所有任务,不仅仅是审查。Code Review 将其作为项目上下文读取,并将新引入的违规标记为小问题。
180* **`REVIEW.md`**:仅审查说明,提供给审查管道中查找和验证发现的代理,并由排名和报告发现的代理咨询。使用它来说明您的团队想要标记的内容、严重程度以及如何报告发现。
181
182<h3 id="claude-md">
183 CLAUDE.md
184</h3>
185
186Code Review 读取您的存储库的 `CLAUDE.md` 文件,并将新引入的违规视为[小问题级别](#severity-levels)的发现。这是双向工作的:如果您的 PR 以使 `CLAUDE.md` 语句过时的方式更改代码,Claude 会标记文档需要更新。
187
188Claude 在目录层次结构的每个级别读取 `CLAUDE.md` 文件,因此子目录的 `CLAUDE.md` 中的规则仅适用于该路径下的文件。有关 `CLAUDE.md` 如何工作的更多信息,请参阅[内存文档](/docs/zh-CN/memory)。
189 30
190对于您不想应用于常规 Claude Code 会话的仅审查指导,请改用 [`REVIEW.md`](#review-md)。31* **套餐**:[Team 和 Enterprise](/docs/zh-CN/feature-availability)
191 32* **代码托管平台**:托管在 GitHub 上的仓库,包括 [GitHub Enterprise Server](/docs/zh-CN/github-enterprise-server) 和启用数据驻留的 GitHub Enterprise Cloud。对于数据驻留,请让 Owner 按照 [GitHub Enterprise Server 管理员设置](/docs/zh-CN/github-enterprise-server#admin-setup)操作,并输入您企业的 `ghe.com` 主机名。
192<h3 id="review-md">33* **数据保留**:对于启用了 [Zero Data Retention](/docs/zh-CN/zero-data-retention) 或应用了 [HIPAA 配置](/docs/zh-CN/hipaa-setup)的组织,Code Review 不可用,且不在 Anthropic 的业务伙伴协议(BAA)涵盖范围内。
193 REVIEW\.md34* **加密密钥**:对于使用客户管理加密密钥(CMEK)的组织,Code Review 暂不可用。
194</h3>35* **云提供商**:即使您的开发人员通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 使用 Claude Code,您也需要一个使用上述套餐之一的 Claude 组织
195 36
196`REVIEW.md` 是位于您的存储库根目录的文件,它为您的存储库定制 Code Review。审查管道中查找和验证发现的代理接收其内容作为您的存储库的审查说明,以及 Code Review 的默认审查指导,排名和报告发现的代理在确定严重程度和编写审查之前咨询它。37<h2 id="set-up-and-use-code-review">
197 38 设置和使用 Code Review
198将您想要强制执行的规则直接放在 `REVIEW.md` 中。
199
200<h4 id="what-you-can-tune">
201 您可以调整的内容
202</h4>
203
204`REVIEW.md` 是自由格式的 markdown,因此任何您可以表达为审查说明的内容都在范围内。下面的模式在实践中影响最大。
205
206**严重程度**:为您的存储库重新定义 🔴 重要的含义。默认校准针对生产代码;文档存储库、配置存储库或原型可能想要更窄的定义。明确说明哪些类别的发现是重要的,哪些最多是小问题。您也可以向另一个方向升级,例如将任何 `CLAUDE.md` 违规视为重要而不是默认小问题。
207
208**小问题数量**:限制单次审查发布的 🟡 小问题评论数量。散文和配置文件可以永远被打磨。像"最多报告五个小问题,在摘要中提及其余的计数"这样的上限使审查可操作。
209
210**跳过规则**:列出 Claude 应该不发布任何发现的路径、分支模式和发现类别。常见候选是生成的代码、lockfiles、供应商依赖和机器创作的分支,以及您的 CI 已经强制执行的任何内容,如 linting 或拼写检查。对于值得一些审查但不需要完全审查的路径,设置更高的标准而不是完全跳过:"在 `scripts/` 中,仅在接近确定且严重时报告。"
211
212**存储库特定检查**:添加您想在每个 PR 上标记的规则,如"新 API 路由必须有集成测试。"因为 `REVIEW.md` 到达每个发现和验证代理,这些比长 `CLAUDE.md` 中的相同规则更可靠地着陆。
213
214**验证标准**:在发布发现类别之前需要证据。例如,"行为声明需要源中的 `file:line` 引用,而不是从命名推断"会减少否则会花费作者往返的误报。
215
216**重新审查收敛**:告诉 Claude 当 PR 已经被审查时如何表现。像"在第一次审查后,抑制新的小问题并仅发布重要发现"这样的规则会阻止单行修复仅因风格而达到第七轮。
217
218**摘要形状**:要求审查正文以一行计数开头,如 `2 factual, 4 style`,并在这种情况下以"没有事实问题"开头。作者想在详细信息之前知道工作的形状。
219
220<h4 id="example">
221 示例
222</h4>
223
224这个 `REVIEW.md` 为后端服务重新校准严重程度,限制小问题,跳过生成的文件,并添加存储库特定检查。
225
226```markdown theme={null}
227# 审查说明
228
229## 重要在这里的含义
230
231保留重要用于会破坏行为、泄露数据或阻止回滚的发现:不正确的逻辑、无范围的数据库查询、日志或错误消息中的 PII,以及不向后兼容的迁移。风格、命名和重构建议最多是小问题。
232
233## 限制小问题
234
235每次审查最多报告五个小问题。如果您发现了更多,请在摘要中说"加上 N 个类似项目"而不是内联发布它们。如果您发现的一切都是小问题,请以"没有阻止问题"开头摘要。
236
237## 不要报告
238
239- CI 已经强制执行的任何内容:lint、格式化、类型错误
240- `src/gen/` 下生成的文件和任何 `*.lock` 文件
241- 故意违反生产规则的仅测试代码
242
243## 始终检查
244
245- 新 API 路由有集成测试
246- 日志行不包括电子邮件地址、用户 ID 或请求正文
247- 数据库查询的范围限定为调用者的租户
248```
249
250<h4 id="keep-it-focused">
251 保持专注
252</h4>
253
254长度有成本:长 `REVIEW.md` 会稀释最重要的规则。将其保持为改变审查行为的说明,并将常规项目上下文留在 `CLAUDE.md` 中。
255
256<h2 id="view-usage">
257 查看使用情况
258</h2>39</h2>
259 40
260转到 [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review) 以查看整个组织的 Code Review 活动。仪表板显示:41<span id="set-up-code-review" />
261
262| 部分 | 显示内容 |
263| :- | :- |
264| 审查的 PR | 所选时间范围内每日审查的 pull request 计数 |
265| Code Review 成本 | 本月迄今为止的 Code Review 支出 |
266| 反馈 | 因开发人员解决问题而自动解决的审查评论计数 |
267| 仓库细分 | 每个仓库的审查 PR 计数、已解决评论计数和审查运行次数,以及估算成本和按 PR 查看的视图 |
268
269仅当选择当前月份时,Code Review 成本卡片才会显示金额。分析中的成本数字可能与您的发票不同。仓库细分中的成本按标价估算,未计入任何折扣或抵扣额度,并且仅涵盖 Claude 在 Pull Request 上发布的审查。对于发票准确的支出,请参考您的 Anthropic 账单。
270
271<h2 id="pricing">
272 定价
273</h2>
274
275Code Review 根据令牌使用情况计费。每次审查平均花费 \$15-25,随 PR 大小、代码库复杂性和需要验证的问题数量而扩展。Code Review 使用通过[使用额度](https://support.claude.com/zh-CN/articles/12429409-extra-usage-for-paid-claude-plans)单独计费,不计入您的计划包含的使用。
276
277您选择的审查触发器影响总成本:
278
279* **PR 创建后一次**:每个 PR 运行一次
280* **每次推送后**:在每次推送时运行,将成本乘以推送次数
281* **手动**:没有在打开或推送时进行审查,因此成本仅从某人请求的审查中产生
282
283在 PR 创建后一次或手动模式下,注释 `@claude review always` [选择 PR 进入推送触发审查](#manually-trigger-reviews),因此在该注释后每次推送都会产生额外成本。在每次推送后模式下,推送已经触发审查,因此订阅不会改变每次推送的成本。注释 `@claude review` 运行单次审查而不订阅未来推送。Claude 仅在有人注释 `@claude review` 时审查[来自分支的拉取请求](#review-pull-requests-from-forks),因此分支拉取请求在任何模式下都不会产生每次推送的成本。
284 42
285无论您的组织是否为其他 Claude Code 功能使用 Amazon Bedrock 或 Google Cloud 的 Agent Platform,成本都会出现在您的 Anthropic 账单上。要为 Code Review 设置每月支出上限,请转到 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 并为 Claude Code Review 服务配置限制。43<span id="pricing" />
286 44
287要监控支出,请使用[分析仪表板](#view-usage)。45<span id="manually-trigger-reviews" />
288 46
289<h2 id="troubleshooting">47<span id="customize-reviews" />
290 故障排除
291</h2>
292
293审查运行是尽力而为的,失败的运行永远不会阻止您的 PR。Code Review 会自动重试一些中断的审查。本部分介绍如何自己再次运行审查,以及当检查运行报告您找不到的问题时在哪里查看。
294
295<h3 id="retrigger-a-failed-or-timed-out-review">
296 重新触发失败或超时的审查
297</h3>
298 48
299当审查失败或超过时间限制时,检查运行完成,标题为 **Code review failed** 或 **Code review timed out**。结论仍然是中立的,因此没有任何东西阻止您的合并。除非检查运行的摘要说新的提交审查已自动排队,否则请自己再次运行审查。49<span id="troubleshooting" />
300 50
301要再次运行审查,在 PR 上注释 `@claude review`。这启动一个新的审查,不订阅 PR 到未来推送。如果 PR 不是[来自 fork](#review-pull-requests-from-forks),您可以改为在 GitHub 的 Checks 选项卡中的 **Claude Code Review** 检查上点击 **Re-run**。重新运行也会启动一个新的审查,不订阅 PR。51根据您需要完成的操作选择相应页面:
302 52
303<h3 id="review-didn’t-run-and-the-pr-shows-a-budget-message">53<CardGroup cols={2}>
304 审查未运行,PR 显示预算消息54 <Card title="设置 Code Review" icon="toggle-on" href="/docs/zh-CN/code-review-setup">
305</h3>55 检查要求、安装 Claude GitHub App,并选择仓库、审查级别以及审查的运行时机
306 56 </Card>
307当您的组织的 Code Review 每月支出上限已达到,或其使用额度余额已用完时,Code Review 会跳过审查并在 PR 上发布单条评论。该评论和检查运行卡片都会说明原因,并链接到管理员可在其中解决问题的管理页面:
308 57
309* **已达到支出上限**:审查在下一个计费周期开始时恢复,或在管理员于 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 提高上限后立即恢复58 <Card title="自定义 Code Review" icon="sliders" href="/docs/zh-CN/code-review-customize">
310* **使用额度已用完**:管理员在 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 添加更多[使用额度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)后,审查即恢复59 通过仓库中的 `REVIEW.md` 和 `CLAUDE.md` 文件调整标记的内容
60 </Card>
311 61
312<h3 id="find-issues-that-aren’t-showing-as-inline-comments">62 <Card title="在 Pull Request 上阅读和请求审查" icon="code-pull-request" href="/docs/zh-CN/code-review-pull-requests">
313 查找未显示为内联评论的问题63 阅读发现及其严重程度,并通过评论请求再次审查
314</h3>64 </Card>
315 65
316如果检查运行标题说发现了问题但您在差异上看不到内联审查评论,请在这些其他位置查看发现的位置:66 <Card title="Code Review 故障排除" icon="wrench" href="/docs/zh-CN/code-review-troubleshooting">
67 修复未启动、失败或因预算而被跳过的审查
68 </Card>
317 69
318* **检查运行 Details**:在检查选项卡中的 Claude Code Review 检查旁边点击 **Details**。严重程度表列出每个发现及其文件、行和摘要,无论内联评论是否被接受。70 <Card title="Code Review 成本和使用情况" icon="chart-line" href="/docs/zh-CN/code-review-costs">
319* **Files changed 注释**:在 PR 上打开 **Files changed** 选项卡。发现呈现为直接附加到差异行的注释,与审查评论分开。71 了解审查的计费方式、估算支出、设置每月支出上限并跟踪审查活动
320* **审查正文**:如果您在审查运行时推送到 PR,某些发现可能引用当前差异中不再存在的行。这些出现在审查正文文本中的 **Additional findings** 标题下,而不是作为内联评论。72 </Card>
73</CardGroup>
321 74
322<h2 id="review-a-diff-locally">75<h2 id="how-reviews-work">
323 在本地审查差异76 审查工作原理
324</h2>77</h2>
325 78
326[`/code-review` 命令](/docs/zh-CN/commands)在您的终端中审查 diff,无需安装 GitHub App。它会报告正确性错误。根据您的模型和 effort 级别,审查还会涵盖重用、简化和效率方面的清理。79<span id="what-code-review-checks" />
327
328`/review` 是 `/code-review` 的别名;在 v2.1.223 之前,它是一个单独的命令,对 GitHub pull request 进行单次通过、只读审查。
329
330<Steps>
331 <Step title="运行 /code-review">
332 从您正在工作的会话中,运行命令:
333
334 ```text theme={null}
335 /code-review
336 ```
337
338 它审查您分支相对于其上游的提前提交加上任何未提交的更改,因此它需要在分支或工作树中进行工作以有内容可报告。要审查其他内容,请传递一个目标:文件路径、PR 编号、分支名称或引用范围,例如 `main...my-feature`。
339
340 您还可以添加标志:
341
342 * `--fix`:在审查后将发现应用到您的工作树
343 * `--comment`:将发现作为内联评论发布在 GitHub Pull Request 上,或作为单个注释发布在 GitLab merge request 上
344 * `--post`:在 `github.com` Pull Request 的 `ultra` 云审查上,在启动对话框中预选将完成的发现发布到 PR;请参阅[将发现发布到 Pull Request](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request)。需要 Claude Code v2.1.227 或更高版本
345 * `--max-findings <n>`、`--max-findings all` 或 `--max-findings default`:最多报告 `n` 个发现,或使用 `all` 报告所有发现,以代替审查的常规数量限制。后续审查会重用您输入的值,直到您传递 `--max-findings default`。需要 Claude Code v2.1.288 或更高版本
346
347 当您为 GitLab merge request 传递 `--comment` 时,Claude Code 通过 GitLab 的 `glab` CLI 发布发现。需要 Claude Code v2.1.257 或更高版本。当 `glab` 未安装时,Claude 在终端中打印发现。
348 80
349 将 merge request 作为其 URL 或 `!123` 引用传递。Claude Code 仅当检出的源在 `gitlab.com` 上时才将裸数字或分支名称视为 merge request。在自管理的 GitLab 实例上,传递 URL 或 `!123` 形式。81默认情况下,Code Review 专注于正确性:会破坏生产的错误,而不是格式偏好或缺失的测试覆盖。要更改其标记的内容,请[向仓库添加指导文件](/docs/zh-CN/code-review-customize)。
350 </Step>
351 82
352 <Step title="继续工作">83审查在 Anthropic 基础设施上分四个阶段运行:
353 审查作为具有自己上下文窗口的后台[子代理](/docs/zh-CN/sub-agents)运行,因此它不会填充您的对话。发现在审查完成时到达您的对话。
354 </Step>
355 84
356 <Step title="根据发现采取行动">851. **查找**:多个 Agent 并行检查 diff 和周围代码。
357 要求 Claude 修复审查发现的内容。如果您传递了 `--fix` 或 `--comment`,审查已经应用或发布了其发现。862. **验证**:验证步骤对照代码检查候选发现,并过滤掉误报。
358 </Step>873. **排序**:剩余的发现经过去重并按严重程度排序。
359</Steps>884. **发布**:审查将其结果发布到 Pull Request 上。
360 89
361Claude 在这两个运行中都将发现作为文本报告在回复中,即使主机应用程序请求发现列表:90每次审查都会在 Pull Request 上留下以下内容:
362 91
363* 在终端会话中,其中 `/code-review` 作为[分叉子代理](/docs/zh-CN/skills#run-skills-in-a-subagent)运行审查92* **发现**:相关代码行上的内联评论,并在审查正文中附带摘要
364* 在带有文本或 JSON 输出的 `-p` 运行中93* **检查运行**:名为 **Claude Code Review**,其[详细信息](/docs/zh-CN/code-review-pull-requests#check-run-output)中列出了各项发现。检查运行不会以失败结束。
94* **未发现问题时**:检查运行的标题显示 **Code review found no issues**,Claude 也会在 Pull Request 上发布相同的简短说明
365 95
366在请求发现列表的主机应用程序中,例如[桌面应用](/docs/zh-CN/desktop#review-your-code),Claude 通过[`ReportFindings` 工具](/docs/zh-CN/tools-reference)报告审查的发现。Claude Code 将报告呈现为发现列表,每个条目显示文件位置、单句摘要,以及当发现带有类别标签时显示的类别标签,例如 `correctness`。主机请求在每个 effort 级别都适用,需要 Claude Code v2.1.218 或更高版本。96Code Review 会选择运行审查所用的 Claude 模型,其管理设置中不提供模型选择。要让审查更深入或更轻量,请更改[审查级别](#review-levels)。
367 97
368当 Claude 稍后在会话中修复报告的发现时,它会再次报告它们,Claude Code 将更新的发现列表中的每个发现标记为已修复、已跳过或无需更改。98Owner 启用 Code Review 后,每个仓库都有一个设置,用于指定[审查的运行时机](/docs/zh-CN/code-review-setup#set-when-reviews-run):在 Pull Request 打开时运行一次、每次推送后运行,或仅在请求时运行。无论选择哪一项,对仓库具有写入权限的人员都可以在 Pull Request 上评论 `@claude review` 来[启动审查](/docs/zh-CN/code-review-pull-requests#comment-commands)。
369 99
370<h3 id="what-the-review-reads-and-edits">100<h3 id="review-levels">
371 审查读取和编辑的内容101 审查级别
372</h3>102</h3>
373 103
374审查遵循您的 `CLAUDE.md`,就像任何 Claude Code 会话一样,但它不读取[`REVIEW.md`](#review-md)。后台审查在您的会话的[检查点](/docs/zh-CN/checkpointing#subagent-edits-not-restored)之外应用其 `--fix` 编辑,因此 `/rewind` 不会撤销它们;使用 git 来恢复它们。当审查[在前台运行](#run-in-the-foreground)时,它在您自己的回合期间编辑您的工作树,因此 `/rewind` 照常恢复其编辑。104审查级别决定每次审查的深入程度,审查越深入,成本越高:
375 105
376<h3 id="tune-effort-and-arguments">106* **Quick**:较轻量的检查。速度最快,成本最低。
377 调整工作量和参数107* **Standard**:在深度、速度和成本之间取得平衡。默认级别。
378</h3>108* **Deep**:最深入的检查。耗时最长,成本最高。
379
380传递一个 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)以权衡覆盖范围和置信度。在 `low` 级别,审查报告它最有信心的发现,因此您看到更少的误报。从 `medium` 到 `max`,审查会扩大覆盖范围。
381
382当您不输入级别时,审查重用您上次输入的 `low` 到 `max` 的级别,即使在较早的会话中,Claude Code 显示一个通知,例如 `Reusing high effort, the level you typed last time`。输入一个级别,例如 `/code-review high`,以更改后续运行重用的内容;您在非交互式 `-p` 运行中传递的级别不会更新它。`ultra` 既不更新也不使用记住的级别。如果您从未输入过级别,审查使用会话的当前工作量。在 v2.1.223 之前,没有级别的 `/code-review` 总是使用会话的当前工作量。
383
384在工作量级别和标志之后,Claude Code 以两种方式之一读取行的其余部分:
385
386* **不使用 `ultra`**:左边的所有内容都是审查目标,即使它以另一个命令名称开头。`/code-review /fix-issue 123` 使用 `/fix-issue 123` 作为目标文本进行审查,而不是将 `/fix-issue` 作为第二个[堆叠技能](/docs/zh-CN/skills#pass-arguments-to-skills)加载。在 v2.1.218 之前,堆叠在 `/code-review` 之后的命令作为其自己的技能展开。
387* **使用 `ultra`**:Claude Code 读取单个单词作为基础分支或 PR 编号,并将不命名分支或 PR 的较长文本转换为[附加到审查的注释](/docs/zh-CN/ultrareview#pass-a-request-in-plain-words)。`/code-review ultra check my auth changes` 审查您的当前分支,Claude 将发现与您的注释相关联。
388
389<h3 id="run-in-the-foreground">
390 在前台运行
391</h3>
392
393审查默认在后台运行;在 v2.1.218 之前,它在您的对话中运行。在以下情况下它在前台运行:
394 109
395* 您在较早的审查仍在进行时再次运行 `/code-review`110Owner 可以[为组织选择一个级别](/docs/zh-CN/code-review-setup#set-the-default-review-level),也可以为单个仓库指定其自己的级别,例如为常规代码库使用 Quick,为关键代码库使用 Deep。有关影响每次审查成本的其他因素,请参阅 [Code Review 成本和使用情况](/docs/zh-CN/code-review-costs)。
396* 您以非交互模式运行它,使用 `-p` 标志或 Agent SDK;Claude Code 等待审查并在响应中包含发现,除了 `ultra`,它[不等待云审查](/docs/zh-CN/ultrareview#run-ultrareview-non-interactively)
397* 您将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/zh-CN/env-vars) 设置为 `1`,这也关闭了所有其他后台任务功能
398 111
399<h3 id="let-claude-start-the-review">112<h3 id="what-a-review-can-access">
400 让 Claude 启动审查113 审查可以访问的内容
401</h3>114</h3>
402 115
403Claude 可以自己启动 `/code-review`。要求它以纯语言审查您的更改,它可以在不输入命令的情况下运行技能,[计划任务](/docs/zh-CN/scheduled-tasks)以 `/code-review` 作为其提示运行审查。116审查通过 Owner [在设置期间安装](/docs/zh-CN/code-review-setup#turn-on-code-review)的 Claude GitHub App 访问您的仓库:
404 117
405计划任务永远不会启动[云审查](#escalate-to-ultrareview),因此计划 `/code-review` 不带 `ultra` 参数。118* **运行位置**:在 Anthropic 基础设施上的托管环境中运行。审查不会在[自托管环境](/docs/zh-CN/self-hosted-environments)中运行。
119* **读取和写入的内容**:在审查过程中,对仓库的访问是只读的,审查不会推送提交。在 Pull Request 上,它会发布评论和[检查运行](/docs/zh-CN/code-review-pull-requests#check-run-output),解决自己之前的评论线程,并可以用 👀 回应评论命令。该应用本身拥有由其他 Claude 功能共享的[更广泛的权限集](/docs/zh-CN/github-actions#github-app-permissions)。
120* **检查代码的方式**:审查通过阅读 diff 和周围代码进行,不会构建或运行您的代码。
406 121
407要在保持 `/code-review` 可供您输入的同时停止 Claude 和计划任务启动审查,请向[设置文件](/docs/zh-CN/settings#where-settings-live)(例如 `~/.claude/settings.json`)添加[`skillOverrides`](/docs/zh-CN/skills#override-skill-visibility-from-settings)条目:122<h3 id="who-controls-a-review">
408 123 谁可以控制审查
409```json theme={null}
410{
411 "skillOverrides": {
412 "code-review": "user-invocable-only"
413 }
414}
415```
416
417在 v2.1.246 之前,Claude 仅在从 Anthropic 获取的功能标志打开它的地方自己启动 `/code-review`。在[不获取功能标志的会话](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)中,`/code-review` 仅在您输入时运行,计划的 `/code-review` 作为纯文本到达 Claude。
418
419<h3 id="escalate-to-ultrareview">
420 升级到 ultrareview
421</h3>124</h3>
422 125
423`/code-review ultra --fix` 在云中运行更深入的 [ultrareview](/docs/zh-CN/ultrareview),然后在发现返回到您的会话时将其应用到您的工作树。126* **谁可以启动审查**:在自动运行审查的仓库中,打开 Pull Request 或向其推送都会启动审查,[草稿和 fork 除外](/docs/zh-CN/code-review-pull-requests#review-drafts-and-pull-requests-from-forks)。[评论命令](/docs/zh-CN/code-review-pull-requests#comment-commands)只有在来自对仓库具有写入权限的人员时才会启动审查。
424 127* **遵循哪些指令**:来自基础分支或默认分支的 `REVIEW.md`,[绝不会来自 Pull Request 自身的更改](/docs/zh-CN/code-review-customize#which-branch-review-md-is-read-from)。
425Ultrareview 使用其自己的范围:您当前的分支与存储库的默认分支,加上工作树中的任何未提交和暂存的更改。对于命名为凭证或密钥的未提交文件更改,例如 `.env` 和 `*.tfvars` 文件,Claude Code 遵循[将本地存储库上传到云会话](/docs/zh-CN/claude-code-on-the-web#send-local-repositories-without-github)的规则。传递分支名称,例如 `/code-review ultra develop`,以与不同的基础进行比较。
426 128
427当目标是 `github.com` pull request 时,您可以让 Claude[将完成的发现发布到 PR](/docs/zh-CN/ultrareview#post-findings-to-the-pull-request)作为来自您 GitHub 账户的评论。需要 Claude Code v2.1.227 或更高版本。129<h2 id="compare-ways-to-get-a-review">
428 130 比较获取审查的方式
429<Note>131</h2>
430 Ultrareview 需要使用 claude.ai 账户进行身份验证,在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用,对启用了零数据保留或应用了 [HIPAA 配置](/docs/zh-CN/hipaa-setup)的组织也不可用。当 ultrareview 不可用时,`/code-review ultra` 在您的会话中运行本地审查。
431</Note>
432 132
433要从脚本或 CI 作业运行云审查,请使用 [`claude ultrareview` 子命令](/docs/zh-CN/ultrareview#run-ultrareview-non-interactively),它会等待发现并将其打印到 stdout。133要找出您可以使用的选项,请根据您的套餐和代码托管平台查看 **谁可以使用** 一列:
434 134
435该命令在 v2.1.147 之前被命名为 `/simplify`,当时它默认应用修复。`/simplify` 运行单独的仅清理审查,应用修复而不寻找错误。如果您为错误查找编写了 `/simplify` 脚本,请切换到 `/code-review --fix`。135| 选项 | 启动审查的方式 | 运行位置 | 谁可以使用 |
136| :- | :- | :- | :- |
137| [Code Review](#how-reviews-work) | 按各仓库设置的 Pull Request 活动,或 `@claude review` 评论 | Anthropic 基础设施 | 拥有 GitHub 仓库、使用 Team 或 Enterprise 套餐的组织,在 Owner 启用后即可使用 |
138| [`/code-review`](/docs/zh-CN/code-review-local) | 您在自己的分支上运行该命令 | 您的 Claude Code 会话 | 任何人,任何套餐 |
139| [Ultrareview](/docs/zh-CN/ultrareview) | 您从 Claude Code 启动 | 云沙箱 | 需要使用 claude.ai 账户登录。有关不可用的情况,请参阅 [Ultrareview](/docs/zh-CN/ultrareview) |
140| 在您自己的 CI 中运行 Claude,使用 [GitHub Actions](/docs/zh-CN/github-actions) 或 [GitLab CI/CD](/docs/zh-CN/gitlab-ci-cd) | 您的流水线事件,例如每个 Pull Request 或 merge request | 您自己的 CI 运行器 | 在 GitHub 或 GitLab 上拥有 Claude API 密钥或云提供商凭据的任何人 |
141| 您自己的审查器,作为[子代理](/docs/zh-CN/sub-agents)或 [skill](/docs/zh-CN/skills) | 您或 Claude 在会话中调用它 | 您运行 Claude Code 的任何位置 | 任何编写了审查器的人 |
436 142
437<h2 id="related-resources">143<h2 id="related-resources">
438 相关资源144 相关资源
439</h2>145</h2>
440 146
441* [Commands](/docs/zh-CN/commands):在本地 Claude Code 会话中运行 `/code-review` 以在推送前检查差异147* [GitHub Enterprise Server](/docs/zh-CN/github-enterprise-server):在自托管 GitHub 实例上使用 Code Review
442* [GitHub Actions](/docs/zh-CN/github-actions):在您自己的 GitHub Actions 工作流中运行 Claude,以实现超越代码审查的自定义自动化148* [GitHub App 权限](/docs/zh-CN/github-actions#github-app-permissions):Claude GitHub App 请求的完整权限集
443* [GitLab CI/CD](/docs/zh-CN/gitlab-ci-cd):GitLab 管道的自托管 Claude 集成
444* [Memory](/docs/zh-CN/memory):`CLAUDE.md` 文件如何在 Claude Code 中工作
445* [Analytics](/docs/zh-CN/analytics):跟踪超越代码审查的 Claude Code 使用情况
446* [How Anthropic secures its AI-native software development lifecycle](https://claude.com/blog/how-anthropic-secures-its-ai-native-software-development-lifecycle):自动化审查如何作为 Anthropic 安全开发流程的一个层级149* [How Anthropic secures its AI-native software development lifecycle](https://claude.com/blog/how-anthropic-secures-its-ai-native-software-development-lifecycle):自动化审查如何作为 Anthropic 安全开发流程的一个层级