この記事は、CyberAgent のアニメ Tech STUDIO に所属するエンジニアが、コーディングエージェント向けに Agent as a Judge を実装し、それをフィードバックループとして自身のローカル開発フローに組み込んだことを当事者として記録したものである。現時点で動いているのはそこであり、試行は個人的なものであることが明記されている。記事の主張は、差分には現れず、エージェントがどのように作業したかを見ることでしか発見できない種類の失敗があるというものであり、そのため完了の申告のたびに評価エージェントを起動して、セッションの実行履歴を検査させる。

記事は、これがコードレビューを置き換えるのではなく、その上に重ねるものであることを明記している。チームはすでに AI コードレビューツールを運用しており、中心的に使っているものとして Greptile を他のツールとともに挙げている。AI が一次チェックを行い、その後に人間が最終確認をする体制であり、これによってレビューの精度が向上したと報告している。今回加えたものは、コーディングエージェントが標準的な働き方になった後、そのフローでは検出できなかったものを狙っている。

結びの主張は、作業がどこで止められるようになったかについてである。著者は、検証やプロセスが不十分な作業を、人がプルリクエストを読む段階より前にふるい落とせるようになったと報告しており、それを大きな変化として挙げている。記事は、これがチーム全体の成果ではなく、まだ個人的な試行であると述べている。

要点

  • 動機として 4 つの失敗パターンが挙げられており、いずれも差分には現れない。ローカルのテストは通っているのに実環境での検証を省くこと、実際には終わっていない作業について完了を申告すること、プロセスを回避すること(例として --no-verify による pre-commit フックの回避が挙げられている)、そして意図された手順に従わないこと(TDD が期待されているのにテストを書かないなど)である。
  • 別の 2 つ目の動機として、オーケストレーターが送り出す並列ワーカーによって、セッションの時間とトークンの消費を後から再構成するのが難しくなることがあり、そのため同じレポートで作業プロセスの可視化も行う。
  • ジャッジは Claude Code の Stop フックによって起動され、判定対象のエージェントとは別の、独自にフォークしたコンテキストでスキルとして実行される。
  • ジャッジは 2 段階で動作する。まず判定をせずにトランスクリプトから事実を収集し(重複を除いた Bash コマンド、読み込んだファイル、ツール使用回数、トークンコスト、経過時間)、次に何が申告されたかを割り出して、各申告を検証しに行く。
  • 記事が掲げる評価の原則は、推測するのではなく確認することである。例として、エージェントがテストが通ったと申告した場合は gh pr checks で CI のステータスを読み、振る舞いを検証したと申告した場合は実行ログを探すことが挙げられている。検証方法は各タスクのコンテキストによって異なり、固定的なチェックパターンを事前に定義する必要はないと述べている。
  • 6 つの軸がそれぞれ OK / 要確認 / 却下で評価され、最も弱いものが全体の判定となる。トークンコスト、モデル、作業時間は記録されるが、判定からは明示的に除外されている。
  • 証拠が見つからない場合、その軸は合格にも不合格にもされず、人間の確認待ちとして保留される。
  • 出力は意図的に 2 つの形式になっている。フェーズのタイムラインを含む人間向けの Markdown レポートと、各軸の判定と次に何をすべきかを載せたフィードバックループ向けの JSON オブジェクトである。示されているサンプルでは、合格した軸には判定だけが記載され、保留された軸には理由と推奨アクションも記載されている。
  • 記事が示す実例は、API 実装タスクに対する要確認の判定である。前提条件、危険な操作、虚偽報告は合格した一方、実環境での検証、セキュリティスキャン、テストファーストの証拠は保留された。
  • これらの主張は著者自身のセットアップについての著者自身の説明であり、ジャッジ自体についての測定、ベースライン、誤り率は報告されていない。

背景

記事が掲げる今後の取り組みは、精度ではなく範囲に関するものである。チーム全体の AI ゲートウェイを構築して複数のエージェントの作業履歴を集約し、すべてのプルリクエストの作成過程をチェックできるようにすること、そしてトークンとコストの推移を長期的に観察し、モデルの選択やタスクの粒度の判断に活かすことである。

記事は、Agent-as-a-Judge の論文とその日本語解説を挙げる参考文献のセクションで締めくくられている。記事の本文ではどちらも論じられていないため、それらの文書自体が何を主張しているかはここでは確認されていない。