← AI開発 資料アーカイブ
ハーネス設計

ハーネス設計解析レポート:Planner/Generator/Evaluatorを中心とした世界最高水準アーキテクチャ

元ファイル: システム要件定義の分析と汎用化方法/ハーネス設計解析レポート:Planner_Generator_Evaluatorを中心とした世界最高水準アーキテクチャ.md

要約

ハーネス設計解説動画を解析し、Anthropic・OpenAI・Addy Osmani・Martin Fowlerの公開知見と照合して『世界最高水準のハーネス設計』を提示するレポート。Planner/Generator/Evaluatorの3エージェントに加え、決定論的センサー・品質ゲート・観測・メモリ・ルール更新が閉ループを形成する自己改善型アーキテクチャを定義する。8階層、推奨ディレクトリ構成、最小必須10ファイル、評価ルーブリック、運用フロー、失敗→ハーネス強化の対応表まで網羅している。

要点

Planner-Generator-Evaluatorハーネス設計品質ゲート評価ルーブリック閉ループfailure-registryAnthropic

ハーネス設計解析レポート:Planner / Generator / Evaluatorを中心とした世界最高水準アーキテクチャ

作成者: Manus AI
作成日: 2026-05-11
対象動画: ハーネス設計(スタッフ)動画.mp4

1. エグゼクティブサマリー

本動画の中心的な主張は、ハーネスとは、AIが人間の意図からブレず、目的の成果物に到達するための制約・役割分担・評価ループを最初から設計しておく仕組みである、というものです。動画では、Anthropicの公開事例に触れながら、Planner、Generator、Evaluatorの3エージェント構成をプロジェクト単位で用意し、CLAUDE.md.claude/agents/、評価基準ファイルを通じてAIに必ず読ませる設計が提案されています。

外部調査の結果、この仮説は現在のエージェント開発の最先端と整合しています。Anthropicは、長時間自律開発でGeneratorとEvaluatorを分離し、Plannerを含む3エージェント構成を有効なハーネスとして提示しています。1 また、Anthropicのエージェント設計記事は、agentic systemを固定経路のworkflowと自律的なagentに分け、ground truth、停止条件、sandbox、guardrailsの重要性を強調しています。2 Addy Osmaniは、エージェントを「Model + Harness」と定義し、プロンプト、ツール、文脈管理、hooks、sandbox、subagents、feedback loop、recovery pathが実用性能を決めると整理しています。3 Martin Fowlerの記事では、ハーネスを事前制御であるfeedforwardと事後制御であるfeedbackの組み合わせとして捉えています。4 OpenAIは、巨大なAGENTS.mdを避け、短い入口ファイルを目次にし、詳細な知識ベースを構造化されたdocs/へ置く設計を実運用知見として示しています。5

結論: 世界最高水準のハーネス設計は、単に3つのエージェントMarkdownを置くことではありません。最適解は、短い入口ルール、プロジェクト固有の3エージェント、評価ルーブリック、決定論的品質センサー、実行ログ、失敗からルールを増やす学習ループを一体化した、自己改善型のAI実行基盤です。

2. 動画内容の解析

動画は約4分46秒で、ハーネス設計の目的、3エージェント構成、プロジェクトごとのエージェント定義、評価基準の外部化、CLAUDE.mdによる強制読込の必要性を順に説明しています。話者の仮説は、「汎用エージェントをどこかにまとめて置く」のではなく、作るものによって仕様設計・生成物・評価基準が変わるため、プロジェクトごとにPlanner、Generator、Evaluatorを定義するべきという点にあります。

動画内の論点 解釈 設計上の意味
AIにブレさせない制限を作る ハーネスは制約と誘導の仕組みである 入口ルール、禁止事項、品質基準、停止条件を明文化する
Plannerが仕様書を作る 生成前に目的を構造化する 要件、非機能要件、受け入れ基準、タスク分解を担当させる
Generatorが作る 実装または成果物生成を行う Plannerの仕様契約だけを入力にし、勝手な方針変更を禁止する
Evaluatorが評価する 自己評価を外部化する 評価ルーブリック、テスト、採点、差戻し基準を担当させる
何度も反復する 合格するまで品質ゲートを回す 最大反復数と合格閾値を設定する
プロジェクトごとにエージェントを置く 汎用化しすぎると評価軸が薄くなる .claude/agents/はプロジェクト固有の専門家として定義する
CLAUDE.mdに明記する 初期文脈で必ず読ませる CLAUDE.mdまたはAGENTS.mdを短い入口地図にする

この解析から、動画内の「ハーネス」は、現在の用語で言えば、agent harness、context engineering、workflow orchestration、quality gate、agent evaluationを組み合わせた設計概念です。特に「Generatorに作らせ、Evaluatorが何度も戻す」という考えは、Anthropicの長時間アプリ開発ハーネスと同じ中核構造です。1

3. 調査に基づくハーネス設計の定義

本レポートでは、ハーネス設計を次のように定義します。

ハーネス設計とは、AIモデルの周囲に、目的、文脈、権限、ツール、役割分担、評価基準、品質ゲート、観測、復旧、学習更新を配置し、AIの出力を人間が望む方向へ安定的に収束させるための実行アーキテクチャである。

この定義では、ハーネスを単なるプロンプトやディレクトリ構成に限定しません。実務上のハーネスは、読むべき情報、実行できる行動、検査される条件、失敗時の戻し方、次回以降に失敗を再発させない仕組みを含む必要があります。

階層 役割 代表ファイル・仕組み
Intent layer 人間の目的を短く明確に伝える CLAUDE.md, AGENTS.md, docs/product-specs/
Context layer 必要な知識を体系化する docs/architecture/, docs/design-docs/, docs/references/
Agent layer 役割分担を定義する .claude/agents/planner.md, generator.md, evaluator.md
Rule layer 事前制御を行う .claude/rules/, quality/policies/
Tool layer 実行可能な手段を限定・説明する .mcp.json, .claude/skills/, scripts/
Sensor layer 事後評価を行う evals/, tests/, quality/checks/, hooks
Memory layer 状態と失敗履歴を残す harness/runs/, harness/handoffs/, .claude/agent-memory/
Governance layer 人間の確認点と変更管理を置く docs/adr/, release/, review/

4. 世界最高水準のハーネス設計アーキテクチャ

下図は、動画内容と外部調査を統合した、現時点で最も強いハーネス設計の参照アーキテクチャです。重要なのは、Planner、Generator、Evaluatorだけでなく、決定論的センサー、品質ゲート、観測、メモリ、ルール更新が閉ループを形成している点です。

世界最高水準ハーネス設計アーキテクチャ

コンポーネント 責務 合格条件
Human / Product Owner 目的、制約、優先順位、承認を与える 要求が測定可能な成果物に変換されている
Entry Map CLAUDE.mdまたはAGENTS.mdとして、読むべき資料と必須ワークフローを示す 100〜150行程度で、詳細文書へのリンクが明確である
Planner Agent 要件定義、仕様、タスク分解、リスク、受け入れ基準を作る Generatorが迷わず作業できる契約書になっている
Generator Agent Plannerの仕様に従い成果物を生成する 勝手な仕様変更をせず、実行ログと根拠を残す
Deterministic Sensors test、typecheck、lint、build、E2E、security scanを行う 機械的に検証可能な項目がすべて通過する
Evaluator Agent ルーブリックで主観品質と仕様適合性を評価する 具体的な差戻し理由、採点、改善指示を返す
Quality Gate センサーとEvaluatorの判定を統合する pass/failが曖昧でなく、再実行条件が明確である
Feedback Packet Generatorへ戻す修正指示を構造化する 何を、なぜ、どの証拠で直すかが明確である
Observability logs、metrics、traces、screenshots、costを残す 後から再現・監査・改善できる
Harness Memory 失敗履歴をルール・テスト・ADRへ昇格する 同じ失敗が再発しないようにハーネスが強化される

このアーキテクチャは、生成と評価を分離するAnthropic型の3エージェント構成短い入口ファイルを地図にするOpenAI型の知識管理feedforwardとfeedbackを組み合わせるFowler型の制御設計失敗をルールへ変換するOsmani型のratchet運用を統合しています。1 4

5. 推奨ディレクトリ構成

以下は、Claude Code、Codex、Cursor、Cline、Manus系エージェントなど、複数のAI開発環境に転用しやすい、プロジェクト内ハーネスの推奨ディレクトリ構成です。Claude Codeの公式ドキュメントでは、プロジェクト配下の.claude/にsettings、rules、skills、commands、agents、agent-memoryを置けることが示されています。6

project-root/
├── AGENTS.md                         # 全AIエージェント共通の短い入口地図
├── CLAUDE.md                         # Claude向け入口。AGENTS.mdへの委譲でもよい
├── ARCHITECTURE.md                   # システム境界、依存方向、主要設計判断
├── README.md                         # 人間向け概要
├── .mcp.json                         # MCPや外部ツール接続の共有設定
├── .claude/
│   ├── settings.json                 # 共有権限、hooks、許可ツール、環境設定
│   ├── settings.local.json           # 個人設定。原則git管理しない
│   ├── agents/
│   │   ├── planner.md                # 要件整理・仕様化・タスク分解担当
│   │   ├── generator.md              # 実装・生成担当
│   │   ├── evaluator.md              # 評価・差戻し・採点担当
│   │   ├── reviewer.md               # PR/差分レビュー担当
│   │   └── harness-janitor.md        # 失敗履歴からルール・テストを増やす担当
│   ├── rules/
│   │   ├── harness-workflow.md       # P/G/Eを必ず使う運用ルール
│   │   ├── coding-standards.md       # コーディング規約
│   │   ├── testing.md                # テスト方針
│   │   ├── architecture-boundaries.md# 依存方向・禁止依存
│   │   └── security.md               # セキュリティ禁止事項
│   ├── skills/
│   │   ├── spec-writing/SKILL.md     # 仕様作成スキル
│   │   ├── ui-verification/SKILL.md  # UI検証スキル
│   │   └── refactor/SKILL.md         # リファクタリングスキル
│   ├── commands/
│   │   ├── plan.md                   # Planner起動用コマンド
│   │   ├── implement.md              # Generator起動用コマンド
│   │   ├── evaluate.md               # Evaluator起動用コマンド
│   │   └── harness-retro.md          # 失敗振り返り用コマンド
│   └── agent-memory/
│       ├── planner/MEMORY.md
│       ├── generator/MEMORY.md
│       └── evaluator/MEMORY.md
├── docs/
│   ├── product-specs/
│   │   ├── index.md
│   │   └── acceptance-criteria.md
│   ├── architecture/
│   │   ├── context-map.md
│   │   ├── module-boundaries.md
│   │   └── data-flow.md
│   ├── adr/
│   │   └── 0001-record-architecture-decisions.md
│   ├── design-docs/
│   │   ├── core-beliefs.md
│   │   └── design-principles.md
│   ├── exec-plans/
│   │   ├── active/
│   │   ├── completed/
│   │   └── tech-debt-tracker.md
│   └── references/
│       └── llm-readable-reference.md
├── harness/
│   ├── contracts/
│   │   ├── task-contract.template.md
│   │   └── handoff.template.md
│   ├── runs/
│   │   └── YYYYMMDD-HHMM-task-name/
│   │       ├── planner-output.md
│   │       ├── generator-log.md
│   │       ├── evaluator-report.md
│   │       └── final-decision.md
│   ├── feedback/
│   │   ├── feedback-packet.template.md
│   │   └── recurring-failures.md
│   └── memory/
│       ├── failure-registry.md
│       └── harness-change-log.md
├── evals/
│   ├── rubrics/
│   │   ├── product-quality.md
│   │   ├── implementation-quality.md
│   │   ├── security-quality.md
│   │   └── documentation-quality.md
│   ├── checklists/
│   │   ├── definition-of-done.md
│   │   └── release-readiness.md
│   └── scenarios/
│       └── critical-user-journeys.md
├── quality/
│   ├── gates/
│   │   ├── pre-implementation.md
│   │   ├── pre-merge.md
│   │   └── release.md
│   ├── scripts/
│   │   ├── run-all-checks.sh
│   │   └── architecture-check.sh
│   └── reports/
├── observability/
│   ├── logs/
│   ├── screenshots/
│   ├── traces/
│   └── metrics/
├── scripts/
│   ├── bootstrap.sh
│   ├── test.sh
│   ├── lint.sh
│   └── build.sh
└── tests/
    ├── unit/
    ├── integration/
    └── e2e/

この構成で最も重要なのは、AGENTS.mdCLAUDE.mdを巨大な指示書にしないことです。OpenAIの知見が示すように、巨大な入口ファイルは文脈を圧迫し、重要度を希釈し、腐敗しやすく、検証しづらくなります。5 したがって、入口ファイルは地図に徹し、詳細はdocs/.claude/rules/evals/harness/へ分割します。

6. 最小必須ファイルの設計

すべてを一度に作る必要はありません。最小構成としては、以下の10ファイルをまず作るべきです。

優先度 ファイル 目的
1 AGENTS.md AI全体の入口地図。必ずP/G/Eを使うことを宣言する
2 CLAUDE.md Claude向け入口。AGENTS.mdを読むよう指示する
3 .claude/agents/planner.md 要件、制約、受け入れ基準を作る
4 .claude/agents/generator.md Planner契約に従って成果物を作る
5 .claude/agents/evaluator.md ルーブリックで合否判定し、差戻しする
6 .claude/rules/harness-workflow.md P/G/Eループの実行ルールを固定する
7 evals/rubrics/definition-of-done.md 合格条件を明文化する
8 harness/contracts/task-contract.template.md PlannerからGeneratorへの引き渡し形式を固定する
9 harness/feedback/feedback-packet.template.md EvaluatorからGeneratorへの差戻し形式を固定する
10 harness/memory/failure-registry.md 失敗を記録し、ルール・テスト化する

7. Planner / Generator / Evaluatorの役割定義

Plannerは、ユーザー要望をそのまま実装に渡してはいけません。Plannerの仕事は、曖昧な要求を、目的、非目的、制約、前提、受け入れ基準、リスク、タスク分解、検証方法へ変換することです。Generatorは、Plannerが作った契約以外の勝手な解釈を最小化し、実装または成果物生成に集中します。Evaluatorは、Generatorと別人格として、仕様適合性、品質、リスク、保守性、セキュリティ、ユーザー価値を採点し、合格しない場合は具体的な差戻しを返します。

Agent 入力 出力 禁止事項
Planner ユーザー要望、既存docs、制約 task contract、acceptance criteria、risk list 実装に飛びつくこと、曖昧なままGeneratorへ渡すこと
Generator task contract、関連docs、rules 成果物、変更ログ、自己検査結果 仕様変更、評価基準の無視、テスト未実行で完了宣言
Evaluator task contract、成果物、ログ、rubric、センサー結果 evaluator report、score、blocking issues、feedback packet 自分で修正すること、根拠なしに合格にすること

8. 評価ルーブリックの設計

Evaluatorは「良いか悪いか」を曖昧に判断するのではなく、採点可能な基準で評価します。Anthropicはフロントエンド設計評価において、design quality、originality、craft、functionalityなど、主観的品質を具体的な評価軸に分解しています。1 この発想を一般化すると、ハーネス設計では以下のような評価基準が必要です。

評価軸 最高評価の条件 ブロッカー例
仕様適合性 受け入れ基準をすべて満たす 要求された主要機能が欠けている
実行可能性 build、test、lintが通る 実行不能、依存関係不備、型エラー
保守性 小さな責務、明確な境界、重複が少ない 巨大関数、循環依存、暗黙結合
安全性 秘密情報、破壊的操作、権限が管理されている APIキー露出、未確認の外部実行
ユーザー価値 ユーザーが迷わず成果を得られる 成果物はあるが使い方が分からない
観測可能性 ログ、レポート、再現手順が残る 何をしたか追跡できない
ハーネス準拠 P/G/Eの証跡が残る PlannerやEvaluatorを飛ばして完了している

9. 運用フロー

推奨フローは、Plan → Contract → Generate → Check → Evaluate → Feedback → Regenerate → Release → Learnです。この順序をCLAUDE.md.claude/rules/harness-workflow.mdに明記し、AIが勝手に短絡しないようにします。

フェーズ 実行者 成果物 次へ進む条件
Plan Planner planner-output.md 受け入れ基準と検証方法が明確である
Contract Planner task-contract.md Generatorが実装可能な粒度である
Generate Generator 変更ファイル、生成物、generator-log.md 自己検査が完了している
Check scripts / sensors test、lint、build、E2E結果 重大な機械的エラーがない
Evaluate Evaluator evaluator-report.md ルーブリック閾値を満たす
Feedback Evaluator feedback-packet.md 差戻しが具体的で再実行可能である
Regenerate Generator 修正版 最大反復数以内に改善している
Release Reviewer / Human final-decision.md 人間確認または自動承認条件を満たす
Learn harness-janitor ルール、テスト、ADR更新 同じ失敗の再発防止策が入る

10. 導入時の実務ルール

最初から完璧なハーネスを作るより、失敗が起きるたびにハーネスを強くする運用が重要です。Addy Osmaniが述べるように、良いハーネスでは、エージェントが一度ミスしたら、そのミスを再発させないようにルール、フック、テスト、レビュー担当エージェントを増やします。3 Martin Fowlerの表現では、これは人間がハーネスを反復改善するsteering loopです。4

失敗 追加すべきハーネス要素
AIが仕様を勝手に変更した Planner契約の変更禁止ルール、Evaluatorの仕様逸脱チェック
テストせず完了宣言した pre-merge gate、run-all-checks.sh、完了宣言テンプレート
同じ設計ミスを繰り返した failure-registry.md、architecture rule、custom linter
評価が甘かった Evaluator few-shot、採点基準、blocking conditionの明確化
長時間作業で文脈を失った handoff artifact、context reset、harness/runs/記録
ドキュメントが古くなった docs freshness check、harness-janitor、ADR更新ルール

11. 結論

動画内の仮説は正しく、むしろ現在のエージェント設計の最前線と一致しています。ただし、世界最高水準を目指すなら、CLAUDE.md.claude/agents/planner.mdgenerator.mdevaluator.mdを置くだけでは不足です。実務で強いハーネスは、入口ファイルを短い地図にし、プロジェクト固有のエージェントを置き、評価基準を外部化し、機械的品質センサーを組み込み、失敗履歴を次のルール・テスト・ADRへ昇格させる閉ループとして設計されます。

最終的に目指すべき状態は、AIに「頑張って」と頼むことではありません。AIが迷えないほど文脈を整理し、勝手に逸脱できないほど制約を明確にし、合格できない成果物が自然に差し戻され、失敗するたびにハーネスが強くなる状態です。これが、本レポートで提案する世界最高水準のハーネス設計アーキテクチャです。

References

↑ トップへ戻る