Zenn Dev Owayo Articles B7ab1ed5bb88fe
GitLab MRレビュー自動化の3年間の試行錯誤 - APIの限界をAIエージェントで突破した話
- URL: https://zenn.dev/owayo/articles/b7ab1ed5bb88fe
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: GitLab MRのAIコードレビュー自動化を2023年から試み、OpenAI API直接呼び出しとPR Agentの2度の失敗を経て、2025年にCodex CLI + MCP(Serena + Context7)の組み合わせで実用レベルに達したという3年間の試行錯誤が詳述されている。失敗の本質は「GitLab APIのdiff情報だけではコードベース全体のコンテキストが不足する」という点にあり、AIエージェントがローカル環境でリポジトリを直接探索できるようにすることで問題が解消された。Codex CLIの –full-auto モードでCI/CD環境での完全自動実行を実現し、SerenaによるセマンティックコードのインデックスとContext7の公式ドキュメント参照を組み合わせて、人間のレビュアーが見落としがちなエッジケースまで指摘できる精度を達成している。
詳細
GitLab MRレビュー自動化の3年間の変遷と現在のアーキテクチャ(GitLab Self-Managed、Kubernetes環境)。
失敗の歴史:
- 2023年(OpenAI API直接呼び出し): List merge request diffs APIでdiff取得 + 周辺コード手動選定 → 依存関係・呼び出し元追跡不可、コンテキスト漏れが頻発
- 2024年(PR Agent): APIベースのlimitは同じ。大規模コードベースで精度低下、プロジェクト固有ルール適用困難
現在のアーキテクチャ(2025年):
- Webhook API(FastAPI on Kubernetes): @review-bot メンションを検知してGitLab CI/CDパイプラインをトリガー
- レビュージョブ(Docker + GitLab CI): 専用Dockerイメージに Codex CLI + Serena MCP + Context7 MCP を搭載、主要プロジェクトのSerenaインデックスを事前生成
- git diff ${BASE_SHA}..${HEAD_SHA} でGitLab APIではなくgit操作で正確なdiffを取得
- Serena MCP: シンボル情報をインデックス化しAIがコードベースを自律探索可能に
- Context7 MCP: 外部ライブラリの公式ドキュメントをリアルタイム参照
プロジェクト固有カスタマイズ:
- AGENTS.md に全プロジェクト共通ルールを記載し、DBマイグレーションファイルが含まれる場合などは条件付きで専用観点を追加
- レビューテンプレートで致命的/重要/軽微/提案の4段階と、マージOK/条件付きOK/要修正/パイプライン失敗の総評を規定
レビュー品質: バグ検出・依存関係の影響範囲指摘で実用レベルに達したと評価