GANスタイルハーネス スキル
Anthropicの長期実行アプリケーション開発のためのハーネス設計(2026年3月24日)に触発されました
生成と評価を分離したマルチエージェントハーネスです。敵対的なフィードバックループを形成することで、単一エージェントでは達成できない品質を実現します。
核となる洞察
エージェントに自身の成果物を評価させると、彼らは病的な楽観主義者になります。凡庸な出力を褒め称え、正当な問題から逃げ回ります。しかし、独立した評価者を冷酷なまでに厳格に設計することは、生成者に自己批判を教えるよりはるかに現実的です。
これはGAN(Generative Adversarial Network)と同じダイナミクスです。Generatorが生成し、Evaluatorが批評し、そのフィードバックが次の反復を駆動します。
使用すべきケース
- 一行のプロンプトからアプリケーション全体を構築する場合
- 高い視覚的品質が求められるフロントエンドデザインタスク
- コードだけでなく、実際に動作する機能が必要なフルスタックプロジェクト
- 「AIの粗い仕上がり」が許容できないあらゆるタスク
- プロダクション品質の出力を得るために50~200ドルを投資してもよいプロジェクト
使用すべきでないケース
- 単一ファイルの簡単な修正(標準の
claude -pを使用) - 厳しい予算制約のあるタスク(10ドル未満)
- 単純なリファクタリング(代わりにde-sloppifyパターンを使用)
- テストがすでに十分に定義されているタスク(TDDワークフローを使用)
アーキテクチャ
┌─────────────┐
│ プランナー │
│ (Sonnet) │
└──────┬──────┘
│ プロダクト仕様
│ (機能、スプリント、デザイン方針)
▼
┌────────────────────────┐
│ │
│ ジェネレータ- │
│ エバリュエータ │
│ フィードバックループ │
│ │
│ ┌──────────┐ │
│ │ジェネレータ│--構築-->│──┐
│ │ (Sonnet) │ │ │
│ └────▲─────┘ │ │
│ │ │ │ 実アプリ
│ フィードバック │ │
│ │ │ │
│ ┌────┴─────┐ │ │
│ │エバリュエータ│<-テスト│──┘
│ │ (Sonnet) │ │
│ │+Playwright│ │
│ └──────────┘ │
│ │
│ 5~15回の反復 │
└────────────────────────┘
3つのエージェント
1. プランナーエージェント
役割: プロダクトマネージャー — 簡潔なプロンプトを完全なプロダクト仕様に拡張します。
主要な動作:
- 一行のプロンプトを受け取り、16機能、複数スプリントの仕様書を作成します
- ユーザーストーリー、技術要件、ビジュアルデザインの方針を定義します
- 意図的に野心的であること — 保守的な計画は物足りない結果を生みます
- 後でエバリュエータが使用する評価基準を生成します
モデル: デフォルトはSonnet。GAN_PLANNER_MODEL=opus でより深い仕様拡張が可能
2. ジェネレータエージェント
役割: 開発者 — 仕様に従って機能を実装します。
主要な動作:
- 構造化されたスプリントで動作します(新しいモデルでは継続モードも可能)
- コードを書く前にエバリュエータと「スプリント契約」を交渉します
- フルスタックツールを使用:React、FastAPI/Express、データベース、CSS
- イテレーション間のバージョン管理にgitを使用します
- エバリュエータのフィードバックを読み、次のイテレーションに反映します
モデル: デフォルトはSonnet。GAN_GENERATOR_MODEL=opus で最大のコーディング能力
3. エバリュエータエージェント
役割: QAエンジニア — コードだけでなく、実際に動作するアプリケーションをテストします。
主要な動作:
- Playwright MCP を使用して実際のアプリケーションと対話します
- 機能をクリックし、フォームに入力し、APIエンドポイントをテストします
- 4つの基準(設定可能)に基づいてスコアリングします:
- デザイン品質 — 一貫性のある全体像として感じられるか?
- 独創性 — テンプレートやAIパターンではなく、独自の判断がなされているか?
- 技術力 — タイポグラフィ、スペーシング、アニメーション、マイクロインタラクションは?
- 機能性 — すべての機能が実際に動作するか?
- スコアと具体的な問題を含む構造化されたフィードバックを返します
- 冷酷なまでに厳格に設計されています — 凡庸な仕事を褒めることは決してありません
モデル: デフォルトはSonnet。GAN_EVALUATOR_MODEL=opus でより強力な判断力とツール使用
評価基準
デフォルトの4つの基準、各1~10点:
## 評価ルーブリック
### デザイン品質 (重み: 0.3)
- 1-3: 一般的、テンプレート的、「AIの粗い仕上がり」の美学
- 4-6: 無難だが特筆すべき点はない、慣例に従っている
- 7-8: 特徴的で、まとまりのある視覚的アイデンティティ
- 9-10: プロのデザイナーの仕事と見紛う
### 独創性 (重み: 0.2)
- 1-3: デフォルトの色、既存のレイアウト、個性なし
- 4-6: 多少の独自の選択はあるが、ほとんどが標準的なパターン
- 7-8: 明確な創造的ビジョン、独自のアプローチ
- 9-10: 驚きと喜びがあり、真に斬新
### 技術力 (重み: 0.3)
- 1-3: 壊れたレイアウト、欠落した状態、アニメーションなし
- 4-6: 動作はするが粗い、スペーシングに一貫性がない
- 7-8: 洗練され、スムーズなトランジション、レスポンシブ
- 9-10: ピクセルパーフェクト、楽しいマイクロインタラクション
### 機能性 (重み: 0.2)
- 1-3: コア機能が壊れているか欠落している
- 4-6: ハッピーパスは動作するが、エッジケースで失敗する
- 7-8: すべての機能が動作し、適切なエラーハンドリングがある
- 9-10: 堅牢で、あらゆるエッジケースを処理する
スコアリング
- 加重スコア = sum(基準スコア * 重み)
- 合格しきい値 = 7.0(設定可能)
- 最大イテレーション数 = 15(設定可能、通常5~15で十分)
使用方法
コマンド経由
# 完全な3エージェントハーネス
/project:gan-build "カンバンボード、チームコラボレーション、ダークモードを備えたプロジェクト管理アプリを構築"
# カスタム設定
/project:gan-build "レシピ共有プラットフォームを構築" --max-iterations 10 --pass-threshold 7.5
# フロントエンドデザインモード(プランナーなし、ジェネレータ+エバリュエータのみ)
/project:gan-design "暗号通貨ポートフォリオトラッカーのランディングページを作成"
シェルスクリプト経由
# 基本的な使い方
./scripts/gan-harness.sh "音楽ストリーミングダッシュボードを構築"
# オプション付き
GAN_MAX_ITERATIONS=10 \
GAN_PASS_THRESHOLD=7.5 \
GAN_EVAL_CRITERIA="functionality,performance,security" \
./scripts/gan-harness.sh "タスク管理用のREST APIを構築"
Claude Code経由(手動)
# ステップ1: 計画
claude -p --model sonnet "あなたはプロダクトプランナーです。PLANNER_PROMPT.mdを読んでください。この簡単な指示を完全なプロダクト仕様に拡張してください: 'カンバンボードアプリを構築'。仕様をspec.mdに書き出してください。"
# ステップ2: 生成(イテレーション1)
claude -p --model sonnet "あなたはジェネレータです。spec.mdを読んでください。スプリント1を実装してください。ポート3000で開発サーバーを起動してください。"
# ステップ3: 評価(イテレーション1)
claude -p --model sonnet --allowedTools "Read,Bash,mcp__playwright__*" "あなたはエバリュエータです。EVALUATOR_PROMPT.mdを読んでください。http://localhost:3000で動作しているアプリをテストしてください。ルーブリックに従ってスコアリングしてください。フィードバックをfeedback-001.mdに書き出してください。"
# ステップ4: 生成(イテレーション2 — フィードバックを読む)
claude -p --model sonnet "あなたはジェネレータです。spec.mdとfeedback-001.mdを読んでください。すべての問題に対処し、スコアを改善してください。"
# 合格しきい値に達するまでステップ3と4を繰り返す
モデル能力の進化に伴う変化
ハーネスはモデルの改善に伴って簡略化されるべきです。Anthropicの進化に従います:
ステージ1 — 弱いモデル(Sonnetクラス)
- 完全なスプリント分解が必要
- スプリント間のコンテキストリセット(コンテキスト不安の回避)
- 2エージェント最小構成:初期化エージェント+コーディングエージェント
- モデルの限界を補うための重い足場
ステージ2 — 有能なモデル(Opus 4.5クラス)
- 完全な3エージェントハーネス:プランナー+ジェネレータ+エバリュエータ
- 各実装フェーズの前のスプリント契約
- 複雑なアプリには10スプリントの分解
- コンテキストリセットは依然として有用だが、重要性は低下
ステージ3 — フロンティアモデル(Opus 4.6クラス)
- 簡略化されたハーネス:1回の計画パス、継続的な生成
- 評価は1回の最終パスのみに削減(モデルがより賢い)
- スプリント構造は不要
- 自動圧縮がコンテキストの成長を処理
重要な原則: ハーネスのすべてのコンポーネントは、モデルが単独ではできないことに関する仮定をコード化しています。モデルが改善されたら、それらの仮定を再テストしてください。不要になったものを取り除いてください。
設定
環境変数
| 変数 | デフォルト値 | 説明 |
|---|---|---|
GAN_MAX_ITERATIONS | 15 | 最大ジェネレータ-エバリュエータサイクル数 |
GAN_PASS_THRESHOLD | 7.0 | 合格するための加重スコア(1~10) |
GAN_PLANNER_MODEL | sonnet | プランニングエージェントのモデル |
GAN_GENERATOR_MODEL | sonnet | ジェネレータエージェントのモデル |
GAN_EVALUATOR_MODEL | sonnet | エバリュエータエージェントのモデル |
GAN_EVAL_CRITERIA | design,originality,craft,functionality | カンマ区切りの評価基準 |
GAN_DEV_SERVER_PORT | 3000 | 実アプリのポート |
GAN_DEV_SERVER_CMD | npm run dev | 開発サーバー起動コマンド |
GAN_PROJECT_DIR | . | プロジェクトの作業ディレクトリ |
GAN_SKIP_PLANNER | false | プランナーをスキップし、仕様を直接使用 |
GAN_EVAL_MODE | playwright | playwright、screenshot、または code-only |
評価モード
| モード | ツール | 最適な用途 |
|---|---|---|
playwright | ブラウザMCP+ライブインタラクション | UIを備えたフルスタックアプリ |
screenshot | スクリーンショット+視覚分析 | 静的サイト、デザインのみ |
code-only | テスト+リンティング+ビルド | API、ライブラリ、CLIツール |
アンチパターン
-
評価者があまい — 評価者がイテレーション1で全てを合格させる場合、ルーブリックが甘すぎます。スコアリング基準を厳しくし、一般的なAIパターンに明示的なペナルティを追加してください。
-
ジェネレータがフィードバックを無視する — フィードバックはインラインではなくファイルとして渡すようにしてください。ジェネレータは各イテレーションの開始時に
feedback-NNN.mdを読む必要があります。 -
無限ループ — 常に
GAN_MAX_ITERATIONSを設定してください。ジェネレータが3イテレーションを過ぎてもスコアのプラトーを改善できない場合、停止して人間によるレビューをフラグしてください。 -
評価者が表面的なテストしかしない — 評価者はアプリのスクリーンショットを撮るだけでなく、Playwrightを使用して実際に対話しなければなりません。ボタンをクリックし、フォームに入力し、エラー状態をテストしてください。
-
評価者が自身の修正を称賛する — 評価者に修正を提案させ、その修正を評価させることは絶対にしないでください。評価者は批評のみを行い、修正はジェネレータが行います。
-
コンテキストの枯渇 — 長時間のセッションでは、Claude Agent SDKの自動圧縮を使用するか、主要なフェーズ間でコンテキストをリセットしてください。
結果:期待できること
Anthropicが公開した結果に基づく:
| 指標 | 単一エージェント | GANハーネス | 改善 |
|---|---|---|---|
| 時間 | 20分 | 4~6時間 | 12~18倍長い |
| コスト | 9ドル | 125~200ドル | 14~22倍高い |
| 品質 | かろうじて動作 | プロダクション品質 | フェーズ変化 |
| コア機能 | 壊れている | すべて動作 | N/A |
| デザイン | 一般的なAIの粗い仕上がり | 特徴的で洗練されている | N/A |
トレードオフは明白です: 出力品質の質的飛躍のために、約20倍の時間とコストがかかります。これは品質が重要なプロジェクトのためのものです。
参考文献
- Anthropic: Harness Design for Long-Running Apps — Prithvi Rajasekaranによる原著論文
- Epsilla: The GAN-Style Agent Loop — アーキテクチャの分解
- Martin Fowler: Harness Engineering — より広範な業界コンテキスト
- OpenAI: Harness Engineering — OpenAIによる並行研究