マルチエージェントハーネスの概念
マルチエージェントハーネスのコア概念を学びます。エージェント、スキル、PMオーケストレーション、3ティア戦略、PM Gateway、ディスパッチフロー、引き継ぎコントラクト — この章でハーネスの骨格のすべてを理解します。
- エージェントとスキルの定義
- PMオーケストレーションとPM Gatewayの役割
- 3ティア戦略(High/Medium/Low)
- ディスパッチフローと引き継ぎコントラクト
- ハーネスアーキテクチャ全体図
エージェントとは
エージェントの定義
エージェントとは、特定の役割を与えられ、定められた行動指針に従ってタスクを実行するAIアシスタントです。一般的なチャットボットとは異なり、エージェントは固有の名前・役割・行動ルールを持ち、ファイルの読み書きやツールの使用を許可されます。
第1章で例えたように、エージェントは会社の従業員のようなものです。PMはチームリーダーであり、スペシャリストエージェントは各部署の専門家です。企画担当エージェント、デザイン担当エージェント、コーディング担当エージェントがそれぞれの持ち場を果たせば、プロジェクト全体が効率よく進みます。
エージェントの構成要素
各エージェントは4つのコア要素で構成されます。この4つが揃って1つのエージェントを定義します。
具体的には次のとおりです。
-
識別子(name) — エージェントを区別する一意の名前です。co-deckでは
research、design、storyline、html-buildのような短い英語名を使います。ファイル名がそのままエージェント名になります(例:agents/research.md)。 - 役割(role) — このエージェントが何をするのかを一文にまとめたものです。たとえばresearchエージェントの役割は「ウェブから情報を収集し、research_notes.mdに整理すること」です。役割が明確であるほど、PMは適切なエージェントを選べます。
- 行動指針(instructions) — エージェントがタスクを実行するときに従うべき詳細なルールです。「この形式でファイルを書け」「この場合はユーザーに確認しろ」といった指示が含まれます。行動指針が具体的であるほど、エージェントの出力は一貫性があり予測しやすくなります。
- ツール(tools) — エージェントが使用できるツールの一覧です。ファイル読み取り(Read)、ファイル書き込み(Write)、編集(Edit)、シェルコマンド(Bash)、ウェブ検索(WebSearch)などがあります。すべてのエージェントがすべてのツールを使えるわけではありません。たとえばPMエージェントはファイルを直接修正できないよう、ツールが制限されています。
ハーネス内のエージェントタイプ
co-deckハーネスは、プレゼンテーションパイプラインの各段階ごとに責任を持つ複数のスペシャリストエージェントを定義しています。
オーケストレーター
- PMエージェント — プロジェクトマネージャーです。このエージェントはコードを書いたりファイルを直接編集したりしません。設定を読み、実行を計画し、スペシャリストエージェントを配置します。
コンテンツエージェント
- research — ウェブソースを収集し、
research_notes.mdを作成します。 - storyline — ナラティブ構造とスライドごとのコンテンツを作成します。
- source-verifier — URLを検証し、ソースの信頼性を確認します。
プロダクションエージェント
- design — ビジュアルテーマ(色・フォント・レイアウト)を確定します。
- html-build — デッキ仕様からHTMLスライドを生成します。
- pdf-export — スライドをPDF出力に変換します。
アセットエージェント
- image-curator — スライド画像を検索してダウンロードします。
- diagram-specialist — SVGダイアグラムやチャートを生成します。
- measure — PDF用のレイアウト座標を測定します。
エージェントファイルの例
以下は、エージェント定義ファイルがどのようなものかを示す簡略化した例です。実際のファイルにははるかに多くの詳細が含まれますが、この例で全体のイメージをつかめます。
# agents/research.md
---
name: research
tier: medium
phases: 1
role: >
ウェブ資料を収集し、ストーリーライン設計のための
research_notes.mdを作成します。
dispatch_triggers:
- "トピックを調査して"
- "資料を収集して"
- "リサーチノートを書いて"
---
## Instructions
- 韓国語と英語の資料を両方検索します。
- 調査結果をresearch_notes.mdに書きます。
- URL、重要な事実、ソースの信頼性メモを含めます。
- スライドコンテンツは作りません — それはstorylineエージェントの役目です。
このファイルが、エージェントが何をするのか(role)、いつディスパッチされるのか(dispatch_triggers)、何をしてはいけないのか(Instructionsの禁止ルール)を明確に定義している点に注目してください。この明確さこそが、マルチエージェント協調を安定して機能させる核心です。
スキルとは
スキルの定義
スキルとは、エージェントが実行できる再利用可能なワークフローです。エージェントが「誰」であるなら、スキルはそのエージェントが「何をするか」を定義します。1つのスキルは複数のステップからなる作業手順であり、特定のトリガーによって自動的に有効化されます。
わかりやすく言えば、エージェントが料理人ならスキルは料理のレシピです。料理人(エージェント)は複数のレシピ(スキル)を持っており、注文が入ると(トリガー)該当するレシピに沿って料理を準備します。
スキルの構成要素
各スキルは次の4つの要素で構成されます。
-
名前(name) — スキルを識別する一意の名前です。
research、html-build、pdf-exportのように、エージェント名と関連していることが多いです。 - 説明(description) — このスキルが何をするのか、どのステップを経るのかを説明します。PMはどのスキルをディスパッチするか決めるとき、この説明を参考にします。
- トリガー(trigger) — スキルが自動的に有効化される条件です。たとえばユーザーが「リサーチして」と言えば、researchスキルがトリガーされます。トリガーはキーワード、コマンドパターン、あるいはパイプラインの特定段階の場合があります。
- ステップ(steps) — スキルが実行される具体的な手順です。「1. ユーザーにトピックを確認 → 2. ウェブ検索を実行 → 3. 結果をresearch_notes.mdに書く」のように順番に定義されます。
スキル vs エージェント
エージェントとスキルは混同されがちですが、明確な違いがあります。
エージェント(Agent)
- タスクを遂行する「誰が」
- 役割・権限・ツールを持つAIアシスタント
- 識別子(name)・役割(role)・指示・ツールで構成
- 1つのエージェントが複数のスキルを持てる
- 例え:料理人
スキル(Skill)
- 遂行される「何を」
- 再利用可能なワークフロー手順
- 名前・説明・トリガー・ステップで構成
- 1つのスキルを複数のエージェントが共有できる
- 例え:料理のレシピ
スキルの階層構造
co-deckでは、スキルは3つの場所で定義でき、それぞれ優先順位が異なります。
優先順位
- 優先度1 — ワークスペーススキル(
skills/) - 優先度2 — プラットフォームスキル(
.claude/skills/、.gemini/skills/) - 優先度3 — グローバルプラグインスキル
核心ルール
- 同じスキルが複数の場所にあれば優先度1を使用
- ワークスペーススキルは
skills/フォルダのみに置く - プラットフォームスキルはClaude/Gemini専用フック
- 重複定義は避けるのが原則
PMオーケストレーション
PM(Project Manager)エージェントの役割
PMエージェントはマルチエージェントハーネスの中心であり単一窓口(Single Point of Entry)です。ユーザーはPMにだけ直接リクエストを行い、PMがリクエストを分析して適切なスペシャリストエージェントを選び、作業を割り当てます。
PMの核心的な役割を段階ごとに整理すると次のとおりです。
- リクエスト分析 — ユーザーのリクエストを理解し、どの作業が必要か判断します。「新しいプレゼンテーションを作って」という依頼が来れば、それがリサーチ → ストーリーライン → デザイン → HTMLビルド → PDF出力という一連の段階で構成されることを把握します。
-
スペシャリストエージェントの選択 — リクエストの内容に応じて最も適したスペシャリストエージェントを決めます。リサーチが必要なら
researchエージェントを、デザインが必要ならdesignエージェントを選びます。 - 作業割り当て(ディスパッチ) — 選ばれたスペシャリストエージェントに具体的な作業指示を下します。このとき、読み取り作業か書き込み作業かに応じて並列または順次で実行します。
- 結果の取りまとめ — 各スペシャリストエージェントが完了した作業結果を収集し、次の段階へ引き渡す準備をします。
- 品質レビュー — 主要な段階で成果物が品質基準を満たすか確認します。基準に満たなければ修正を要求します。
PMオーケストレーションフロー図
PMは直接実行しない
PMの最も重要な特徴は、ファイルを直接書いたりコードを実行したりしないことです。PMはオーケストレーター(指揮者)としてスペシャリストエージェントに作業を指示するだけで、自ら成果物を作りません。
このルールが重要な理由は次のとおりです。
- 責任所在の明確化 — 成果物に問題があれば、その分野のスペシャリストエージェントが修正します。PMが直接作ったファイルなら「PMが直すべきか、スペシャリストが直すべきか」で混乱が生じます。
- 専門性の保証 — 各分野はスペシャリストエージェントが最もよく知っています。PMがデザインファイルを直接作れば、専門性が落ちるおそれがあります。
- ガバナンスの分離 — 調整(管理)と実行(作業)を分けると、システムはより安定して動きます。人間の組織でも管理者と実務者の役割が分かれているのと同じ原理です。
品質ゲート
パイプラインの特定の地点で、PMは作業を一時停止し、レビューのため成果物を提示します。こうしたチェックポイントをゲートと呼びます。ゲートには2種類あります。
- 必須ゲート — 明示的に承認するまでパイプラインは進めません。ゲート2(コンテンツ準備完了後)とゲート5(サンプルPDF生成後)は必須です。
- 任意ゲート — PMがサマリーを見せた後、自動的に続行します。ゲート1.5(ソース検証)、ゲート3(デザイン仕様)、そしてゲート4(HTMLドラフト)は任意です。
3ティア戦略
なぜ複数のAIモデルが必要なのか?
AIモデルは性能が高いほどコストも高くなります。複雑な設計作業に最上位モデルを使えば良い結果が得られますが、簡単なファイル検索やスクリプト実行にも最上位モデルを使うのは非効率です。
このコストと性能のバランスを取るため、ハーネスはAIモデルを3つの階層(ティア)に分けて割り当てます。会社にプリンシパルエンジニア、シニア、ジュニアがいるように、タスクの複雑さに応じて適切なモデルを選ぶのです。
3つのティア
Highティア(高性能)
- 目的:複雑な推論、アーキテクチャ設計、計画立案
- 対象:PMエージェント(オーケストレーション)
- コスト:高い
- 例え:プリンシパルエンジニア
- プロジェクト全体の方向性を決める複雑な判断に使われます
Mediumティア(均衡)
- 目的:コードレビュー、品質チェック、QA
- 対象:スペシャリストエージェント(大部分)
- コスト:中程度
- 例え:シニアエンジニア
- 専門分野の実務作業と品質レビューに使われます
Lowティア(高効率)
- 目的:単純な反復作業、スクリプト保守
- 対象:versionエージェントなどの軽量作業
- コスト:低い
- 例え:ジュニアエンジニア
- パターンが決まった反復作業に使われます
ティア調整ルール
- PMは簡単な作業のティアを下げてコスト削減できる
- ただし基本ティアより上げることはできない
- 下げたティアで作業が失敗したら元に戻す
- 初心者はデフォルト設定のまま推奨
3ティア比較表
| 項目 | High-Tier | Medium-Tier | Low-Tier |
|---|---|---|---|
| 役割 | 設計、計画、推論 | レビュー、品質チェック、QA | 単純なコーディング、スクリプト |
| コスト | 高い | 中程度 | 低い |
| 例え | プリンシパルエンジニア | シニアエンジニア | ジュニアエンジニア |
| 対象エージェント | PM | ほとんどのスペシャリストエージェント | versionなど軽量作業 |
| モデル例 | claude-opus-5-0、gemini-3.1-pro | claude-sonnet-5-0、gemini-3.7-flash | claude-haiku-4-5、gemini-3.7-flash |
核心ルール
上の比較表と合わせて、3ティア戦略で覚えておくべき核心ルールは次のとおりです。
- ティアは下げられても上げられることはない。PMは単純な作業のコストを節約するため、より低いティアのモデルを割り当てられますが、エージェントに定義された基本ティアより高いモデルを割り当てることはできません。下げたティアで作業が失敗した場合は、再試行時に必ずエージェントの基本ティアを復元します。
- オーケストレーターは常にHighティアを使う。PMはどのエージェントをディスパッチするか、どんな順序で実行するかといった最も重要な決定を下すため、常に最高レベルの推論で動作します。
- レビューアーは独立していなければならない。作業を遂行したエージェントがその成果物をレビューすることはありません。この分離は専任のQAチームを置くのと同じ原理で、実質的な品質管理を保証します。
PM Gateway
PM Gatewayの定義
PM Gatewayとは、すべてのスペシャリストエージェントがPMを通じてのみ呼び出されるよう強制するルールです。ユーザーはPMにだけリクエストし、PMが適切なスペシャリストエージェントを選んで作業を委任します。スペシャリストエージェント(例:research、design)への直接リクエストは許されません。
このルールは「なぜ」必要なのでしょうか? 3つの核心的理由があります。
- 統制(Control) — すべてのリクエストがPMを経由すれば、作業全体の流れを一箇所で管理できます。複数のスペシャリストエージェントが同じファイルを同時に修正したり、衝突する作業を行ったりするのを防ぎます。
- 一貫性(Consistency) — PMがリクエストの優先順位を決め、適切な順序でエージェントを配置します。これによりプロジェクト全体が一貫した流れを保ちます。
- 品質(Quality) — 各段階でPMが成果物をレビューし、次の段階へ進むか修正を求めるかを判断します。これにより最終成果物の品質が保証されます。
なぜゲートウェイなのか?
すべての社員が自由にCEOのもとへ行って指示を出せる会社を想像してください。大きな混乱が生じるでしょう。ハーネスでも同じです。ユーザーがdesignやresearchのようなスペシャリストエージェントを直接呼び出せてしまうと、PMはワークフローを計画し、順序を決め、品質をレビューする能力を失います。ゲートウェイはまさにこれを防ぐために存在します。
ゲートウェイの動作方式
PM Gatewayは4重の防御線で強制されます。多層防御(defense in depth)が互いを補完します。
- Tool-Level(ツールレベル) — エージェントツール自体がPMを迂回する呼び出しを拒否します。最も強力な強制層で、正しい鍵でのみ開く施錠された扉のようなものです。
- System Prompt-Level(システムプロンプトレベル) — プラットフォーム(Claude CodeまたはAntigravity CLI)がPMのルールを最初に読み込むため、AIは最初からリクエストをPM経由にすべきだと認識します。
- Agent File-Level(エージェントファイルレベル) — すべてのスペシャリストエージェント定義ファイルには、PMだけが自分をディスパッチできると明記した「PM-ONLY INVOCATION」セクションが含まれています。
- QA Gate-Level(品質レビューレベル) — 監査(auditor)エージェントがフェーズ6の品質監査でPM迂回の試みを検出し、違反として報告します。
すぐ次のセクションで、この4段階の強制層をダイアグラムで確認できます。
4段階強制レイヤー
PM Gatewayは4つの水準で強制されます。このうちどれか1つでも違反されれば、スペシャリストエージェントは実行されません。
- Tool-Level(ツールレベル) — エージェントツール自体がPM以外の呼び出しを拒否します。技術的に最も強力な強制水準です。
- System-Level(システムプロンプトレベル) — CLAUDE.md、GEMINI.mdなどのシステム設定ファイルにPM Gatewayルールが明記されており、AIモデルは最初からこのルールを認識します。
- Agent-Level(エージェントファイルレベル) — 各スペシャリストエージェントの定義ファイルに「PM-ONLY INVOCATION」セクションが含まれ、エージェント自身も直接呼び出しを拒否します。
- QA-Level(品質レビューレベル) — 最終段階の品質レビューで、PM Gateway迂回の事例がないか監査します。
PMの直接実行範囲
PM自身にも、直接実行できる作業に関する制限があります。
常に許可されるもの
- ファイルの読み取り
- 検索(glob、grep)
- タスクの作成とステータス更新
- ユーザーへの質問
- 読み取り専用bashコマンドの実行(
git status、ls)
制限されるもの
- ファイルの書き込み/編集 —
memory/*.mdとCHANGELOG.mdのみ - Bash書き込みコマンド — スペシャリストに委任が必要
- コード実装 — スペシャリストに委任が必要
- デザイン作業 — スペシャリストに委任が必要
ディスパッチフロー
ディスパッチとは?
ディスパッチ(Dispatch)とは、PMがスペシャリストエージェントに作業を割り当てる過程を意味します。ユーザーのリクエストが入ると、PMはリクエストの性質を分析(トリアージ)し、適切なスペシャリストエージェントを選んで作業を指示します。
並列ディスパッチ vs 順次ディスパッチ
ディスパッチには2つのモードがあります。作業の性質に応じて適切なモードが選ばれます。
並列ディスパッチ(Parallel)
- 対象:読み取り専用作業
- 複数のエージェントを同時に実行
- リサーチ、分析、検査など相互干渉しない作業
- 利点:時間短縮
- 例:research + source-verifier を同時実行
- ファイル競合の恐れがない作業に適合
順次ディスパッチ(Serial)
- 対象:書き込み作業
- エージェントを1つずつ順番に実行
- ファイル生成・編集など衝突の可能性がある作業
- 利点:安全性の確保
- 例:design 完了後に html-build を実行
- 前段の成果物が次段の入力になる作業に適合
ディスパッチフロー図
ディスパッチの意思決定フロー
PMがリクエストを受けた後、どの方式でディスパッチするかを決める過程は次のとおりです。
引き継ぎコントラクト
引き継ぎとは?
引き継ぎ(Handoff)とは、エージェント間で作業結果を受け渡す方式を意味します。マルチエージェントハーネスでは、あるエージェントが完了させた成果物が次のエージェントの入力として使われます。このとき「どの形式で」「どのパスに」「どの品質基準を満たして」引き渡すかをあらかじめ定義しておく必要があります。この取り決めを引き継ぎコントラクト(Handoff Contract)と呼びます。
引き継ぎコントラクトの3要素
引き継ぎコントラクトは3つのコア要素で構成されます。
-
入力形式(Input Format) — エージェントが作業を始めるのに必要な入力の形式と場所です。たとえばstorylineエージェントは
research_notes.mdファイルを入力として受け取ります。入力ファイルがどこにあるのか、どの構造なのかが明示されていなければなりません。 -
出力形式(Output Format) — エージェントが作業を終えた後に生成する成果物の形式と場所です。たとえばresearchエージェントは
research_notes.mdを生成し、storylineエージェントはstoryline.mdとslide_deck.mdを生成します。ファイル名・パス・内部構造が決まっていなければ、次のエージェントが読めません。 - 品質基準(Quality Criteria) — 出力が満たすべき最低限の基準です。たとえば「research_notes.mdには最低10個以上のソースが含まれていなければならない」「slide_deck.mdの各スライドにはタイトルと本文がなければならない」といった基準がこれに当たります。この基準を満たさない出力は次の段階へ進めません。
引き継ぎの例:research → storyline
co-deckで最も代表的な引き継ぎは、researchエージェントからstorylineエージェントへの引き渡しです。
ダイアグラムが示すように、researchエージェントが research_notes.md という形で出力すれば、storylineエージェントが同じファイルを入力として受け取り、自身の作業を行います。このとき research_notes.md のパス・ファイル名・内部構造(マークダウン形式、セクション構成など)が引き継ぎコントラクトによってあらかじめ定義されていなければなりません。
引き継ぎコントラクトが重要な理由
- 誤りの防止 — ファイル名が間違っていたりパスが誤っていたりすると、次のエージェントが入力を見つけられず、パイプライン全体が止まります。引き継ぎコントラクトがあれば、こうしたミスを防げます。
- 独立性の保証 — エージェント間の依存関係が明確になると、各エージェントを独立に開発・テストできます。「入力がAなら出力はB」という約束だけ守ればよいので、内部実装は自由に変更できます。
- 交換可能性 — 引き継ぎコントラクトさえ守れば、特定のエージェントを別のエージェントに置き換えられます。たとえばresearchエージェントをもっと性能の高いバージョンに変えても、出力形式が同じならstorylineエージェントは一切変更せずにそのまま動きます。
ハーネスアーキテクチャ全体図
この章で説明したすべての概念を1枚の図にまとめてみましょう。以下はco-deckハーネスの全体的なアーキテクチャを表すダイアグラムです。
- エージェントは役割・指示・ツールを持つAIアシスタントです。PMはオーケストレーター、スペシャリストエージェントは実行者です。
- スキルはエージェントが実行する再利用可能なワークフローです。エージェントが「誰」なら、スキルは「何をするか」です。
- PMオーケストレーションは、リクエスト分析 → エージェント選択 → 作業割り当て → 結果取りまとめ → 品質レビューの流れです。
- 3ティア戦略は、コストと性能のバランスを取るためのモデル階層化方式です。High(設計)、Medium(実務)、Low(単純作業)です。
- PM Gatewayは、すべてのスペシャリストエージェントがPMを通してのみ呼び出されるよう強制する4段階ルールです。
- ディスパッチは、読み取り専用 → 並列、書き込み作業 → 順次に分かれます。
- 引き継ぎコントラクトは、エージェント間の出力引き渡しの入力形式・出力形式・品質基準を定義します。