Claude Code Agent 实战:30 分钟从零搭建一个 PR 自动审查助手
上周我在几个开源项目上做 contributor,维护者反馈 PR 太多人工 review 不过来,我就想能不能用 Claude Code 的 Agent 能力写一个自动 PR 审查 bot。
问题是什么
维护开源项目时,PR 一多,光靠人肉 review 根本看不完。
每个 PR 都要检查代码风格、测试覆盖、有没有安全漏洞、是不是引入了 breaking change……这些工作重复性极高,但又不能不做。
我的目标很明确:写一个 AI Agent,当有人在 GitHub 上提 PR 时,它能自动拉代码、跑检查、给 review 意见,再把结果贴回 PR 评论区。整个过程不需要人盯着。
解决思路
选型时我对比了三种方案:
| 方案 | 优点 | 缺点 |
|---|---|---|
| GitHub Actions + 脚本 | 免费、原生集成 | 写起来麻烦,逻辑复杂的场景脚本很难维护 |
| OpenAI Function Calling 自建 | 灵活可控 | 要自己搞服务器、处理 webhook、管理状态 |
| Claude Code Agent | 自带 tool use、文件操作、git 能力 | 需要一点配置,整体是最轻量的 |
我最后选了 Claude Code 的 Remote Trigger 功能——在 claude.ai 上创建一个 trigger(触发点),通过 API 调用它。Trigger 里可以配置一个 Agent,给它一组工具(读文件、写文件、跑测试、git 操作等),它就能自主完成整个 review 流程。
操作步骤
步骤 1:创建 Remote Trigger
登录 claude.ai,进 Code > Remote Triggers,创建一个新 trigger:
名称:pr-reviewer
描述:Automatically review pull requests
这个 trigger 暂时是个空壳,下一步给它配行为。
步骤 2:配置 Agent 的 system prompt
关键在这里——Agent 不知道自己要干什么,你得告诉它。这是我的 system prompt:
你是一个 PR review 助手。当收到一个 PR 的 URL 时,执行以下步骤:
1. 使用 `gh pr view <url>` 获取 PR 的详细信息(标题、描述、文件列表)
2. 使用 `gh pr diff <url>` 获取代码变更
3. 对于每个变更文件:
a. 检查代码风格和命名规范
b. 检查是否有明显的 bug 或安全漏洞
c. 检查测试是否覆盖了变更逻辑
4. 运行 `npm test` 确认测试通过
5. 汇总 review 意见,使用 `gh pr comment <url> -b "<意见>"` 贴到 PR 上
注意:评论要逐条列出问题,标注严重等级(critical / major / minor),每个问题附上行号和建议修复方案。
prompt 里给的指令越具体,Agent 的执行结果越稳定。别只写"review this PR",要明确告诉它每一步做什么、用什么命令、输出格式是什么。
步骤 3:创建触发脚本(本地 webhook)
在本地写一个脚本监听 GitHub webhook 事件,调用 Remote Trigger。我用 Node.js 写了个最简单的 Express 服务器:
import express from 'express';
import { Anthropic } from '@anthropic-ai/sdk';
const app = express();
const anthropic = new Anthropic();
app.post('/webhook', express.json(), async (req, res) => {
const { action, pull_request } = req.body;
if (action === 'opened' || action === 'synchronize') {
const prUrl = pull_request.html_url;
// 调用 Remote Trigger
await anthropic.triggers.run('pr-reviewer', {
body: { pr_url: prUrl }
});
console.log(`Triggered review for ${prUrl}`);
}
res.send('ok');
});
app.listen(3000);
用 ngrok 把这个本地服务暴露到公网,然后在 GitHub 仓库的 Settings > Webhooks 里添加一个 webhook,指向 https://your-ngrok.ngrok.io/webhook,只订阅 pull_request 事件。
步骤 4:配置 GitHub token
Agent 要操作 GitHub(看 PR、写评论),需要认证。在 claude.ai 的 Remote Trigger 环境变量里设置:
GITHUB_TOKEN=ghp_your_token_here
然后在 Agent 的 prompt 里加一句:
注意:GitHub CLI 的认证信息已通过环境变量 GITHUB_TOKEN 配置,直接使用 gh 命令即可。
步骤 5:测试整个流程
提一个测试 PR 看看效果。我故意留了几个问题:
提交后大约 30 秒,Agent 完成了 review:
## PR Review: fix/user-input-sanitization
### Critical ❗
- **src/components/comment.tsx:42** — 用户输入直接拼接到 innerHTML,存在 XSS 风险
建议使用 textContent 或 DOMPurify 清理
### Major ⚠️
- **src/utils/format.ts:15** — 变量名 `x` 语义不明确,建议改为 `userInput`
### Minor ℹ️
- **src/utils/format.ts:8** — 遗留的 console.log,建议删除
### ✅ 测试通过
- 所有 47 个测试用例通过
- 新增测试覆盖了 XSS 清理逻辑
结果与总结
效果出乎意料地好。Agent 准确发现了 XSS 问题(这是最关键的)、命名问题和遗留调试代码。整个过程从 PR 提交到 review 完成大概 30-40 秒,比人工快太多了。
踩的几个坑:
延伸思考
这只是 Remote Trigger 最简单的一个用法。继续深挖的话,还可以:

评论已关闭!