GANの敵対的学習がAIエージェントの自己評価を変える — Anthropicの「Harness Design」を読み解く

Anthropic Harness Design記事のアイキャッチ - マルチエージェントアーキテクチャの概念図

画像生成でおなじみのGAN(Generative Adversarial Networks)。生成器と識別器が競い合いながら品質を高めていくこの仕組みを、AIコーディングエージェントのアーキテクチャ設計に応用したというのが、Anthropicが2026年3月に公開した「Harness Design for Long-Running Application Development」の核心だ。筆者はAnthropic LabsのPrithvi Rajasekaran。長時間自律的なコーディングとフロントエンドデザインにおいて、劇的な品質向上を実現した知見が詰まっている。

「放置すれば勝手に動く」ではうまくいかない — 2つの根本的課題

AIエージェントに「アプリを作って」と丸投げすれば済む話かと思いきや、現実はそう甘くない。Anthropicは長時間タスクにおいて2つの壁に直面した。

1つ目はコンテキスト不安(Context Anxiety)。長時間タスクを続けるとコンテキストウィンドウが埋まっていき、モデルが「そろそろ終わらせなきゃ」と焦り始める現象だ。Sonnet 4.5で特に顕著で、途中で手を抜いたり、未完成のまま完了宣言したりする。人間の「締め切りが近づくと適当に書き上げる」に近いかもしれない。

2つ目は自己評価の甘さ。エージェントが自分の成果を過大評価する傾向で、特にデザインのような主観的タスクで顕著に表れる。「まあいいんじゃない?」と自分で合格を出してしまうのだ。

エージェントが自分で作って自分で評価する構造では、品質の頭打ちが早い。生成と評価は分離しなければならない。

主観的品質を「敵対的評価」で定量する — フロントエンドデザイン実験

Anthropicはまずフロントエンドデザインに絞った実験を行った。採点基準は4つ:Design Quality, Originality, Craft, Functionality。ただしClaudeはデフォルトでCraftとFunctionalityは高得点を取れるため、Design QualityとOriginalityに重心を置いた。

面白いのは「AIスロップ」を明示的にペナルティ対象にした点だ。紫のグラデーション背景に白いカード、丸みを帯びたボタン——こうした「いかにもAIが作った」パターンを低評価とするルールを評価エージェントに組み込んだ。

評価はPlaywright MCPを使って、評価エージェントが実際にページを操作しながら行う。5〜15イテレーション、時には4時間に及ぶ長期実行だ。そして驚くべき結果が出た。オランダ美術館サイトのデザインタスクで、10回目のイテレーション時に創造的飛躍が起きたのだ。それまでのダークテーマから一転、3Dルーム空間にチェッカーフロアを敷き、ギャラリー間をドアで移動できるインタラクティブな体験へと進化した。生成エージェントと評価エージェントの敵対的やり取りが、単なる改善を超えた創造性を引き出した瞬間だった。

3エージェント・フルスタック・アーキテクチャ — Planner × Generator × Evaluator

フロントエンド実験の知見をベースに、Anthropicは本格的なフルスタック開発向けアーキテクチャを構築した。3つのエージェントが連携する。

Plannerは、1〜4文のプロンプトをフルプロダクト仕様に拡張する。ただし製品コンテキストと高レベルな技術設計に留め、詳細な技術仕様は書かない。理由は明確だ——詳細仕様に間違いが含まれると、それが下流のGeneratorに伝播してしまうからだ。

Generatorはスプリント単位で1機能ずつ実装する。React + Viteのフロントエンド、FastAPIのバックエンド、SQLite/PostgreSQLのDBというモダンな技術スタック。各スプリント終了時に自己評価を行い、その後QA(Evaluator)へ引き渡す。もちろんgitでバージョン管理。

EvaluatorはPlaywright MCPでユーザーのようにクリック操作を行い、UI機能・API・DB状態をテストする。Product Depth / Functionality / Visual Design / Code Qualityの4基準で採点し、閾値に満たなければそのスプリントは失敗扱いとなる。

スプリントコントラクト — 「完了」の定義をコードの前に合意する

このアーキテクチャの鍵になるのがスプリントコントラクトの概念だ。各スプリントの開始前に、GeneratorとEvaluatorが「何が完了とみなされるか」を合意する。コードを書く前に基準を明確にする——これはアジャイル開発における「Doneの定義(Definition of Done)」と同じ発想だ。

高レベルな仕様からテスト可能な実装基準へのこの橋渡しにより、「作った本人は完成したと思っているのに、評価者は未完成と判定する」という齟齬を防ぐ。

コンテキストリセット vs コンパクション — 記憶の管理戦略

長時間タスクにおける記憶管理についても重要な知見がある。Compactionは会話の前半を要約し、同じエージェントが継続する手法。連続性は保てるが、要約の品質に依存し、完全にクリーンな状態ではない。Resetは完全に新しいセッションを開始する手法で、Context Anxietyに対しては有効だが、ハンドオフ成果物に十分な状態情報を含める必要がある。

興味深いのは、Opus 4.5ではContext Anxietyが大幅に改善し、ResetなしにCompactionだけで対応可能になった点だ。モデルの進化がアーキテクチャの複雑さを軽減する好例と言える。

まとめ — 人間の開発プロセスを鏡写しにする設計

AnthropicのHarness Designを読んで感じるのは、このアーキテクチャが成熟した人間の開発チームのプロセスを忠実に模倣しているということだ。Plannerはプロダクトマネージャー、Generatorは開発者、EvaluatorはQAエンジニア。スプリントコントラクトはスクラムのDoneの定義。コンテキストリセットは「一度頭を冷やしてリフレッシュする」人間の感覚に近い。

GANの「敵対的学習」というアイデアを、生成と評価の分離という形でエージェント設計に持ち込んだ点は秀逸だ。自分で作ったものを自分で評価する限界は、人間もAIも同じ。独立した評価者(あるいは評価エージェント)の存在が、品質と創造性の両方を引き上げる。

オーケストレーションはClaude Agent SDKで構築されており、実用的な実装としても参考になる。エージェントベースの開発を真剣に考えているエンジニアにとって、必読の記事だ。

出典: Harness Design for Long-Running Application Development — Anthropic Engineering Blog(2026-03-24, Prithvi Rajasekaran)