長時間実行アプリ開発のためのAnthropicハーネス設計

TL;DR

Anthropicは、プランナー、ジェネレーター、評価者という3エージェントからなるハーネスをリリースした。これにより、Claudeは複数時間にわたる実行を通じて豊かなフロントエンド設計やフルスタックアプリケーションを自律的に生成可能となり、コンテキスト窓の制限や自己評価バイアスを克服した。


単純な長時間実行エージェントが失敗する理由

  • コンテキスト不安 – Claudeのコンテキスト窓が満杯になると、モデルは作業を早期に終了したり、一貫性を失ったりする。単純なコンパクションでは履歴は保持されるが、モデルの内部状態はリセットされないため、Claudeは依然として不安定な振る舞いを示す。完全なコンテキストリセットと構造化されたハンドオフアーティファクトを組み合わせることで、モデルにクリーンな状態を提供し、早期終了を防ぐことができる。
  • 自己評価バイアス – エージェントが自身の出力を評価すると、特にデザインのような主観的なタスクでは過剰に称賛しがちになる。生成と評価を分離することで、専用の評価者を懐疑的になるように調整でき、ジェネレーターが改善できる具体的なフィードバックを提供できる。

"エージェントは、人間の観察者が平凡と見なすものであっても、自信を持って自身の成果を称賛しがちです。" – Anthropicエンジニアリング投稿


主観的なデザイン品質を評価可能な基準に変換する

Anthropicはフロントエンドデザインに対して以下の4つの明確な評価基準を定義した:

  1. デザイン品質 – 色、フォント、レイアウト、画像、雰囲気の統一性。
  2. 独自性 – カスタムな意思決定の有無、またはストックや一般的なAIパターンとの差異。
  3. 技術的完成度 – マージン、コントラスト比、階層構造などの技術的実装。
  4. 機能性 – 美しさとは無関係な使いやすさ。

重み付けでは、Claudeがすでに技術的完成度と機能性において良好なパフォーマンスを発揮していたため、デザイン品質と独自性に重点を置いた。評価者は少数例を用いてスコアを調整し、著者の好みに一致させるように校正された。

ジェネレーターはHTML/CSS/JSページを生成し、評価者はPlaywrightを使ってライブページにアクセスし、スクリーンショットを撮影、詳細な批判を生成した。反復(1回の実行あたり5〜15回)は生成と評価を交互に繰り返し、ジェネレーターが現在の方向性を改善するか、完全に方向転換するかを判断した。

観察された成果

  • スコアは反復を重ねるごとに向上したが、必ずしも線形的ではなかった。
  • 評価基準の表現が視覚スタイルに直接影響した(例:「博物館品質」は特定の美学へと設計を誘導した)。
  • オランダの美術館サイトの10回目の反復で、ジェネレーターが従来のランディングページから3D CSSベースの空間体験へと切り替える、顕著な創造的飛躍が見られた。

GANにインスパイアされたパターンをフルスタック開発へ拡張する

3エージェントアーキテクチャ

エージェント 役割
プランナー 1〜4文のプロンプトを詳細な製品仕様に拡張し、AI強化の機会を特定し、低レベルの詳細を過剰に指定しない。
ジェネレーター React-Vite-FastAPI-SQLite/PostgreSQLスタックを使用して仕様を機能単位(スプリント)で実装し、git履歴を維持し、ハンドオフ前に自己評価を行う。
評価者 Playwrightで実行中のアプリを動作させ、UI、API、データベースの振る舞いを確認し、各スプリントを基準(デザイン、機能性、深さ、コード品質)に基づいて評価する。

キーとなるメカニズム

  • スプリント契約 – 各スプリントの前に、ジェネレーターが出力物と検証手順を提案;評価者がレビューし承認することで、高レベル仕様との整合性を確保する。
  • ファイルベースのハンドオフ – エージェント間のコミュニケーションは構造化されたファイルの読み書きによって行われ、永続的な会話の必要性を排除する。
  • 自動コンテキストコンパクション – Claude Agent SDKを使用することで、Opus 4.5が成長するコンテキストを処理可能となり、明示的なリセットが不要になった。これはモデルの「コンテキスト不安」が低減されたためである。

比較ベンチマーク:単体 vs. 完全ハーネス

ハーネス 時間 コスト
単体Claude実行(単一エージェント) 20分 $9
完全3エージェントハーネス 6時間 $200

ハーネスは、洗練されたUI、AI支援のスプライト生成、機能的なプレイモードを備えた、はるかに機能豊富なレトロゲームメーカーを生成した。一方、単体実行ではレイアウトの無駄、破損したエンティティ接続、機能しないゲームプレイといった問題が発生した。


Opus 4.6以降のハーネスの簡素化

  • Opus 4.6は長時間コンテキスト処理、計画、自己デバッグの能力を向上させ、スプリント分解の削除を促した。
  • プランナーと評価者は依然として価値がある。プランナーがいなければ、ジェネレーターはプロジェクトを過小評価してしまう。
  • 評価者は、実行終了時の1回のQAプロセスに移行した。Opus 4.6の単体能力範囲内のタスクでは、評価者の追加価値は限定的だったが、エッジケースタスクでは依然として重要なバグを発見した。

更新されたコスト内訳(DAW生成)

フェーズ 時間 コスト
プランナー 4.7分 $0.46
ビルドラウンド1 2時間7分 $71.08
QAラウンド1 8.8分 $3.24
ビルドラウンド2 1時間2分 $36.89
QAラウンド2 6.8分 $3.09
ビルドラウンド3 10.9分 $5.88
QAラウンド3 9.6分 $4.06
合計 3時間50分 $124.70

評価者は依然として、核心的なDAW機能(例:ドラッグ可能なクリップ、インストゥルメントパネル)の欠落を特定した。これは、より強力なモデルであっても、ターゲットされたQAは高いリターンをもたらす重要な要素であることを示している。


教訓と今後の方向性

  1. コンテキストリセット vs. コンパクション – モデルのコンテキストをリセットすることで「コンテキスト不安」を排除できるが、オーケストレーションのオーバーヘッドが増える。モデル(例:Opus 4.5)が強い不安を示す場合、リセットは必須である。新しいモデルではコンパクションのみで十分な場合がある。
  2. 専用の評価者 – ジェネレーターが自己批判的になるように調整するよりも、専用の評価者を懐疑的になるように調整する方が現実的である。評価者のフィードバックループが反復的改善を促進する。
  3. 評価可能な主観的基準 – デザイン原則を明確なスコアにエンコードすることで、曖昧な美的判断を行動可能なフィードバックに変換できる。
  4. 反復的なハーネスの簡素化 – モデルが進化するにつれて、測定可能な効果をもたらさなくなったコンポーネントを体系的に削除する。評価者の有用性はタスク依存であり、二値ではない。
  5. ハイブリッド分解 – 高レベルの計画と機能レベルのスプリント契約の組み合わせにより、スコープ制御と柔軟性のバランスが取れる。早期の仕様エラーが連鎖しないようにする。

Anthropicの研究は、洗練されたハーネス設計が現在のLLMの実用的限界を拡張できることを示しており、モデルがより強力になるにつれて、有用なハーネスの組み合わせの可能性は広がる(縮小しない)ことを示している。


謝辞

Mike Krieger、Michael Agaby、Justin Young、Jeremy Hadfield、David Hershey、Julius Tarng、Xiaoyi Zhang、Barry Zhang、Orowa Sidker、Michael Tingley、Ibrahim Madha、Martina Long、Canyon Robbins、Jake Eaton、Alyssa Leonard、Stef Sequeiraの皆様の貢献に感謝します。


付録:プランナー出力のサンプル(RetroForgeゲームメーカー)

RetroForge - 2Dレトロゲームメーカー

概要
RetroForgeは、2Dレトロスタイルのビデオゲームを設計・構築するためのウェブベースのクリエイティブスタジオです。古典的な8ビットおよび16ビットゲームのノスタルジックな魅力と、現代的な直感的な編集ツールを組み合わせ、ハッカーからインディー開発者まで、誰もが従来のコードを書かずにゲームアイデアを実現できるようにします。

機能
1. プロジェクトダッシュボードと管理
   * プロジェクトの作成、開く、複製、削除
   * サムネイルとタイムスタンプを備えたビジュアルカード
   * メタデータ:名前、説明、解像度、タイルサイズ、パレット
2. タイルベースのレベルエディタ
   * タイル、レイヤー、スクロール可能なビューポートのドラッグアンドドロップ
3. ピクセルアートスプライトエディタ
   * パレットピッカー、ズーム、フレームアニメーション
4. エンティティ行動システム
   * 移動、衝突のためのビジュアルスクリプティング
5. プレイ可能なテストモード
   * 実時間プレビュー、キーボード操作
6. AI支援ツール
   * プロンプト駆動のスプライト生成、レベルレイアウトの提案

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch