当团队规模超过 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 仓库中:

  1. 进入 Settings → Secrets and variables → Actions
  2. 点击 New repository secret
  3. Name: ANTHROPIC_API_KEY
  4. Value: 粘贴你的 API Key
  5. 保存

五、测试流水线

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 且分支名称正确
评论重复发布 未删除旧评论 检查脚本中的删除逻辑是否生效

九、优化建议

  1. 缓存依赖:使用 actions/cache 缓存 pip 包,加速 CI
  2. 限制审查范围:只审查 .py.js.ts 等关键文件
  3. 差异化模型:小 PR 用 Haiku(省成本),大 PR 用 Sonnet(保质量)
  4. 添加审核门槛:严重问题时让 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,评论区获取链接。欢迎分享你的使用体验。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐