コードレビューエージェントが増え、LangChain社内でも構築を進めています。コードレビューの評価は難しく、既存のベンチマークの多くは社内のレビュー基準を反映しておらず信頼できません。そこでLangChainは、実在のPRレビューに基づくReviewBenchを開発しました。これはLangSmithモノレポの実際のPRフィードバックから作られており、信頼できるレビュアーのコメントを具体的なレビュー課題に絞り込み、再現可能なHarborタスクに変換しています。
ReviewBenchは、合成バグではなく実際のレビュー履歴から出発します。収集したコメントには、データベースクエリのテナント制約の欠落や本番cronのロックパターンなど、コードベース固有の標準に依存するものが多く含まれます。エージェントがこれらの問題を見つけるには、変更行だけを見るのではなく、周辺コードから暗黙のシステム契約を再構築する必要があります。
生のコメントはノイズが多いため、そのまま正解ラベルには使えません。LangChainはLLMゲートで弱い候補をふるい落とし、残りを手作業で精査しました。変更によって導入された実質的な欠陥を特定し、検証可能なほど具体的なコメントだけを残しています。このキュレーションにより、基準は「レビュアーが言ったこと」ではなく「実質的な欠陥をエージェントが再現できるか」を測定します。
ベンチマークの例として、リソースをIDで取得・削除するSQLクエリがテナントをチェックしていない問題や、エンドポイント移行で元のAPIにあったフィルタが失われた問題などがあります。これらは変更行のスキャンだけでは見つからない、プロジェクト全体の安全規則やAPI互換性の理解を要求します。
ReviewBenchは現在59タスク、64のベースライン問題を備え、Harbor形式で書かれています。エージェントはPRのコンテキストとdiffが提供され、ローカルなGitHubスタブで操作します。完全なリポジトリを調べた上で、問題の場所・タイトル・説明を含む構造化リストを提出し、隠された検証器がLLMジャッジでベースラインと比較します。
スコアリングはカバレッジと精度を測定します。カバレッジは同じコードパスで同じ潜在問題を特定したかを、精度は提出された所見のうち正しい割合を評価します。両者はF1で均等に重み付けされます。
実験では、Deep Agentsハーネスを使い、タスクごとに3回試行しました。カスタムプロンプトを意図的に省き、最小限の共通基盤でモデルを比較しています。結果は、基本的なハーネスでは現在のモデルがレビュアーが見つけた問題の約30%しか発見できないことを示しました。LunaとTerraは期待より低く、少数の所見に集中して停止する傾向がありました。
しかし、Lunaに高推論努力と構造化レビュープロンプト(PRの変更点の特定、周辺システムの依存関係の追跡、コール先やテスト、関連実装での検証)を与えると、20タスクの比較でスコア0.32に達し、静的レビューのKimiやOpusを上回りました。これはモデルやツールを変えるだけでなく、レビュー方法を変えることが重要であることを示しています。
今後はタスクを増やして安定性を高め、セキュリティ制約やAPI互換性、変更行の外の文脈を必要とする問題までカバレッジを広げる予定です。最終的には、不要なノイズを増やさずに実変更の実質的な問題を発見できるかを測ることを目指しています。