用 Cursor + GitHub Actions 搭建自动化代码审查流水线(完整实战)
当团队规模超过 3 人,代码审查就成了开发流程中最耗时的环节之一。人工审查不仅占用大量时间,还容易因为疲劳遗漏关键问题。本文手把手教你用 Cursor Agent 生成一套完整的自动化代码审查流水线,集成 Claude API 和 GitHub Actions,实现每次 PR 自动审查、自动评论、自动生成修复建议。全程代码由 Cursor 编写,你只需复制粘贴即可运行。

一、整体架构
开发者 Push PR → GitHub Actions 触发 → 拉取代码 → 获取 diff → 调用 Claude API → 生成审查报告 → 发布评论到 PR
核心组件:
- Cursor Agent:快速生成 Python 审查脚本
- Claude API:执行代码审查(3.7 Sonnet)
- GitHub Actions:自动化触发和评论
- GitHub Secrets:存储 API Key
二、准备工作
2.1 获取 Claude API Key
Anthropic API Key 可通过官方申请(需境外信用卡)。若无法自行办理,可参考 gpt108.com(仅作信息分享)。
2.2 在 Cursor 中生成脚本
打开 Cursor,新建项目文件夹,在 Agent 对话框中输入:
请帮我创建一个 Python 脚本 code_reviewer.py,功能:
1. 接收一个参数:PR 的 diff 文件路径
2. 读取 diff 内容
3. 调用 Claude API(claude-3-7-sonnet-20250219)进行代码审查
4. 审查内容包括:安全漏洞、逻辑错误、性能问题、代码规范
5. 输出 Markdown 格式的审查报告
6. 使用环境变量读取 ANTHROPIC_API_KEY
Cursor 会在几秒内生成完整脚本。如果遇到报错,直接把错误信息贴回对话框,Agent 会自动修复。
2.3 生成的脚本示例
#!/usr/bin/env python3
# code_reviewer.py - 自动化代码审查脚本
import os
import sys
import anthropic
client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
def load_diff(file_path: str) -> str:
with open(file_path, "r", encoding="utf-8") as f:
return f.read()
def review_code(diff: str) -> str:
prompt = f"""你是一位资深代码审查专家。请审查以下 PR 的代码变更,输出结构化报告。
审查维度:
1. 🔴 严重问题(安全漏洞、逻辑错误、性能瓶颈)
2. 🟡 改进建议(可读性、最佳实践、潜在的边缘情况)
3. 🟢 亮点(如果有)
要求:
- 每个问题标注文件和大致行号
- 输出 Markdown 格式
- 如果无严重问题,明确标注"✅ 未发现严重问题"
变更内容(diff):
{diff}
"""
response = client.messages.create(
model="claude-3-7-sonnet-20250219",
max_tokens=2000,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
if __name__ == "__main__":
if len(sys.argv) < 2:
print("用法: python code_reviewer.py <diff_file>")
sys.exit(1)
diff = load_diff(sys.argv[1])
if not diff.strip():
print("无代码变更")
sys.exit(0)
report = review_code(diff)
print(report)
三、创建 GitHub Actions 工作流
在项目根目录创建 .github/workflows/ai-review.yml:
name: AI Code Review
on:
pull_request:
types: [opened, synchronize, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install anthropic
- name: Get PR diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > pr.diff
- name: Run AI review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: python code_reviewer.py pr.diff > review.md
- name: Post review comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = fs.readFileSync('review.md', 'utf8');
const prNumber = context.payload.pull_request.number;
// 删除之前的审查评论(避免重复)
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber
});
const botComment = comments.data.find(c =>
c.user.type === 'Bot' && c.body.includes('AI 审查报告')
);
if (botComment) {
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id
});
}
// 发布新评论
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body: `## 🤖 AI 审查报告\n\n${review}`
});
四、配置 GitHub Secrets
在 GitHub 仓库中:
- 进入 Settings → Secrets and variables → Actions
- 点击 New repository secret
- Name:
ANTHROPIC_API_KEY - Value: 粘贴你的 API Key
- 保存
五、测试流水线
5.1 创建测试 PR
git checkout -b test/ai-review
echo "console.log('hello')" > test.js
git add .
git commit -m "test: 添加测试文件"
git push origin test/ai-review
然后在 GitHub 上创建 PR。
5.2 预期结果
几秒钟后,GitHub Actions 会自动运行,并在 PR 评论区发布审查报告,例如:
## 🤖 AI 审查报告
### 🔴 严重问题
- **文件 test.js 第 1 行**:使用 `console.log` 生产环境建议改用日志库
### 🟡 改进建议
- 添加文件末尾换行符
- 考虑使用 `'use strict'` 模式
✅ 未发现安全漏洞或逻辑错误
六、进阶功能:自动修复简单问题
让 Cursor 在脚本中增加自动修复能力。在 Agent 中输入:
请修改 code_reviewer.py,增加一个 --fix 参数。当启用时:
1. 调用 Claude(使用 haiku 模型降低 80% 成本)分析可自动修复的问题
2. 生成 unified diff 格式的补丁文件
3. 保存为 fix.patch,供开发者手动应用
生成的增强版代码片段:
def generate_fix(diff: str) -> str:
"""生成自动修复补丁"""
prompt = f"""分析以下 diff,仅针对以下类型的问题生成 unified diff 补丁:
- 空白符不规范
- 缺少文件末尾换行
- 简单的语法错误(如缺少分号)
不要改变逻辑。如果无自动修复项,输出空。
{diff}
"""
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1500,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
七、成本与性能参考
| PR 规模 | Diff 行数 | Token 消耗 | 成本(Claude 3.7) | 耗时 |
|---|---|---|---|---|
| 小型(5 文件,50 行) | ~300 | 4000 | $0.02 | 5s |
| 中型(10 文件,200 行) | ~1200 | 10000 | $0.05 | 12s |
| 大型(20 文件,800 行) | ~5000 | 30000 | $0.15 | 30s |
对于每月 100 个 PR 的活跃团队,月成本约 $5-15,远低于人工审查的时间成本。
八、常见问题与解决
| 问题 | 原因 | 解决方法 |
|---|---|---|
Actions 报错 No module named 'anthropic' |
依赖未安装 | 检查 workflow 中是否有 pip install anthropic |
| PR 评论不显示 | 权限不足 | 确保 workflow 有 pull-requests: write 权限 |
| API 返回 401 | Key 无效或过期 | 检查 GitHub Secrets 中的 Key 是否正确 |
| 审查内容为空 | diff 获取失败 | 确认 fetch-depth: 0 且分支名称正确 |
| 评论重复发布 | 未删除旧评论 | 检查脚本中的删除逻辑是否生效 |
九、优化建议
- 缓存依赖:使用
actions/cache缓存 pip 包,加速 CI - 限制审查范围:只审查
.py、.js、.ts等关键文件 - 差异化模型:小 PR 用 Haiku(省成本),大 PR 用 Sonnet(保质量)
- 添加审核门槛:严重问题时让 CI 失败,阻止合并
# 在 workflow 中添加
- name: Check for critical issues
run: |
if grep -q "🔴 严重问题" review.md; then
echo "发现严重问题,请修复后重新提交"
exit 1
fi
十、总结
通过 Cursor Agent + Claude API + GitHub Actions,不到 30 分钟就可以搭建一套全自动的代码审查流水线。它能:
- ✅ 在 PR 创建/更新时自动触发
- ✅ 分析代码变更并生成结构化报告
- ✅ 直接评论到 PR 中,无需切换工具
- ✅ 成本可控,适合个人和团队
关键是,所有代码都可以由 Cursor Agent 自动生成,你只需要说清楚需求,剩下的交给 AI。这也是 2026 年 AI 编程的典型范式——人类定义目标,AI 完成实现。
十一、参考来源
本文所需的 Claude API Key 可通过 gpt108.com 获取(支持支付宝/微信,自助充值,无需提供密码),仅作技术方案参考。
完整代码已整理至 GitHub Gist,评论区获取链接。欢迎分享你的使用体验。
更多推荐



所有评论(0)