アウトプットが速すぎてレビューが追いつかない:Agentを使ってAgentを検証する
Test First、Trophy Testing、継続的フィードバックは、単一のAgentのワークフロー内ではうまく機能する。しかし、アウトプット速度が上がるにつれて、新たなボトルネックが現れる。レビューが追いつかないのだ。
1つのAgentの1日のコード出力は、プログラマーの1週間分の出力に匹敵する可能性がある。自動テストがあったとしても、人間はテスト自体が妥当かどうか、仕様が正しく理解されているか、実装アプローチがアーキテクチャの意図に沿っているかをレビューする必要がある。これらのレビュータスクが人間の処理能力を超えて積み上がると、レビュー品質が低下するか、レビューがワークフロー全体のボトルネックになるかのどちらかだ。
敵対的検証(Adversarial Verification)はこの問題の解決策を提供する。核心となるアイデアは、NASAの独立検証・妥当性確認(IV&V)プログラムから借用している。検証は開発者から独立した主体が行わなければならない。Agent駆動開発においては、独立したAgentを使って別のAgentのアウトプットを検証することを意味する。
具体的なアプローチは次の通りだ。コーディングAgentが実装を完了した後、出力されたコードと元の仕様の両方が、独立した検証Agentに渡される。検証Agentのタスクは、仕様に照らして実装を基準ごとにチェックし、逸脱、漏れ、疑わしい判断にアノテーションを付けることだ。検証AgentはSpecとコードのみを持ち、コーディングAgentの推論プロセスは見えない。そのため、判断は仕様と実装の一致度に完全に基づいている。
クロスモデル検証は、共通のブラインドスポットのリスクをさらに低減する。コーディングAgentがClaudeを使用している場合、検証AgentにはGPTを使い、逆もまた同様にできる。異なるモデルファミリーは異なる訓練データと推論の傾向を持つ。異なるモデルを使ったクロスバリデーションにより、単一モデルでは見落としがちな問題を発見できる。
敵対的検証のアウトプットはギャップレポートだ。どの受け入れ基準が満たされたか、どこに逸脱があるか、何が完全に欠落しているか。人間のレビュー対象は、コード自体からこのギャップレポートに移行する。これにより人間のレビュー負荷は劇的に軽減される。コードを一行ずつ読む代わりに、検証Agentがアノテーションした差異点に集中すればよい。
自動検証は、後続のスケーリングの前提条件である。複数のAgentを並行開発で走らせ始めると(第5章のテーマ)、人間が各Agentのアウトプットを個別にレビューすることは物理的に不可能になる。その段階での敵対的検証システムは、「便利な補助」から「不可欠なインフラ」へと移行する。