本文へスキップ
実績一覧へ
ツール稼働中

マルチエージェント・コードレビュアー

GitHubのPRリンクを渡すと、3体の専門エージェントが協調して動く。Plannerがレビュー観点を組み立て、Analyzerがバグを見つけ、Fixerがユニットテスト付きの修正を書く。

20252.5か月
バグ検出率87%テストカバレッジ92%手動レビューの7倍の速さ
マルチエージェント・コードレビュアー

担当領域

設計から実装まで一貫して担当。3体のエージェントによるレビューパイプラインの設計、静的解析ツールの統合、GitHub連携の自動化層を作った。

期間

2.5か月

2025

技術スタック

LangGraphClaude 3.5 SonnetSemgrepCodeQLGitHub APIPytestNeon Postgres

ステータス

稼働中
概要

GitHubのPRリンクを渡すと、3体の専門エージェントが協調して動く。Plannerがレビュー観点を組み立て、Analyzerがバグを見つけ、Fixerがユニットテスト付きの修正を書く。

解決すべき課題

コードレビューはソフトウェア開発で最大の詰まりになっている。シニアエンジニアは週に8〜12時間をPRのレビューに使い、レビューの待ち時間は平均2〜3日に及ぶ。レビュアーの疲労で重大なバグが通り抜け、若手は数日フィードバックを待つことになり、学習の速度も落ちる。

アプローチ

専門の異なる3体のAIレビュアーが協調する仕組みを構築した。PlannerがPRの規模に応じたレビュー方針を立て、AnalyzerがClaudeと静的解析ツールでセキュリティ上の欠陥、性能問題、ロジックのバグを検出し、Fixerがユニットテスト付きの修正コードを生成する。GitHubへのコメント投稿や修正PRの作成まで自動で行う。

主な機能
1

3体のエージェントによるレビュー

PlannerAgentが観点を絞ったチェックリストを作り、AnalyzerAgentが深刻度と確信度付きで問題を挙げ、FixerAgentがユニットテスト込みの修正コードを書く。全体はLangGraphのsupervisorが統括する。

2

セキュリティと静的解析

Claudeの推論に加えてSemgrep(OWASPのパターン)とCodeQL(データフロー解析)を組み合わせ、パターン起因の脆弱性とロジック起因の脆弱性の両方を検出する。

3

修正PRの自動作成

確信度の高い指摘については、修正コード、ユニットテスト(カバレッジ92%以上)、経緯を説明したコミットメッセージを備えたPRを作り、そのままマージできる状態にする。

4

学習のための履歴

すべてのレビューをNeon Postgresに保存し、指摘が採用されたか、修正が正しかったかを追跡する。これによりレビューの質を継続的に高められる。

技術選定

このプロジェクトを形づくった技術選定と、それぞれを選んだ理由。

LangGraph Supervisor

AI・ML

PRによって必要なレビュー方針が違うため、直列のパイプラインではなくsupervisorグラフを選んだ。CSSだけの変更ならセキュリティ解析を飛ばし、DBマイグレーションなら厳しく見る。その振り分けを動的に行える。

Semgrep + CodeQL

バックエンド

検出できる脆弱性の種類が異なるため、静的解析を2つ重ねた。SemgrepはSQLインジェクションやXSSといったパターンの検出に強く、CodeQLのデータフロー解析は関数をまたぐ複雑な経路を捉える。

Claude 3.5 Sonnet

AI・ML

構文だけでなく意図を読めるため、コードレビューにはClaudeを選んだ。GPT-4oは誤検知が多く(32%に対しClaudeは11%)、警告に慣れて本当の問題を見過ごす原因になりかねなかった。

GitHub Checks API

インフラ

CI/CDと自然に噛み合わせるため、単純なPRコメントではなくGitHub Checksと連携した。レビュー結果は行単位の注釈付きのcheck runとして表示され、既存の開発フローにそのまま乗る。

アーキテクチャ

静的解析の統合と修正の自動生成を組み込んだ、マルチエージェントのレビューパイプライン。

01

PRのWebhook

PRの作成・更新でGitHubのWebhookが発火 → 差分、ファイル構成、コミット履歴を取得

02

計画

PlannerAgentがPRの範囲を分析 → 重点領域とスキップ条件を含むチェックリストを生成

03

解析

AnalyzerAgentがClaudeの推論、Semgrep、CodeQLを並列に実行 → 深刻度と確信度で並べた問題一覧を出力

04

修正の生成

FixerAgentが確信度の高い問題の修正コードを作成 → ユニットテストを生成 → pytestで検証(カバレッジ92%以上)

05

GitHubへの反映

行単位の注釈付きコメント、修正PRの作成、GitHub Checksのステータス更新

技術的な壁と学び

開発中にぶつかった難所と、どう乗り越えたか。

技術課題1

誤検知による疲労

問題

初期の版はPRごとに40件以上を指摘し、そのうち35%が誤検知だった。開発者はすべての指摘を無視するようになり、自動レビューの意味が失われていた。

解決策

過去のフィードバックから確信度を較正する仕組みを入れた。採用・却下の履歴で学習した確信度を各指摘に付け、75%を超えるものだけを表示し、それ以下は折りたたんだ「確信度の低い指摘」として残す。

結果

誤検知率は35%から8%へ下がった。指摘に対する開発者の反応率は23%から71%へ上がった。

技術課題2

大きなPRと文脈長の限界

問題

50ファイル以上を変更するPRはClaudeの文脈長を超え、切り詰めによってファイルをまたぐ問題を見落としていた。人が最も見つけにくい種類のバグが、まさに抜け落ちていた。

解決策

階層的な解析に切り替えた。1回目は各ファイルを個別に見て、2回目はファイル間の依存を特定し、つながっている部分グラフだけをまとめて解析する。どのファイルが実際に関係するかはASTベースの依存解決で判断する。

結果

ファイルをまたぐバグの検出は45%向上した。100ファイル以上の大きなPRも、以前はタイムアウトしていたが90秒でレビューを終える。

NEXT

LumoraTechと、次のシステムをつくりませんか。

エンジニアリングの質を重視するチームや創業者のために、こうした本番システムを構築しています。東京のチームが日本語と英語の両方で対応します。