把 Code Review 交给机器人:用 GitHub Actions + Cursor CLI 搭一条全自动 PR 审查流水线
写在前面
如果你已经厌倦了在深夜盯着一行行 diff,只为找出那个可能让生产环境崩溃的空指针;如果你希望团队新人也能在第一次提交时就收到清晰、可落地的改进建议,那么这篇指南就是为你准备的。我们将从零开始,在现有 GitHub 仓库里搭一条“机器人审查员”流水线,它会在每一次 Pull Request(PR)打开、更新或重新打开时自动跑起来,只把真正严重的问题拎出来,用一句人话、一个表情符号直接钉在代码行上。
整个过程 30 分钟以内可跑通,不需要买服务器,也不会动你现有分支的代码。
目录
-
它能做什么,不能做什么 -
原理 3 句话讲清 -
10 步搭好流水线 -
常见疑问 FAQ -
进阶玩法:让机器人更懂你的团队 -
小结 & 下一步
1 它能做什么,不能做什么
它能做 | 它不做 |
---|---|
在 PR 打开时自动跑 | 不会帮你写业务代码 |
只报高危 Bug(空指针、SQL 注入、并发问题等) | 不会写洋洋洒洒的 10 行评论 |
用 ✅ 🚨 🔒 表情告诉你严重程度 | 不会把“代码风格”挂嘴边 |
发现旧问题已修复后自动打勾 | 不会重复刷屏 |
可选:遇到致命问题直接阻止合并 | 不会动你的主分支 |
2 原理 3 句话讲清
-
GitHub Actions 监听 PR 事件 → -
Actions 虚拟机里安装 Cursor CLI → -
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:测试
-
随意提一个 PR(改几行代码即可)。 -
等待 1-2 分钟,机器人会出现在 PR 评论区。 -
看到 ✅ 或 🚨 就说明跑通。
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 在合并前就被拦下; -
新人通过表情符号就能一眼看懂问题; -
资深工程师把精力放在架构讨论,而不是“这行是不是忘了判空”。
下一步可以做的事:
-
在 prompt 里加入你们团队的“常见踩坑清单”; -
把流水线拆成多 job,分别跑安全扫描、性能扫描; -
把成功经验写成内部 Wiki,分享给其他仓库。
祝你代码愉快,合并安心。