$cd ../use-cases/
👾 開発者Betaセットアップ10分
$ cat github-pr-auto-review.md
await reviewPullRequest(github, { style: 'strict' })
/** すべてのPull Requestに対し、60秒以内にコンテキストを理解した厳密なコードレビューを実施。チームメイトの確認を待つ時間をなくし、バグを早期に発見し、コーディング規約を自動で強制します。 */
architecture.md
⚙️ アーキテクチャとデータフロー
01.
GitHub Webhook トリガー
開発者が Pull Request を作成・再開・新コミットをプッシュすると、GitHub が HMAC 署名付き Webhook ペイロードをセルフホストの OpenClaw インスタンス(ngrok・Cloudflare Tunnel・リバースプロキシ経由)に送信します。プッシュイベントから 200ms 以内にトリガーが発火します。
02.
差分抽出
OpenClaw が Webhook 署名を認証し、PR 番号とベース/ヘッド ref を抽出し、GitHub API 経由で正確な Git 差分を取得します。大規模な PR はファイル単位で並列分析チャンクに自動分割されるため、5,000 行の PR も 200 行の PR と同じレイテンシで分析できます。
03.
LLM 分析パイプライン
各差分チャンクが設定済みの LLM(Ollama 経由のローカル Llama 3、またはクラウドの Claude 3.5 Sonnet や GPT-4o)に送信されます。論理エラー・NULL 参照・OWASP Top 10 全カテゴリのセキュリティ脆弱性・変更分岐のテストカバレッジ不足・パフォーマンスアンチパターン・スタイルガイド違反を分析します。
04.
構造化フィードバック提供
OpenClaw がすべてのチャンクの検出結果を集約し、重複コメントを排除して、単一の構造化 Markdown コメントを GitHub PR に投稿します。発見内容は深刻度(🔴 Blocker → 🟡 Warning → 🔵 Suggestion)でソートされ、影響する行番号への直接リンク付きで表示されます。
05.
マージ制御(オプション)
設定時、OpenClaw は Blocker レベルの発見があるマージを GitHub Checks API で自動ブロックします。PR に pass/fail ステータスバッジが表示されます。開発者がフラグされた問題を解決する修正をプッシュすると、ブロックは自動的に解除されます。
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)
レビュー待ち時間
初回レビューはdiffの大きさにもよりますがおよそ45〜90秒で返ります。人の空き時間を待つ必要がありません。価値はキューに滞留しないことであって、人より良いレビューになることではありません。
検出できるもの
人のレビューでは読み飛ばされがちな機械的な欠陥——nullの参照外し、off-by-oneエラー、未処理の分岐。設計上の誤りは検出できません。できると期待することが、この構成が破綻する典型です。
シニアエンジニアの工数
フォーマットや基本的なロジックチェックに費やしていたシニアエンジニアの時間を、週当たり約5時間節約。コアアーキテクチャの設計に注力できるように。
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 が NULL 参照・インジェクションパターン・欠落エラー処理・フォーマット違反を自動的に捕捉します。シニアエンジニアはアーキテクチャ上の決定・ビジネスロジックの正確性・真のドメイン判断が必要なプロダクトレベルのトレードオフにのみ集中できます。
Q2. 対応プログラミング言語は?
ベースモデルがトレーニングされたすべての言語:TypeScript・JavaScript・Python・Go・Rust・Java・C#・Ruby・PHP・Swift・Kotlin・Scala・Elixir など。レビュープロンプトは言語対応型で、汎用的なフィードバックではなく各言語の慣用的なスタイルルールを適用します。
Q3. マージをブロックできますか?
はい。GitHub Checks API を使用して、Blocker 深刻度の発見がある場合に PR のコミットステータスを「失敗」に設定します。開発者が修正をプッシュすると自動的にチェックが解除されます。影響するファイルパターン・深刻度閾値・特定の GitHub チームへのバイパスルールは config.yaml で設定可能です。
Q4. ソースコードは第三者に送信されますか?
クラウド LLM を設定した場合のみです。ローカルモデル(Ollama 経由の Llama 3・Qwen 2.5・DeepSeek Coder)を使用する場合、差分テキストはサーバー外に出ません。Claude や GPT-4o などの API モデルを使用する場合も、送信されるのは生の差分のみで、git 履歴・シークレット・未変更ファイルは送信されません。
Q5. レビューはどれくらい速いですか?
PR 作成イベントからレビューコメントが表示されるまで平均 45–90 秒です。M2 Mac Mini 上のローカル Llama 3 では、500 行以下の差分で中央値レイテンシは 70 秒です。これは元のパフォーマンス調査に参加したチームの平均 4.2 時間の人間レビューレイテンシと比較したものです。
Q6. AI のレビュー観点をカスタマイズできますか?
はい。レビュアーのペルソナ・焦点領域・深刻度マッピング・出力形式はすべて YAML 設定ファイルで定義されています。チーム固有のスタイルガイドを強制したり、スタイルよりセキュリティを優先したり、「データベース呼び出しには常にエラー処理が必要」などのプロジェクト固有のルールを追加したりできます。
Q7. GitLab や Bitbucket でも動作しますか?
GitHub がネイティブの Checks API 統合を持つ主要ターゲットです。コミュニティ製のアダプターが、各プラットフォームの Webhook とコメント API 経由で GitLab マージリクエストと Bitbucket プルリクエストをサポートします。コア分析エンジンはプラットフォーム非依存です。