$cd ../use-cases/
👾 开发者Beta10 分钟配置完毕
$ cat github-pr-auto-review.md
await reviewPullRequest(github, { style: 'strict' })
/** 确保每个 Pull Request 都在 60 秒内获得基于上下文的深度代码审查。不再苦等同事 Review,提前捕获低级漏洞,并全自动强制执行团队的编码规范要求。 */
architecture.md
⚙️ 架构与数据流解析
01.
GitHub Webhook 触发器
当开发者打开、重新打开或向 Pull Request 推送新提交时,GitHub 会向您私有化部署的 OpenClaw 实例(通过 ngrok、Cloudflare Tunnel 或反向代理暴露外网地址)发送 Webhook 负载包。
02.
智能差异提取 (Differential Retrieval)
OpenClaw 接收到 Payload 负载后,首先通过 HMAC 进行安全认证,提取 PR 编号,随后调用 GitHub API 抓取精确的代码 Git Diff 差异文件。
03.
大语言模型 (LLM) 分析流水线
Diff 文件被智能分块后送入您配置好的 LLM(例如:本地部署的 Llama 3 或云端的 Claude 3.5 Sonnet)。模型会针对逻辑错误、安全漏洞(涵盖 OWASP Top 10)、代码风格违规、缺失边缘测试用例以及死代码进行全方位扫描。
04.
结构化反馈交付
OpenClaw 将 LLM 的审查结果进行结构化格式处理,随后以排版精美的 Markdown 评论形式直接发表在目标 GitHub PR 中。
05.
合并看门狗 (可选配置)
如果 LLM 探测到高危级安全漏洞 (🔴 阻断级),OpenClaw 可以调用 GitHub Checks API 将该 PR 的 Commit Status 标记为 'Failed (失败)',在漏洞修复前强制禁止代码合并操作。
config_override.yaml
📄 配置硬核覆写示例
// 您可以通过修改 config.yaml 深度定制 LLM 的代码审查"人格"
github_reviewer:
# The strictness level of the AI
strictness: high
# Inject custom team guidelines
custom_prompt: |
- You are a senior engineer at Stripe.
- We use camelCase for variables.
- Ban the use of 'any' in TypeScript.
- All API endpoints must have rate limits.
# Merge gatekeeping behavior
block_on:
- critical_security
- logic_errors
- performance_degradation
# Model routing for this specific task
model_override:
provider: anthropic
model: claude-3-5-sonnet-latestroi_analysis.csv
📈 真实场景的投资回报率 (ROI)
审查延迟
第一轮审查大约在 45–90 秒内给出,取决于 diff 大小——而不是等着某个人有空。价值在于没有东西卡在队列里,而不在于这轮审查比人更好。
它能抓到什么
人工 review 时容易一眼扫过去的机械性缺陷——空指针解引用、差一错误、没处理的分支。它抓不到设计层面的问题,而把它当成能抓,正是这套方案出问题的方式。
腾出了什么
高级工程师的注意力——把格式、命名和机械性检查交出去之后,人可以只看设计。
pr_comment.log
💬 真实的 AI PR 审查评论截图
🤖openclaw-botcommented just now
Security Review (OWASP Top 10)
🔴 Blocker: Potential SQL Injection
File: src/controllers/userController.ts (Line 47)
The user input req.body.username is concatenated directly into the raw SQL string. This makes the application vulnerable to SQL Injection attacks. Please use parameterized queries or an ORM like Prisma/TypeORM instead.
- const query = `SELECT * FROM users WHERE name = '${req.body.username}'`;
+ const query = 'SELECT * FROM users WHERE name = $1';
+ const result = await db.query(query, [req.body.username]);
Code Quality
🟡 Warning: Missing Error Boundary
File: src/components/Dashboard.tsx (Line 112)
The new fetchMetrics() async call is missing a try/catch block. If the API fails, it will cause an Unhandled Promise Rejection and crash the component tree.
💡 Suggestion: Refactoring
File: src/utils/formatters.ts (Lines 22-45)
Consider extracting the date manipulation logic into a dedicated helper function to improve testability. Currently, it is tightly coupled with the formatting logic.
❓ FAQ
Q1. 能替代人工代码审查吗?
不能——它消除机械化的 80%,让人类专注于有价值的 20%。OpenClaw 自动捕获空指针、注入模式、缺失错误处理和格式违规。高级工程师则专门聚焦架构决策、业务逻辑正确性以及需要真正领域判断的产品层面取舍。
Q2. 支持哪些编程语言?
底层 LLM 训练所覆盖的所有语言:TypeScript、JavaScript、Python、Go、Rust、Java、C#、Ruby、PHP、Swift、Kotlin、Scala、Elixir 等。审查提示词具备语言感知能力——它会针对每种语言应用符合该语言惯例的风格规则,而非通用反馈。
Q3. 能阻止合并吗?
能。通过 GitHub Checks API,当存在阻断级(Blocker)严重性发现时,OpenClaw 将 PR 的 Commit Status 设置为失败。开发者推送修复后,检查状态自动清除。受影响文件模式、严重性阈值以及特定 GitHub 团队的旁路规则均可在 config.yaml 中配置。
Q4. 源代码会发送给第三方吗?
只有在配置云端 LLM 时才会。使用本地模型(通过 Ollama 的 Llama 3、Qwen 2.5 或 DeepSeek Coder)时,diff 文本永远不会离开您的服务器。使用 Claude 或 GPT-4o 等 API 模型时,仅传输原始 diff——不传输 git 历史、密钥或未修改的文件。
Q5. 审查速度有多快?
从 PR 创建事件到审查评论出现,平均 45–90 秒,取决于 diff 大小和模型。M2 Mac Mini 上的本地 Llama 3 在 500 行以下 diff 时中位延迟为 70 秒。相比之下,参与原始性能研究的团队人工审查平均延迟为 4.2 小时。
Q6. 我能定制 AI 审查的关注点吗?
能。审查人格、关注领域、严重性映射和输出格式均在 YAML 配置文件中定义。您可以调整它以强制执行团队特定的风格指南、将安全性置于风格之上,或添加项目特定规则,如"数据库调用始终要求错误处理"。
Q7. 支持 GitLab 或 Bitbucket 吗?
GitHub 是主要目标,具备原生 Checks API 集成。社区贡献的适配器通过各自的 Webhook 和评论 API 支持 GitLab Merge Request 和 Bitbucket Pull Request。核心分析引擎与平台无关。