站点图标 高效码农:前沿AI、IT技术与开发者分享

GitHub代码审查自动化:30分钟搭建AI机器人流水线

把 Code Review 交给机器人:用 GitHub Actions + Cursor CLI 搭一条全自动 PR 审查流水线

写在前面
如果你已经厌倦了在深夜盯着一行行 diff,只为找出那个可能让生产环境崩溃的空指针;如果你希望团队新人也能在第一次提交时就收到清晰、可落地的改进建议,那么这篇指南就是为你准备的。我们将从零开始,在现有 GitHub 仓库里搭一条“机器人审查员”流水线,它会在每一次 Pull Request(PR)打开、更新或重新打开时自动跑起来,只把真正严重的问题拎出来,用一句人话、一个表情符号直接钉在代码行上。
整个过程 30 分钟以内可跑通,不需要买服务器,也不会动你现有分支的代码。


目录

  1. 它能做什么,不能做什么
  2. 原理 3 句话讲清
  3. 10 步搭好流水线
  4. 常见疑问 FAQ
  5. 进阶玩法:让机器人更懂你的团队
  6. 小结 & 下一步

1 它能做什么,不能做什么

它能做 它不做
在 PR 打开时自动跑 不会帮你写业务代码
只报高危 Bug(空指针、SQL 注入、并发问题等) 不会写洋洋洒洒的 10 行评论
用 ✅ 🚨 🔒 表情告诉你严重程度 不会把“代码风格”挂嘴边
发现旧问题已修复后自动打勾 不会重复刷屏
可选:遇到致命问题直接阻止合并 不会动你的主分支

2 原理 3 句话讲清

  1. GitHub Actions 监听 PR 事件 →
  2. Actions 虚拟机里安装 Cursor CLI →
  3. Cursor CLI 读取 diff → 用 AI 逐行扫 → 调 GitHub API 把评论钉在对应行上。

就这么简单。


3 10 步搭好流水线

下面每一步都给出完整 YAML 片段与解释,复制粘贴即可用。

步骤 1:准备仓库

  • 打开浏览器进入你的仓库
  • 新建 .github/workflows/cursor-code-review.yml(文件名随意,但多数人这么叫)。

步骤 2:写入触发条件

name: Cursor Code Review

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

jobs:
  review:
    if: github.event.pull_request.draft == false
    runs-on: ubuntu-latest

说明:草稿 PR 不触发,减少浪费。

步骤 3:声明权限

permissions:
  pull-requests: write   # 发表评论
  contents: read         # 读代码
  issues: write          # 处理相关问题

步骤 4:检出代码

    steps:
      - name: Checkout PR
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}

fetch-depth: 0 拿完整历史,方便 Cursor 做上下文分析。

步骤 5:安装 Cursor CLI

      - name: Install Cursor CLI
        run: |
          curl -fsSL https://cursor.sh/install.sh | bash
          echo "$HOME/.cursor/bin" >> $GITHUB_PATH

步骤 6:配置 Git 身份

      - name: Configure Git
        run: |
          git config user.name "Cursor Agent"
          git config user.email "cursoragent@cursor.com"

步骤 7:让 AI 开始审查

      - name: Run Cursor Review
        env:
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          cursor-agent review \
            --github-token="$GITHUB_TOKEN" \
            --repo="${{ github.repository }}" \
            --pr="${{ github.event.number }}" \
            --diff-ref="${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}" \
            --prompt="请只针对可能导致线上故障的严重问题给出 1-2 句中文评论,用 🚨 表示致命问题,🔒 表示安全问题,✅ 表示已修复。"

提示:
CURSOR_API_KEY 填在仓库 Secrets 里,Cursor 官方后台可生成。

步骤 8:可选——阻断合并

如果你希望出现致命错误就直接让流水线失败,加上:

      - name: Check Critical Issues
        run: |
          if [ "$CRITICAL_ISSUES_FOUND" = "true" ]; then
            echo "发现致命问题,中止合并"
            exit 1
          fi

并把上一步命令加环境变量 BLOCKING_REVIEW=true

步骤 9:权限锁死(防止机器人越权)

在仓库根目录新建 .cursor/cli.json

{
  "permissions": {
    "git_push": false,
    "pr_create": false
  }
}

AI 只能读文件和发表评论,其余动作一律禁止。

步骤 10:测试

  1. 随意提一个 PR(改几行代码即可)。
  2. 等待 1-2 分钟,机器人会出现在 PR 评论区。
  3. 看到 ✅ 或 🚨 就说明跑通。

4 常见疑问 FAQ

这里用对话体,先给问题再给答案。

Q1:Cursor CLI 跟官方 Bugbot 有什么区别?
A:Bugbot 零配置直接跑,适合“开箱即用”;CLI 让你写自己的 prompt、加逻辑分支,适合“想自己调”的团队。

Q2:评论全是英文怎么办?
A:在 --prompt 里直接写“请用中文回答”即可,Cursor 支持多语言。

Q3:会不会把密钥打出来?
A:不会。GitHub Actions 会把 Secrets 自动打码,日志里看不到。

Q4:能指定只扫描 .py 或 .js 吗?
A:可以。在 prompt 里加限制:“只对 *.py 文件做审查”,Cursor 会跳过其余文件。

Q5:机器人评论太多怎么办?
A:默认最多 10 条,且同一代码范围不会重复留言。你可以把 prompt 改成“最多 5 条”。

Q6:如何让它学习我们团队的编码规范?
A:把规范写成 Markdown 放在仓库根目录,在 prompt 里加一句“参考 docs/team-style.md”。


5 进阶玩法:让机器人更懂你的团队

场景 做法
分支差异化 main 分支设置“0 容忍致命问题”,为 dev 分支允许警告
自动修复 CI 失败 如果 CI 报红,再跑 cursor-agent fix 自动提 commit
文件级规则 对 SQL 文件强制检查注入,对前端文件检查 XSS
评论模板 在 prompt 里用占位符 {{file}}:{{line}} 让评论带上文件名和行号
多人协作 用 GitHub CODEOWNERS 把机器人评论指派给对应模块负责人

6 小结 & 下一步

今天,我们只用了一个 YAML 文件就把 Cursor CLI 嵌进了 GitHub Actions,搭出一条轻量、低噪音、高信噪比的机器人 Code Review 流水线。上线后,你会发现:

  • 重复性的低级 Bug 在合并前就被拦下;
  • 新人通过表情符号就能一眼看懂问题;
  • 资深工程师把精力放在架构讨论,而不是“这行是不是忘了判空”。

下一步可以做的事:

  1. 在 prompt 里加入你们团队的“常见踩坑清单”;
  2. 把流水线拆成多 job,分别跑安全扫描、性能扫描;
  3. 把成功经验写成内部 Wiki,分享给其他仓库。

祝你代码愉快,合并安心。

退出移动版