用 AI Agent 搭一个自动化 PR Review 流水线
适用场景
- 团队 5-20 人,PR review 是瓶颈
- 想让 AI 做第一轮审查,人只看 AI 标记的问题
- 需要 CI 阻断有严重问题的 PR(而非只评论)
架构
PR 提交 → GitHub Actions 触发
├─ CodeRabbit Bot 自动评论(逐行 + 摘要)
├─ Claude Code 自定义规则审查(安全 / 性能 / 规范)
└─ 严重问题 → 设置 commit status = failed → 阻断合并
第一步:CodeRabbit 接入
CodeRabbit 是开箱即用的 GitHub App,装上就自动 review。
- 去 coderabbit.ai 安装 GitHub App
- 选择要 review 的仓库
- 在仓库根目录加
.coderabbit.yml:
reviews:
auto_review:
enabled: true
drafts: false
path_filters:
- "!**/*.lock"
- "!**/dist/**"
instructions: |
- 用中文评论
- 重点关注 SQL 注入、XSS、敏感信息泄露
- 不要评论代码风格(用 ESLint 管)
- 性能问题只在 O(n²) 以上才报
- 提交一个 PR 测试,CodeRabbit 会在 30 秒内出评论
第二步:Claude Code 自定义规则
CodeRabbit 是通用审查,团队特定规范用 Claude Code 补。
创建 .github/workflows/ai-review.yml:
name: AI Review
on:
pull_request:
types: [opened, synchronize]
jobs:
claude-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed files
id: changed
run: |
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }})
echo "files=$files" >> $GITHUB_OUTPUT
- name: Claude Code Review
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
审查以下文件的改动,重点关注:
1. 是否有未处理的 Promise rejection
2. 是否有 SQL 拼接(而非参数化查询)
3. 是否有 console.log 遗留在生产代码中
4. 是否有 hardcoded 密钥 / token
输出格式:
- 🔴 严重问题(必须修复):文件:行号 + 原因
- 🟡 建议(可选):文件:行号 + 建议
- ✅ 没问题的文件不用提
改动的文件:
${{ steps.changed.outputs.files }}
第三步:严重问题阻断合并
在 review workflow 末尾加 commit status:
- name: Set check status
if: steps.claude-review.outputs.severity == 'critical'
run: |
curl -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.event.pull_request.head.sha }} \
-d '{"state": "failure", "context": "AI Review / Critical Issues", "description": "发现严重问题,请修复后重新提交"}'
在 GitHub 仓库设置 → Branch protection → Require status checks → 添加 AI Review / Critical Issues。
效果
上线一个月后:
| 指标 | 之前 | 之后 |
|---|---|---|
| PR 平均 review 时间 | 8 小时 | 2 小时 |
| 人工 review 评论数 | 15 条/PR | 5 条/PR |
| 合并后发现的 bug | 3 个/周 | 1 个/周 |
| 开发者满意度 | 6/10 | 8/10 |
踩坑记录
- CodeRabbit 免费版限制:开源仓库免费,私有仓库 $24/seat/mo。小团队可只给核心仓库开。
- Claude Code API 成本:每个 PR 约 $0.1-0.5(取决于改动量),月费 $50 以内可控。
- 不要让 AI 阻断全部问题——只阻断安全类严重问题(SQL 注入、密钥泄露),否则开发者会绕过。
- path_filters 很重要——不加的话会 review lock 文件、dist 目录,浪费 API 调用。
- Claude Code Action 需要
fetch-depth: 0——否则 git diff 拿不到完整历史。