代码审查(Code Review)是保障软件质量的最后一道防线,但在实际开发中常陷入两难:严格审查耗费大量人力,流于形式又形同虚设。随着 AI 编码助手的普及,“让 AI 来审查代码”成为一种诱人的可能。然而,大多数 AI 审查停留在对 diff 的浅层分析,误报率高、缺乏上下文,无法真正融入团队工作流。
Anthropic 在 Claude Code 中内置的 Code Review Skill 给出了一个极具启发性的答案。它并非简单地让一个模型“读一下 diff 并给意见”,而是构建了一套完整的多代理、多维度、带置信度投票的自动化审查流程。本文将深入拆解这份官方 Skill 的提示词设计,分析其功能逻辑、工程价值,并探讨它对真实团队开发工作的启发。
一、Skill 的总体架构:一个受控的自动化审查闭环
从 Skill 元数据看,它被限定只能通过 gh 命令与 GitHub 交互(查看 Issue、PR,发布评论等),并关闭了“模型自行调用”的开关(disable-model-invocation: false),意味着审查过程完全受控于这套流程定义。其核心步骤如下:
- 资格预审:检查 PR 是否已关闭、为草稿、过于简单或已被自己审查过。
- 上下文准备:收集项目规范文件(CLAUDE.md)及 PR 涉及的目录级规范。
- 生成变更摘要:快速理解 PR 的意图与范围。
- 五路并行深度审查:派出 5 个独立的代理(Agent),分别从规范合规、浅层 Bug、Git 历史、历史 PR 评论、代码注释五个维度独立审查。
- 置信度评分与过滤:对发现的每个问题,由额外代理给出 0-100 的信心分,只保留 ≥80 的高质量问题。
- 复审资格确认:防止在审查过程中 PR 状态发生变化。
- 格式化评论发布:用严格定义的 Markdown 格式将问题列在 PR 下方。
整条流程体现了一种工程化 AI 审查的范式:将庞大、模糊的“代码审查”任务拆解为多个可定义、可评估、可抑制误报的子任务,再用投票机制筛选出真正值得人工关注的问题。
二、五路审查代理:多维度扫描的智慧
传统人工审查往往受限于审查者当下的注意力:可能过于关注风格而忽略逻辑,或遗漏与历史代码的一致性。这份 Skill 并行启动的 5 个 Sonnet 代理(体现对深度推理的重视)各自专注于一个独立维度,形成审查的“五个镜头”:
1. 规范合规检查(Agent #1)
以项目根目录及变更文件所在目录的 CLAUDE.md 为准则,审查变更是否符合团队对 Claude 写代码时的约定。这些规范可能包含架构约束、命名惯例、错误处理策略等。代理会识别违反规范的代码,并标注“CLAUDE.md 指出……”。
价值:让 AI 不仅能审查通用代码质量,还能精准执行团队的专属规范,实现自动化规范的落地。规范文件在此充当了“可执行的审查规则”。
2. 浅层 Bug 扫描(Agent #2)
仅阅读 PR 变更本身,避免过度读取上下文,专注寻找明显逻辑错误。明确要求忽略小问题和吹毛求疵,只报告“大 bug”。同时提示常见误报类型(如 lint 能捕获的问题、类型错误、格式问题)应直接排除。
价值:用“窄而深”的思路模仿人类快速扫读 diff 时发现低级错误的能力,避免代理陷入上下文噪声。这种限制信息摄入以提升信号纯度的做法值得思考。
3. Git 历史归因分析(Agent #3)
通过 git blame 和提交历史,理解被修改代码的演进脉络。一个看似无害的改动,结合历史可能暴露出:曾经故意引入的 workaround 被破坏、修复过的 Bug 再次出现、与原作者意图冲突等。
价值:历史上下文是人工审查的盲区,因为没有人能记住每一行代码的变更理由。让 AI 阅读 blame 信息,实质上是为审查加入时间维度的智慧。
4. 历史 PR 评论借鉴(Agent #4)
检索之前触碰过相同文件的 PR 及其评论,检查是否有相似问题或讨论在本次 PR 中重现。这种“曾经有人踩过的坑”被自动唤醒,防止团队重复犯错。
价值:将隐性的项目经验转化为显性的检查点。团队知识不再依赖老员工的记忆,而是被持续积累并自动复用。
5. 代码注释一致性校验(Agent #5)
读取修改文件中的注释,确保变更与注释中的约定、TODO、警告等保持一致。例如注释写“此处必须做空值检查”,而新代码删掉了检查,则被标记。
价值:注释常沦为“过时的文档”。这个代理强制将注释提升为有约束力的契约,驱动开发者要么遵守注释,要么更新注释,保持代码与文档的同步。
三、误报压制:0-100 信心评分与 80 分阈值的设计哲学
自动化审查最致命的缺陷是高误报率——当机器 10 次警告里有 9 次是噪音,开发者就会彻底忽略它。该 Skill 设计了精妙的抑制机制:
- 所有 5 个代理发现的“问题”都不直接采纳,而是交由另一批 Haiku 代理(轻量快速)逐个进行置信度评估,从 0(肯定误报)到 100(绝对真实)打分。
- 评分时明确要求代理参考 CLAUDE.md、PR 上下文等,并给出具体评分标准:只有
>=80分(高度确信或绝对确信)的问题才被呈现。 - 低于 80 分的问题会被静默过滤,其中包含了大量伪阳性(如看起来像 bug 但实际不是、pre-existing 问题、lint 级 nitpick)。
工程启示:这个设计等于在“发现候选问题”和“反馈给用户”之间插入了一个高精度过滤器。它让最终输出的每一条评论都具有极高的可信度,从而建立开发者对 AI 审查的信任。把质量交给召回层(代理 1-5),把精度交给排序层(评分代理),正是搜索与推荐系统的经典范式在代码审查领域的复现。
四、实用细节中的严谨性
资格检查的两次执行(步骤 1 与步骤 7)
在耗时最长的审查前后各做一次资格检查,避免审查过程中 PR 被关闭或变为草稿,防止在已失效的 PR 上发布评论。这是对异步工作流中状态一致性的严谨保障。
链接格式的严格规定
Skill 要求输出的文件链接必须包含完整 commit SHA、仓库名、行号范围,并提供上下文行数。这确保 PR 中的链接在 Markdown 渲染后可直接跳转,并给予 reviewer 足够上下文。一个看似微小的格式要求,体现了自动化工具对开发者体验(DX)的极致照顾。
明确排除的误报类型
提示中花费大量篇幅列举什么是“不需要报告的”(lint 可发现、未修改的行、明显意图的变更等),实质是在教育模型什么才是有价值的信息。这比单纯要求“少报告”有效得多。
五、对实际开发工作的启发
这一 Skill 不仅是 Claude Code 的自动化功能,更是一套可被人类团队借鉴的审查方法论。
多维度审查清单
即使不依赖 AI,团队也可将审查分为:架构合规、明显错误、历史一致性、过去踩坑回顾、注释契约五个检查维度。每次 Code Review 时轮流切换视角,大幅降低遗漏率。让项目规范可执行
许多团队拥有编码规范文档,但执行依赖自觉。借鉴 CLAUDE.md 作为审查依据的思路,可开发 lint 规则或自定义脚本,将规范条目映射为自动检查,使规范“活”起来。构建团队审查知识库
历史 PR 评论与 git blame 信息是金矿。可以鼓励开发者在 PR 中引用类似的历史讨论,或建立“常见问题模式库”,让经验被制度化积累而非口口相传。引入置信度机制到人工审查
审查者可以对发现的每个问题标记“严重程度/确信度”,而非同等列出。高确信的阻断性意见优先处理,低确信的改为建议,可减少无意义争论,提升协作效率。自动化审查的定位是“高精度筛选”而非“全量覆盖”
Claude Code Skill 教给我们:宁可只报告 3 个真问题,也不要用 30 个警示淹没开发者。这决定了自动化工具在工程流程中的真正价值是降低信噪比,而不是替代人类判断。
六、局限与展望
尽管设计精巧,该 Skill 仍存在边界:
- 依赖
ghCLI 及 GitHub 生态,通用性受限。 - 审查质量高度依赖 CLAUDE.md 的编写质量,若规范文件缺失或过时,Agent #1 的维度近乎失效。
- 五路代理并行对算力和延迟的要求较高,不太适合实时触发,更适合在 PR 创建后异步执行。
- 没有对运行构建、测试、类型检查等 CI 信号的直接利用(虽然有意回避),这可能使某些需要通过执行才能暴露的逻辑 bug 被遗漏。
未来,这类 Skill 可能演进为 “审查智能体团队”——不同代理负责安全审查、性能回归分析、迁移影响评估等更专业的子领域,最终由协调代理综合输出一份结构化审查报告。人类审查者从“逐行阅读者”变为“审查报告的决策者”,人机协作的边界将被重新定义。
结语
Claude Code 的 Code Review Skill 展示了一个经过缜密工程化思考的 AI 审查方案。它的核心不在于模型能读懂代码,而在于通过任务拆解、多视角并行、置信度投票、上下文编织,构建了一条高信噪比的自动化反馈链路。这份设计哲学,无论对于正在构建 AI 辅助开发工具的工程师,还是希望优化团队审查文化的技术 leader,都有着深刻的参考意义。
自动化不会取代 Code Review 中的人类智慧,但它能替我们筛去 95% 的噪音,留下那 5% 真正需要关注的问题——而这,正是下一代开发工作流的样子。