AIレビューは信頼できるのか?
(medium.com)社内のAIレビューツールを運用しながら、「AIレビューは信頼できるのか?」「本当に適切に検証できているのか?」という問いに答えるため、品質を定量的に測定し改善してきた過程を共有します。
背景
- AI生成コードは人間のコードと比べて、PRあたりのイシューが1.7倍、ロジックエラーが75%多い(CodeRabbit)
- AmazonはAIコード障害の後、シニアによるPR承認を必須化し、ShopifyはAI PRの自動マージを禁止
- AIレビューはこうした状況でイシューやエラーを早期に発見するための検証手段の一つとして導入
- ただしAIレビュー自体が非決定的であるため、「この検証手段が本当に適切に検証できているのか?」を測る段階が先行する必要がある
独自ベンチマークの構築
- Hotfix PR → 元のPRを逆追跡し、「元の時点でAIレビューがこのバグを検出できたか」を測定
- PR diffだけで判定可能なケースのみを含め、外部コンテキストが必要なものは除外
- 採点はGPT-4o miniによるLLM-as-a-Judge。絶対値は不正確でも相対比較には十分
- 初回スコアは33点。「うまくできている気がする」という感覚は、ごく少数の成功事例による錯覚だった
失敗 1(サブエージェント・オーケストレーション)
- 領域別の専門サブエージェントを置き、メインエージェントが指揮する構成を試行
- 結果: 検出率 ↓、コスト 1.5〜3倍 ↑
- 原因は3つ
- コンテキスト圧縮による情報損失
- 関心範囲の制限による視野の狭まり
- 複数領域にまたがる責務の空白
失敗 2(ベンチマーク汚染)
- ループでプロンプトを自動チューニングしたところ、「Division by Zeroをチェックしろ」といった指示の列挙に収束
- SWE-benchもすでに汚染状態
- 外部ベンチマークではモデル選定の根拠を作れないことを確認
新しい指標(Adoption Rate)
- adopted: レビューが実際のコード変更につながった
- engaged: 変更はないが返信でやり取りがあった(交差検証の価値を認めた)
- noised: 変更も返信もない
- 判定方法: レビュー時点のcommit SHAとマージ時点のSHAを比較し、コメント行の±3行以内に変更があればadoptedと判定
Opus 4.6 vs GPT-5.2 Codex A/B
- PR番号の偶数/奇数でモデルを振り分け、約100件のPRを比較
- Opus 4.6: 高速で創造的だが詰めが甘く、簡単にApproveしがち
- GPT-5.2 Codex: 遅いが綿密で、レビュー再依頼の時点でも有効な追加指摘が多い
- Codexに固定後、週間反映率は最高60%を記録
反映率を上げた3つの施策
- Question: 確信が持てない点は指摘ではなく質問にする
- PRテンプレートのIntent/Decisionsセクション
- Intent: create-prスキルで「なぜ必要か」という問いへの回答を挿入
- Decisions: Claude Stopフックで会話セッションの意思決定を自動抽出
- レビュアーのコンテキスト不足で発生していた誤検知が約29%減少
- スレッド自動resolve: レビューの反映を確認するとAIが自動でスレッドを閉じる
結果
- 月間反映率63%を達成(2026-04-17時点)
- すべてのアクションがデータ駆動のため、次の実験判断にも根拠を持たせられる
- Adoption Rateも「採用 = 正解」を保証するわけではないため、この指標自体も汚染されうる点に注意が必要
4件のコメント
とは…… "監視者を誰が監視するのか?" みたいですね
先ほど述べた「検証手段」は、AIレビュアーのことを指していました。AIは非決定的なので、AIレビューの品質を測定するための基準線(ベンチマーク)がまず必要だ、という意図だったのですが、読む方の観点ではベンチマーク自体の妥当性を先に検討すべきだ、という意味にも受け取れそうですね。
文を曖昧に書いてしまい、混乱を招いたようです。ご指摘ありがとうございます..!
個人的には、コードを書くモデルとレビューするモデルには別のモデルを使っています
経験上、Claude は Claude が書いたコードをよくできたコードだと認識し、ChatGPT は ChatGPT が書いたコードをよりよくできたコードだと見るようです
計画段階と検証段階でCodexを使っていたのですが、ちゃんとしたやり方だったんですね。