Communityコーディング&開発github.com

マルチエージェントパターン

このスキルは、コンテキスト分離、スーパーバイザーやスウォームによる調整、明示的なハンドオフ、並列実行、または複数のエージェントが正当化されるかどうかの判断が必要なマルチエージェントシステムを設計する際に使用します。

マルチエージェントパターン とは?

このスキルは、複数の言語モデルインスタンスにまたがるマルチエージェントシステムを設計するための実践的なガイダンスを提供します。特に、コンテキストウィンドウの制限、並列化の機会、特殊化のメリットに対処する場合に有効です。スーパーバイザー/オーケストレーター、ピアツーピア/スウォーム、階層型の3つの主要なアーキテクチャパターンを、それらのトレードオフとともに詳しく説明します。コアとなる設計原則は、人間的な役割分担ではなく、コンテキスト分離を主目的とすることです。また、重み付き投票やディベートプロトコルなどの合意形成メカニズム、スーパーバイザーボトルネックやエラー伝播などの障害モードとその対策についても説明します。実践的な推奨事項、フレームワークの考慮事項(LangGraph、AutoGen、CrewAI)、実際の使用例とハンドオフプロトコルのコード例が含まれています。このスキルは、Claude Code、Cursor、Codexなどの開発ツールを使用する開発者やAIエージェントユーザーを対象としており、複雑なマルチエージェントワークフローでよくある落とし穴を回避するための実用に即したアドバイスを提供します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/multi-agent-patterns

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

マルチエージェントアーキテクチャパターン

マルチエージェントアーキテクチャは、複数の言語モデルインスタンスにワークを分散し、それぞれが独自のコンテキストウィンドウを持ちます。適切に設計されれば、この分散により単一エージェントの限界を超える機能が実現します。設計が不適切だと、調整のオーバーヘッドがメリットを打ち消します。重要な洞察は、サブエージェントは主にコンテキストを分離するために存在するのであって、役割を擬人化するためではないということです。

アクティブ化の条件

以下の場合にこのスキルをアクティブにします:

  • 単一エージェントのコンテキスト制限がタスクの複雑さを制約する場合
  • タスクが自然に並列サブタスクに分解できる場合
  • 異なるサブタスクに異なるツールセットやシステムプロンプトが必要な場合
  • 複数のドメインを同時に処理するシステムを構築する場合
  • エージェント機能を単一コンテキストの限界を超えてスケーリングする場合
  • 複数の特殊化されたコンポーネントを持つ本番エージェントシステムを設計する場合

以下の隣接する作業にはこのスキルをアクティブにしないでください:

  • トポロジが決まる前のタスクとモデルの適合性、パイプラインの形状、プロジェクトレベルのコストの決定: project-development。
  • ホステッドサンドボックス、ウォームプール、リモートセッション、バックグラウンドランタイムインフラの設計: hosted-agents。
  • 制御されたランタイムでのKVキャッシュ圧縮によるオーケストレーター状態の共有: latent-briefing。
  • 各エージェントが公開するツールの設計: tool-design。

コアコンセプト

単一エージェントのコンテキストウィンドウがタスク関連情報をすべて保持できない場合に、マルチエージェントパターンを使用します。コンテキスト分離が主なメリットです。各エージェントはクリーンなコンテキストで動作し、他のサブタスクからのノイズが蓄積されません。これにより、情報が繰り返しの要約で劣化する電話ゲーム問題を防ぎます。

調整の必要性に基づいて、3つの主要なパターンから選択します。組織のメタファーではありません:

  • スーパーバイザー/オーケストレーター — タスクが明確に分解され、人間による監視が重要な場合に、集中制御のために使用します。単一のコーディネーターが専門家に委任し、結果を統合します。
  • ピアツーピア/スウォーム — 厳格な計画が逆効果になる柔軟な探索のために使用します。どのエージェントも明示的なハンドオフメカニズムを通じて他のエージェントに制御を移せます。
  • 階層型 — 抽象化の階層(戦略、計画、実行)を持つ大規模プロジェクトに使用します。各層は独自のコンテキスト構造で異なる詳細レベルで動作します。

すべてのマルチエージェントシステムは、明示的な調整プロトコル、お世辞に抵抗する合意メカニズム、エラー伝播のカスケードを防ぐ障害処理を中心に設計します。

詳細トピック

なぜマルチエージェントアーキテクチャか

コンテキストボトルネック 単一エージェントのコンテキストが、蓄積された履歴、取得されたドキュメント、ツール出力で満たされ、パフォーマンスが低下するポイントに達したら、マルチエージェントアーキテクチャに手を伸ばします。3つの低下シグナルを認識します: lost-in-middle効果(コンテキスト中央のコンテンツへの注意が弱まる)、注意不足(競合するアイテムが多すぎる)、コンテキスト汚染(無関係なコンテンツが有用なコンテンツを追い出す)です。

複数のコンテキストウィンドウにワークを分割し、各エージェントがサブタスクに集中したクリーンなコンテキストで動作するようにします。単一のコンテキストが全負荷を負うことなく、調整レイヤーで結果を集約します。

トークン経済の現実 大幅に高いトークンコストを予算化します。本番データによると、マルチエージェントシステムは単一エージェントチャットよりもはるかに多くのトークンを消費する可能性があります(claim-multi-agent-token-multiplier):

アーキテクチャトークン倍率ユースケース
単一エージェントチャットベースラインシンプルなクエリ
ツール付き単一エージェントベースラインより高いツールを使用するタスク
マルチエージェントシステムベースラインよりはるかに高い複雑な調査/調整

閲覧エージェントの評価研究によると、トークン使用量、ツール呼び出し、モデル選択がパフォーマンスのばらつきの大部分を占めます(claim-evaluation-browsecomp-variance)。これは、追加のエージェントが役立つと仮定するのではなく、マルチエージェント設定を単一エージェントのベースラインと測定することを支持します。

アーキテクチャ設計とともにモデル選択を優先します。より良いモデルにアップグレードすると、トークン予算を2倍にするよりも大きなパフォーマンス向上が得られることがよくあります。BrowseCompのデータは、モデルの品質向上が生のトークン増加よりも頻繁に優れた結果をもたらすことを示しています。モデル選択とマルチエージェントアーキテクチャを補完的な戦略として扱います。

並列化の議論 並列化可能なサブタスクは、単一のエージェントで順次処理するのではなく、新しいコンテキストを持つ専用エージェントに割り当てます。複数の独立したソースにわたる検索、異なるドキュメントの分析、競合するアプローチの比較を必要とする調査タスクは、並列実行の恩恵を受けます。実際の経過時間は、すべてのサブタスクの合計ではなく、最も長いサブタスクの所要時間に近づきます。

特殊化の議論 各エージェントには、特定のサブタスクに必要なシステムプロンプト、ツール、コンテキストのみを設定します。汎用エージェントはすべての可能な設定をコンテキストに保持する必要があり、注意が希釈されます。特殊化されたエージェントは必要なものだけを保持し、ドメインに最適化されたリーンなコンテキストで動作します。コーディネーターから特殊化されたエージェントへルーティングすることで、組み合わせ爆発を起こさずに特殊化を実現します。

アーキテクチャパターン

パターン1: スーパーバイザー/オーケストレーター グローバル状態と軌跡を維持し、ユーザーの目的をサブタスクに分解し、適切なワーカーにルーティングする中央エージェントを配置します。

ユーザークエリ -> スーパーバイザー -> [専門家, 専門家, 専門家] -> 集約 -> 最終出力

このパターンを選択するのは、タスクが明確に分解できる場合、ドメイン間の調整が必要な場合、または人間による監視が重要な場合です。

以下のトレードオフを予想します: 厳格なワークフロー制御と容易なヒューマンインザループ介入が可能ですが、スーパーバイザーのコンテキストがボトルネックになり、スーパーバイザーの障害がすべてのワーカーにカスケードし、「電話ゲーム」問題が発生し、スーパーバイザーがサブエージェントの応答を誤って言い換える可能性があります。

電話ゲーム問題とその解決策 スーパーバイザーアーキテクチャは、電話ゲーム問題(LangGraphベンチマーク)により、最初は最適化されたバージョンよりも約50%パフォーマンスが低下すると予想されます。スーパーバイザーはサブエージェントの応答を言い換えるため、パスごとに忠実度が失われます。

これを修正するには、サブエージェントが応答をユーザーに直接渡せるようにするforward_messageツールを実装します:

def forward_message(message: str, to_user: bool = True):
    """
    スーパーバイザーの合成なしで、サブエージェントの応答をユーザーに直接転送します。

    以下の場合に使用:
    - サブエージェントの応答が最終的で完全である場合
    - スーパーバイザーの合成が重要な詳細を失う場合
    - 応答形式を正確に保持する必要がある場合
    """
    if to_user:
        return {"type": "direct_response", "content": message}
    return {"type": "supervisor_input", "content": message}

サブエージェントがユーザーに直接応答できる場合は、スーパーバイザーよりもスウォームアーキテクチャを優先します。これにより、翻訳エラーが完全に排除されます。

パターン2: ピアツーピア/スウォーム 中央制御を排除し、エージェントが事前定義されたプロトコルに基づいて直接通信できるようにします。どのエージェントも明示的なハンドオフメカニズムを通じて他のエージェントに制御を移せます。

def transfer_to_agent_b():
    return agent_b  # 関数の戻り値によるハンドオフ

agent_a = Agent(
    name="Agent A",
    functions=[transfer_to_agent_b]
)

このパターンを選択するのは、タスクが柔軟な探索を必要とする場合、厳格な計画が逆効果になる場合、または要件が動的に発生し事前の分解が不可能な場合です。

以下のトレードオフを予想します: 単一障害点がなく、効果的な幅優先スケーリングが可能ですが、エージェント数の増加に伴い調整の複雑さが増し、中央状態保持者なしでは発散リスクが高まり、堅牢な収束制約が不可欠になります。

状態を渡す明示的なハンドオフプロトコルを定義します。エージェントがコンテキストニーズを受信エージェントに伝達できるようにします。

パターン3: 階層型 エージェントを抽象化の階層に編成します: 戦略(目標定義)、計画(タスク分解)、実行(アトミックタスク)。

戦略層 (目標定義) -> 計画層 (タスク分解) -> 実行層 (アトミックタスク)

このパターンを選択するのは、プロジェクトに明確な階層構造がある場合、ワークフローに管理層が含まれる場合、またはタスクに高レベルの計画と詳細な実行の両方が必要な場合です。

以下のトレードオフを予想します: 関心事の明確な分離と、異なるレベルでの異なるコンテキスト構造のサポートが可能ですが、層間の調整オーバーヘッド、戦略と実行の潜在的なミスアライメント、複雑なエラー伝播パスが発生します。

設計原則としてのコンテキスト分離

コンテキスト分離をマルチエージェントアーキテクチャの主目的として扱います。各サブエージェントは、他のサブタスクからコンテキストを引き継ぐことなく、サブタスクに焦点を当てたクリーンなコンテキストウィンドウで動作する必要があります。

分離メカニズム 各サブタスクに適した分離メカニズムを選択します:

  • 完全コンテキスト委任 — プランナーのコンテキスト全体をサブエージェントと共有します。サブエージェントが完全な理解を必要とする複雑なタスクに使用します。サブエージェントは独自のツールと指示を持ちますが、決定のために完全なコンテキストを受け取ります。注: これはコンテキスト分離の目的を部分的に無効にします。
  • 指示受け渡し — 関数呼び出しを介して指示を作成します。サブエージェントは必要なものだけを受け取ります。シンプルで明確に定義されたサブタスクに使用します。分離を維持しますが、サブエージェントの柔軟性を制限します。
  • ファイルシステムメモリ — エージェントは永続ストレージに対して読み書きを行います。共有状態を必要とする複雑なタスクに使用します。ファイルシステムが調整メカニズムとして機能し、共有状態の受け渡しによるコンテキストの肥大化を回避します。レイテンシと一貫性の課題が生じますが、メッセージパッシングよりもスケーラブルです。

タスクの複雑さ、調整の必要性、許容できるレイテンシに基づいて選択します。デフォルトは指示受け渡しとし、共有状態が必要な場合はファイルシステムメモリにエスカレーションします。サブタスクが本当に必要としない限り、完全コンテキスト委任は避けます。

合意と調整

投票問題 単純な過半数投票は避けます。弱いモデルからの幻覚を、強いモデルからの推論と同等に扱うことになります。介入がなければ、マルチエージェントの議論は、同意への固有のバイアスのために誤った前提で合意に至る可能性があります。

重み付き投票 エージェントの投票を信頼度や専門性で重み付けします。信頼度やドメイン専門知識が高いエージェントは、最終決定でより大きな重みを持つべきです。

ディベートプロトコル 複数ラウンドにわたってエージェントが互いの出力を批評するように構造化します。協調的な合意よりも、敵対的な批評が複雑な推論で高い精度をもたらすことがよくあります。エージェントが正しさよりも協調的であるために同意する、お世辞的な収束に注意します。

トリガーベースの介入 マルチエージェントの相互作用を行動マーカーについて監視します。議論が進展しない場合にストールトリガーをアクティブにします。エージェントが独自の推論なしに互いの回答を模倣する場合にお世辞トリガーを検出します。

フレームワークの考慮事項

異なるフレームワークは、異なる哲学でこれらのパターンを実装します。LangGraphは、明示的なノードとエッジを持つグラフベースのステートマシンを使用します。AutoGenは、GroupChatを使用した会話/イベント駆動型パターンを使用します。CrewAIは、階層的なクルー構造を持つロールベースのプロセスフローを使用します。

実践的なガイダンス

障害モードとその軽減策

障害: スーパーバイザーボトルネック スーパーバイザーはすべてのワーカーからのコンテキストを蓄積し、飽和と劣化の影響を受けやすくなります。

ワーカーの出力スキーマを制約して、ワーカーが要約された結果のみを返すようにすることで軽減します。チェックポイントを使用して、コンテキストに完全な履歴を保持せずにスーパーバイザーの状態を永続化します。

障害: 調整オーバーヘッド エージェント間の通信はトークンを消費し、レイテンシを増加させます。複雑な調整は並列化のメリットを無効にする可能性があります。

明確なハンドオフプロトコルを通じて通信を最小限に抑えることで軽減します。可能な場合は結果をバッチ処理します。非同期通信パターンを使用します。マルチエージェント調整が、より長いコンテキストを持つ単一エージェントと比較して実際に時間を節約しているかどうかを測定します。

障害: 発散 中央調整なしに異なる目標を追求するエージェントは、意図された目的から逸脱します。

各エージェントに明確な目標境界を定義することで軽減します。共有目標への進捗を検証する収束チェックを実装します。無限の探索を防ぐために、エージェント実行に有効期限(TTL)を設定します。

障害: エラー伝播 あるエージェントの出力のエラーが、その出力を消費する下流のエージェントに伝播し、結果的にますます間違った結果へと拡大します。

消費者に渡す前にエージェント出力を検証することで軽減します。サーキットブレーカーを備えたリトライロジックを実装します。可能な場合は冪等な操作を使用します。重要な出力がパイプラインに入る前にクロスチェックする検証エージェントの追加を検討します。

例

例1: リサーチチームアーキテクチャ

スーパーバイザー
├── リサーチャー (ウェブ検索、ドキュメント取得)
├── アナライザー (データ分析、統計)
├── ファクトチェッカー (検証、妥当性確認)
└── ライター (レポート生成、フォーマット)

例2: ハンドオフプロトコル

def handle_customer_request(request):
    if request.type == "billing":
        return transfer_to(billing_agent)
    elif request.type == "technical":
        return transfer_to(technical_agent)
    elif request.type == "sales":
        return transfer_to(sales_agent)
    else:
        return handle_general(request)

ガイドライン

  1. コンテキスト分離をマルチエージェントシステムの主なメリットとして設計する
  2. アーキテクチャパターンは組織のメタファーではなく、調整の必要性に基づいて選択する
  3. 状態を渡す明示的なハンドオフプロトコルを実装する
  4. 合意には重み付き投票またはディベートプロトコルを使用する
  5. スーパーバイザーボトルネックを監視し、チェックポイントを実装する
  6. エージェント間で受け渡す前に出力を検証する
  7. 無限ループを防ぐために有効期限(TTL)を設定する
  8. 障害シナリオを明示的にテストする

注意点

  1. スーパーバイザーボトルネック - スーパーバイザーはすべてのワーカー出力をコンテキストに保持する。ワーカー出力スキーマを制約し、チェックポイントを使用する。
  2. 電話ゲーム問題 - スーパーバイザーはサブエージェント出力を誤って言い換える。転送ツールを使用するか、スウォームパターンを採用する。
  3. コストの増加 - マルチエージェントシステムは非常に多くのトークンを消費する可能性がある。常に単一エージェントのベースラインに対して測定する。
  4. お世辞的な合意 - エージェントは互いに同意する傾向がある。重み付き投票またはディベートプロトコルを使用する。
  5. エラー伝播 - あるエージェントのエラーがシステム全体に拡大する可能性がある。出力を検証し、リトライロジックを実装する。
  6. 無限ループ - 適切な有効期限(TTL)なしでは、エージェントは無限にループする可能性がある。常にタイムアウトを設定する。

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

advanced-evaluation

This skill should be used for advanced LLM evaluation: LLM-as-judge systems, direct scoring, pairwise comparison, rubric calibration, evaluator bias mitigation, confidence scoring, and automated quality assessment.

bdi-mental-states

This skill should be used when modeling agent mental states with BDI concepts: beliefs, desires, intentions, RDF-to-belief transformations, rational agency traces, cognitive agents, BDI ontologies, and neuro-symbolic AI integration.

book-sft-pipeline

This skill should be used for book-to-SFT pipelines: ePub extraction, literary segmentation, author-voice dataset construction, style-transfer training, LoRA workflows, and model evaluation for voice replication.

comprehensive-research-agent

Ensure thorough validation, error recovery, and transparent reasoning in research tasks with multiple tool calls

context-compression

This skill should be used when long-running agent sessions need context compression, structured summarization, compaction, token-per-task optimization, or durable handoff summaries that preserve decisions, files, risks, and next actions.

context-degradation

This skill should be used for diagnosing and mitigating context degradation: lost-in-middle failures, context poisoning, context clash, context confusion, attention-pattern issues, and agent performance degradation caused by accumulated or conflicting context.

context-fundamentals

This skill should be used to explain or reason about the foundational concepts of context engineering: what context is, the anatomy of a context window, how attention mechanics work, the U-shaped attention curve, why context quality matters more than quantity, and the mental models needed to interpret every other context-engineering decision. Use this for conceptual explanation, onboarding, and background reading. Route operational work to the specialized skills: debugging attention failures goes to context-degradation, token-efficiency work goes to context-optimization, conversation summarization goes to context-compression, and project-shape decisions go to project-development.

context-optimization

This skill should be used for improving context efficiency: context budgeting, observation masking, prefix or KV-cache strategy, partitioning, token-cost reduction, retrieval scoping, and extending effective context capacity without lowering answer quality.

evaluation

This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and outcome measurement for agent pipelines.

filesystem-context

This skill should be used when agent work needs file-backed context: durable scratchpads, tool-output offloading, just-in-time discovery, cross-agent handoff files, filesystem memory, or cleanup policies for context stored outside the prompt.

harness-engineering

This skill should be used when designing autonomous agent harnesses: research loops, evaluation scaffolds, locked and editable surfaces, durable logs, novelty gates, pruning, rollback, PR preparation, and human approval boundaries.

hosted-agents

This skill should be used when designing hosted or background agent infrastructure: sandboxed execution, remote coding environments, warm pools, session persistence, multiplayer collaboration, self-spawning agents, or Modal-style sandboxes.

latent-briefing

This skill should be used when the user asks to "share memory between agents", "KV cache compaction for multi-agent", "orchestrator worker context", "latent briefing", "reduce worker tokens", "cross-agent memory without summarization", or discusses Attention Matching compaction, recursive language models with workers, or token explosion in hierarchical agents.

long-horizon-prompting

This skill should be used when writing, enhancing, or evaluating the launch prompt for a long-running autonomous agent or a parallel multi-agent orchestration attacking a hard problem: pseudo-formal task briefs that define terms and an exact success predicate linguistically, enumerate non-counting outcomes, set persistence rules with explicit stop and return conditions and effort floors, manage a diverse portfolio of parallel approaches with an approach registry and blocked-route bookkeeping, and gate the return on adversarial audit. Route agent topology and coordination protocols to multi-agent-patterns, runtime control surfaces and loop governance to harness-engineering, evaluator and quality-gate construction to evaluation, judge design to advanced-evaluation, and compaction or memory mechanics to context-compression and memory-systems.

memory-systems

This skill should be used for persistent semantic memory in agent systems: cross-session knowledge retention, entity tracking, temporal validity, graph or vector retrieval, memory consolidation, and memory benchmark selection. Route file-backed scratchpads to filesystem-context, handoff summaries to context-compression, and token-efficiency tactics to context-optimization.

project-development

This skill should be used for project-level decisions about LLM-powered systems: whether an LLM is the right primitive for the task at hand, the shape of a multi-stage batch or agent pipeline, token and cost estimation, choosing between single-agent and multi-agent at the project level, structured output design for downstream parsing, and structuring agent-assisted iteration. Use this when the unit of work is a whole project or a multi-stage pipeline. Route individual tool design to tool-design and individual skill-loading or context-budget tactics to context-optimization.

self-improvement-loops

This skill should be used when the harness, scaffold, workflow, or optimizer itself is the optimization target: recursive self-improvement (RSI) loops, meta-harnesses, self-improving harnesses that mine their own failures and propose bounded edits, evolutionary or population-based search over agent scaffolds, acceptance gates for self-modifying systems, and agentic context evolution where the mechanism that produces context is versioned and evolved. Route governance of a single autonomous loop (locked surfaces, durable logs, rollback, novelty gates, approval boundaries) to harness-engineering, measurement and quality-gate design to evaluation, judge design to advanced-evaluation, and remote sandbox infrastructure to hosted-agents.

self-managed-context

This skill should be used when a model gets read-write control over its own live context window instead of a harness-scheduled compaction policy: the context exposed as an editable file the model rewrites with code tools, model-driven eviction and in-place updates, the harness invariants that keep self-editing safe (pinned prefix, edit gate, edit receipts, budget readouts, rollback on overflow), the prefix-cache cost of mid-context edits, and steering or training the model's own context-editing strategy. Route note content and fixed-threshold summarization to context-compression, cache-stable layout under harness control to context-optimization, file offloading to filesystem-context, and loop governance to self-improvement-loops.

tool-design

This skill should be used for the tool-interface layer of an agent system specifically: writing tool descriptions agents can route on, designing tool schemas and response formats, naming conventions, actionable error recovery messages, MCP server design, tool-set consolidation, and deciding when to add or remove an individual tool. Use this when the unit of work is a single tool or a set of tools. Route project-shape, pipeline architecture, and task-model-fit decisions to project-development; route deciding whether to introduce sub-agents to multi-agent-patterns.

関連スキル