Code Review 自动化代码审查插件
Code Review 插件使用多个并行的专业 Agent 自动审查 Pull Request,通过信心度评分系统过滤误报,确保只报告真正重要的高质量问题。
概述
Code Review 插件是 Claude Code 官方提供的自动化 PR 审查工具。它采用独特的多 Agent 并行架构,结合信心度评分机制,能够高效、准确地发现代码问题。
核心特性
| 特性 | 说明 |
|---|---|
| 多 Agent 并行 | 4 个 Agent 同时工作,加速审查过程 |
| 信心度评分 | 0-100 分评分系统,仅报告 ≥80 分的问题 |
| CLAUDE.md 合规 | 自动检查是否符合项目编码规范 |
| 内联评论 | 直接在 PR 中发表行级评论 |
| 智能建议 | 小修复(≤5行)提供可直接提交的代码建议 |
工作原理
mermaid
graph TD
A[/code-review] --> B[预检查<br/>Haiku Agent]
B --> C{PR 可审查?}
C -->|否| D[停止处理]
C -->|是| E[发现 CLAUDE.md<br/>Haiku Agent]
E --> F[PR 摘要<br/>Sonnet Agent]
F --> G[并行审查]
G --> H[2x Sonnet<br/>CLAUDE.md 合规]
G --> I[2x Opus<br/>Bug 检测]
H --> J[问题验证<br/>并行 Subagents]
I --> J
J --> K[过滤低信心问题]
K --> L[发表评论]
style A fill:#e3f2fd
style G fill:#fff3e0
style L fill:#c8e6c9安装与配置
插件安装
bash
# 安装 code-review 插件
/plugin install code-review@claude-plugins-official前置要求
- GitHub CLI:需要安装并认证
gh命令行工具 - MCP GitHub 工具:用于发表内联评论
bash
# 安装 GitHub CLI
brew install gh # macOS
# 或
sudo apt install gh # Ubuntu
# 认证 GitHub
gh auth login目录结构
plugins/code-review/
├── .claude-plugin/
│ └── plugin.json
├── README.md
└── commands/
└── code-review.md配置文件 (plugin.json)
json
{
"name": "code-review",
"description": "Automated code review for pull requests using multiple specialized agents with confidence-based scoring",
"version": "1.0.0",
"author": {
"name": "Boris Cherny",
"email": "boris@anthropic.com"
}
}核心命令
/code-review
审查当前分支的 Pull Request。
语法:
bash
# 在终端输出审查结果
/code-review
# 直接在 PR 中发表内联评论
/code-review --comment允许的工具:
yaml
allowed-tools:
- Bash(gh issue view:*)
- Bash(gh search:*)
- Bash(gh issue list:*)
- Bash(gh pr comment:*)
- Bash(gh pr diff:*)
- Bash(gh pr view:*)
- Bash(gh pr list:*)
- mcp__github_inline_comment__create_inline_comment7 步审查流程
Step 1: 预检查
执行者:Haiku Agent(快速、低成本)
检查项目:
- PR 是否已关闭?
- PR 是否是草稿状态?
- PR 是否已被其他人评审?
- PR 是否标记为不需要审查?
如果任何条件为真:停止处理,输出原因。
mermaid
graph LR
A[预检查] --> B{已关闭?}
B -->|是| C[停止]
B -->|否| D{草稿?}
D -->|是| C
D -->|否| E{已评审?}
E -->|是| C
E -->|否| F{无需审查?}
F -->|是| C
F -->|否| G[继续]
style C fill:#ffcdd2
style G fill:#c8e6c9Step 2: CLAUDE.md 发现
执行者:Haiku Agent
任务:
- 查找项目根目录的 CLAUDE.md
- 查找修改文件目录中的 CLAUDE.md
- 返回所有相关的编码规范文件路径
示例输出:
Found CLAUDE.md files:
- /CLAUDE.md (root)
- /src/CLAUDE.md
- /src/components/CLAUDE.mdStep 3: PR 摘要
执行者:Sonnet Agent
任务:
- 查看 PR 的所有变更
- 生成简洁的变更摘要
- 识别关键修改区域
示例输出:
markdown
## PR Summary
This PR adds user authentication:
- New `AuthService` class in `src/services/`
- Login/logout endpoints in `src/api/`
- JWT token handling
- Unit tests for auth flowStep 4: 并行审查
4 个 Agent 同时工作:
| Agent | 模型 | 任务 |
|---|---|---|
| Sonnet #1 | Sonnet | CLAUDE.md 合规检查(前半部分文件) |
| Sonnet #2 | Sonnet | CLAUDE.md 合规检查(后半部分文件) |
| Opus #1 | Opus | Bug 检测(前半部分文件) |
| Opus #2 | Opus | Bug 检测(后半部分文件) |
CLAUDE.md 合规检查:
- 对比修改代码与 CLAUDE.md 指南
- 只考虑与文件路径共享的 CLAUDE.md
- 检查命名约定、代码风格、架构模式
Bug 检测:
- 扫描明显的 bugs
- 关注逻辑错误、类型问题、安全漏洞
- 仅在 diff 中进行,不读取额外上下文
Step 5: 问题验证
执行者:多个并行 Subagents
任务:对每个发现的问题进行二次验证
| 问题类型 | 验证 Agent |
|---|---|
| Bug / 逻辑问题 | Opus |
| CLAUDE.md 违规 | Sonnet |
验证过程:
- 重新阅读相关代码
- 确认问题确实存在
- 评估信心度分数
Step 6: 问题过滤
规则:
- 移除未通过验证的问题
- 移除信心度 < 80 的问题
- 保留高信号问题列表
排除的误报类型:
| 类型 | 说明 |
|---|---|
| 预先存在问题 | PR 之前就存在的问题 |
| Linter 可检测 | ESLint、TypeScript 等工具能捕获的 |
| 风格偏好 | 纯粹的个人偏好差异 |
| 需要外部上下文 | 需要额外信息才能验证的 |
| 显式沉默 | CLAUDE.md 中明确豁免的 |
Step 7: 发表评论
无问题时:
✅ No issues found
Code review completed. No significant issues were identified.有问题时:
对每个问题使用 mcp__github_inline_comment__create_inline_comment 发表内联评论:
- 小修复(≤5行):包含可直接提交的代码建议
- 大修复:提供高层描述和修复提示
内联评论示例:
markdown
⚠️ **Potential null pointer exception**
The `user` object could be null here if authentication fails.
**Confidence: 92/100**
**Suggested fix:**
```suggestion
if (user == null) {
throw new AuthenticationError('User not found');
}
const email = user.email;
---
## 信心度评分系统
### 评分标准
| 分数范围 | 含义 | 处理方式 |
|----------|------|----------|
| **90-100** | 确定的严重问题 | 必须报告 |
| **80-89** | 重要问题需要关注 | 报告 |
| **60-79** | 可能是问题 | 不报告(可能误报) |
| **40-59** | 不确定 | 不报告 |
| **0-39** | 很可能是误报 | 不报告 |
### 评分因素
```mermaid
graph TD
A[信心度评分] --> B[确定性]
A --> C[严重性]
A --> D[可验证性]
B --> B1[代码明确表明问题]
B --> B2[有多个证据支持]
C --> C1[安全漏洞: +20]
C --> C2[数据丢失风险: +15]
C --> C3[功能错误: +10]
D --> D1[可复现: +10]
D --> D2[有测试失败: +15]
style A fill:#e3f2fd示例评分
| 问题 | 信心度 | 原因 |
|---|---|---|
| SQL 注入漏洞 | 95 | 明确的安全风险,可验证 |
| 空指针异常 | 88 | 代码路径可追踪,可能触发 |
| 命名不规范 | 45 | 主观,非功能性 |
| 可能的性能问题 | 60 | 需要实际测量验证 |
CLAUDE.md 集成
CLAUDE.md 的作用
CLAUDE.md 是项目的编码规范文件,code-review 插件会:
- 自动发现所有相关的 CLAUDE.md
- 根据文件路径匹配规则
- 检查代码是否符合规范
CLAUDE.md 示例
markdown
# Project Coding Standards
## Naming Conventions
- Use camelCase for variables and functions
- Use PascalCase for classes and types
- Prefix interfaces with 'I' (e.g., IUserService)
## Error Handling
- Always use try-catch for async operations
- Log errors before re-throwing
- Never swallow exceptions silently
## Testing
- Every public method must have unit tests
- Use descriptive test names: `should_doX_when_Y`路径匹配规则
/CLAUDE.md → 适用于所有文件
/src/CLAUDE.md → 适用于 src/ 下的文件
/src/components/CLAUDE.md → 适用于 src/components/ 下的文件实战示例
示例 1:基础代码审查
bash
# 切换到功能分支
git checkout feature/user-auth
# 运行代码审查
/code-review输出示例:
🔍 Code Review Report
## Summary
Reviewed PR #42: Add user authentication
## Issues Found (3)
### 1. SQL Injection Risk (Confidence: 94)
📍 src/api/users.ts:45
The query uses string concatenation instead of parameterized queries.
### 2. Missing Error Handling (Confidence: 85)
📍 src/services/auth.ts:78
Async operation without try-catch block.
### 3. CLAUDE.md Violation (Confidence: 82)
📍 src/utils/helpers.ts:12
Function name uses snake_case instead of camelCase.示例 2:带评论的审查
bash
# 审查并发表 PR 评论
/code-review --comment结果:
- 在 GitHub PR 页面直接看到内联评论
- 每个问题标注在具体代码行
- 包含信心度分数和修复建议
示例 3:审查特定 PR
bash
# 先获取 PR 信息
gh pr view 123
# 切换到对应分支
gh pr checkout 123
# 运行审查
/code-review --comment最佳实践
使用建议
| 场景 | 建议 |
|---|---|
| 日常开发 | 使用 /code-review 本地预览 |
| 正式审查 | 使用 /code-review --comment 发表评论 |
| 大型 PR | 考虑拆分 PR 以获得更好的审查效果 |
| 敏感代码 | 结合人工审查,不完全依赖自动化 |
提高审查质量
- 维护好 CLAUDE.md:清晰的编码规范帮助更准确的合规检查
- 保持 PR 小而专注:小 PR 审查更准确
- 提供 PR 描述:帮助 Agent 理解变更意图
- 配置 .gitignore:排除不需要审查的文件
处理审查结果
mermaid
graph TD
A[收到审查结果] --> B{信心度 ≥ 90?}
B -->|是| C[立即修复]
B -->|否| D{信心度 80-89?}
D -->|是| E[评估后决定]
D -->|否| F[通常可忽略]
C --> G[重新审查]
E --> G
style C fill:#ffcdd2
style E fill:#fff3e0
style F fill:#c8e6c9常见问题
Q: 为什么有些明显的问题没有被发现?
A: 可能原因:
- 问题需要更多上下文才能识别
- 问题的信心度低于 80 被过滤
- 属于 Linter 应该捕获的问题
Q: 如何减少误报?
A:
- 完善 CLAUDE.md 中的规则说明
- 在 CLAUDE.md 中明确豁免某些模式
- 反馈误报案例以改进插件
Q: 审查很慢怎么办?
A:
- 确保网络连接稳定
- 考虑拆分大型 PR
- 使用
--comment模式异步处理
Q: 如何只审查特定文件?
A: 目前不支持。建议创建只包含相关文件的 PR。
总结
Code Review 插件提供了高质量的自动化 PR 审查:
- 多 Agent 并行 - 4 个专业 Agent 同时工作
- 信心度过滤 - 仅报告 ≥80 分的高质量问题
- CLAUDE.md 集成 - 自动检查编码规范合规
- 内联评论 - 直接在 PR 中标注问题
结合人工审查使用,可以显著提高代码质量和审查效率。
参考资源
- GitHub 源码 - 官方插件仓库
- GitHub CLI 文档 - gh 命令行工具
- CLAUDE.md 指南 - 编码规范文件
本文档基于 code-review 插件 v1.0.0 编写