メインコンテンツへスキップ

Swarmモードとは?

Swarmモードは、複数の永続的な自律Agentを並列にデプロイし、複雑なタスクを協力して解決します。LLMを搭載したLead Agentがチームを動的に調整します。タスクの計画、Agentの生成、作業の再割り当て、リアルタイムイベントに基づく意思決定を行います。 タスクが事前に分解されて変更されない静的なオーケストレーションとは異なり、Lead Agentは進捗を継続的に監視し、状況の変化に応じて新しいタスクの作成、冗長な作業のキャンセル、アイドルAgentの再割り当てを行います。

仕組み

ShannonのSwarm Workflowはイベント駆動のLead Agentループで動作します:

Lead Agentイベントループ

Lead Agentは特定のイベントで起動し、次のアクションを決定します:
Leadを起動するイベント:
├── agent_idle       — Agentが現在のタスクを完了し、利用可能になった
├── agent_completed  — Agentが最終出力を生成した
├── help_request     — AgentがLeadにヘルパーの生成を要求した
├── checkpoint       — 定期タイマー(120秒ごと)で全体の進捗をレビュー
└── human_input      — ユーザーが実行中に新しい指示を送信した
各起動時に、Leadはチーム全体のステータス(Agent、タスク、予算)を受け取り、1つ以上のアクションを選択します。

ライフサイクルの概要

  1. 初期計画 — Leadがユーザーのクエリを受け取り、オプションで依存チェーンを持つ初期タスクセットを作成
  2. Agent生成 — Leadが依存順序を尊重してAgentを生成し、タスクを割り当て
  3. イベント駆動の調整 — Agentが作業を完了したり、アイドルを報告したり、チェックポイントに到達した際に、Leadが動的にタスクを再割り当て、計画を修正、または新しいAgentを生成
  4. 統合 — すべてのタスクが完了すると、Leadは専用の統合Agentを生成するか、doneを宣言して最終レスポンスを生成

タスク依存関係 (DAG)

タスクは他のタスクへの依存関係を宣言でき、有向非巡回グラフ(DAG)を形成します:
Tasks:
├── task-1: "Research US AI chip market"        (depends_on: [])
├── task-2: "Research Japan AI chip market"     (depends_on: [])
├── task-3: "Research South Korea AI chip market" (depends_on: [])
└── task-4: "Write comparative analysis"        (depends_on: [task-1, task-2, task-3])
システムは依存順序を強制します。task-4は3つのリサーチタスクがすべて完了するまで割り当てられません。Leadはrevise_planを通じて新しい依存チェーンを動的に作成できます。

Lead Agentアクション

Leadが起動するたびに、1つ以上のアクションを選択します:
アクション説明
spawn_agent特定のタスク用に新しいAgentを作成
assign_task保留中のタスクをアイドルAgentに割り当て
revise_plan新しいタスクを動的に作成、または既存のタスクをキャンセル
send_message特定のAgentにメッセージを送信
broadcastすべてのAgentにメッセージを送信
file_readワークスペースファイルを読み取り(LLMコストゼロ、最大3ラウンド)
shutdown_agent特定のAgentを終了
interim_replyユーザーに進捗更新をプッシュ
noop何もしない(現在アクション不要)
doneすべての作業の完了を宣言し、クロージングフェーズに進む
replyユーザーに最終回答を直接返す(クロージングフェーズのみ)
synthesize直接回答する代わりに合成パイプラインをトリガー

Agentアクション

各イテレーションで、Agentは1つのアクションを選択します:
アクション説明
tool_callツールを実行(Web検索、ファイル読み取りなど)
publish_dataワークスペースを通じてチームに発見を共有
send_message特定のチームメイトにダイレクトメッセージを送信
request_helpLeadに新しいヘルパーAgentの生成を要請
idle現在のタスクが完了したことを通知し、再割り当てを待つ
done最終レスポンスを返す(自動的にidleに変換)
Agentは自分自身を終了できません。Agentがdoneを返すと、自動的にidleステータスに変換されます。shutdown_agentでAgentを終了できるのはLead Agentのみです。これにより、Leadがチーム構成の完全な制御を維持します。

Agent間通信

Swarm Agentは2つのメカニズムで協調します:

P2Pメッセージング

AgentはRedisベースのメールボックスを通じて特定のチームメイトにダイレクトメッセージを送信します。メッセージタイプにはrequestofferacceptdelegationinfoがあります。 各LLM呼び出し前に、Agentのメールボックスで新しいメッセージがチェックされます。受信メッセージはAgentのプロンプトコンテキストに表示されます。

共有ワークスペース

Agentはトピックベースのワークスペースリストに発見を公開します。各イテレーション前に、すべてのAgentがすべてのトピックから最新のワークスペースエントリを取得し、チーム全体が集合的な進捗を把握します。
Shared Workspace:
├── Topic: "findings"
│   ├── Agent-Takao: "NVIDIA dominates US with 80% market share..."
│   └── Agent-Mitaka: "Japan focuses on edge AI chips..."
└── Topic: "sources"
    └── Agent-Kichijoji: "Samsung foundry plans announced..."

知識重複排除

Shannonは3層の重複排除メカニズムでAgent間の冗長な作業を防止します:
各AgentはすでにフェッチしたURLをキャッシュします。同じAgentループ内で同じURLが再度リクエストされた場合、ネットワーク呼び出しなしでキャッシュされたコンテンツが返されます。
URLメタデータ(タイトル、要約、主要な事実)はチーム内のすべてのAgent間で共有されます。Agent BがAgent Aがすでに処理したURLをフェッチしようとすると、再フェッチではなくキャッシュされたメタデータを受け取ります。これにより時間とトークンの両方を節約できます。
全Agent間で発見された検索結果URLを追跡します。新しい検索で返されたURLの70%以上が他のAgentにより既に発見されている場合、システムは新しいアングルを探すよう警告を注入します。さらに、検索飽和検出器がJaccard単語レベル類似度(しきい値0.7、3クエリのウィンドウ)を使用して最近のクエリを比較し、重複検索をフラグします。

収束検出

3つのメカニズムでAgentが無期限に実行されることを防止します:
Agentが3回連続で意味のあるアクションを実行しなかった場合(空または認識不能なaction)、収束と見なされidleステータスに遷移します。tool_callsend_messagepublish_dataはこのカウンターをリセットします。
3回連続で永続的なツールエラーが発生した場合(レートリミットなどの一時的エラーを除く)、Agentは中止し、失敗を報告します。
最後のイテレーションでAgentがdoneまたはidleを呼び出していない場合、Workflowが強制完了し、直近のイテレーションからサマリーを構築します。
一時的なエラー(レートリミット、タイムアウト、503)は自動リトライをトリガーし、バックオフが段階的に増加します(5秒刻み、最大30秒)。これらは中止しきい値にカウントされません。

グローバル予算制御

Swarmの実行は3層の予算制約でコストの暴走を防止します:
予算層デフォルト説明
max_total_llm_calls200すべてのAgent全体のLLM呼び出し最大回数
max_total_tokens1,000,000すべてのAgent全体の最大トークン消費量
max_wall_clock_minutes30Swarm全体の最大ウォールクロック時間
Lead Agentはコンテキストで予算情報(残りの呼び出し回数、トークン、時間)を受け取り、コスト意識の高い意思決定を行います。例えば、予算が厳しい場合に低優先度のAgentをシャットダウンしたり、オプションのタスクをスキップしたりします。

Swarmと他のWorkflowの使い分け

シナリオ推奨Workflow
シンプルなQ&A、単一ステップのタスクSimple / DAG
引用付きのマルチステップリサーチResearch Workflow
マルチAgentコードレビュー、テスト、修正Swarm
多角的な金融分析(ファンダメンタル、テクニカル、センチメント)Swarm
Python/Bash実行によるデータ処理パイプラインSwarm
Agentが中間的な発見を共有する必要があるタスクSwarm
動的なサブタスク発見を伴う長時間の探索Swarm
サブタスク間の複雑な依存チェーンを持つタスクSwarm
Swarmモードは各Agentが複数のLLMイテレーションを実行し、Lead Agentの調整決定もトークンを消費するため、標準Workflowよりも多くのトークンを消費します。永続的で協調的なマルチAgent実行から本当に恩恵を受けるタスクに使用してください。

設定

Swarmの動作はconfig/features.yamlで制御されます:
パラメータデフォルト説明
swarm.enabledtrueSwarm Workflowの有効/無効
swarm.max_agents10Agent総数の上限(初期 + 動的)
swarm.max_iterations_per_agent25Agentごとの推論-行動ループの最大回数
swarm.agent_timeout_seconds1800Agentごとのタイムアウト(30分)
swarm.max_messages_per_agent20AgentごとのP2Pメッセージ上限
swarm.workspace_snippet_chars800プロンプト内のワークスペースエントリの最大文字数
swarm.workspace_max_entries5各Agentに表示される最近のエントリ数
swarm.max_total_llm_calls200Swarm全体のグローバルLLM呼び出し予算
swarm.max_total_tokens1000000Swarm全体のグローバルトークン予算
swarm.max_wall_clock_minutes30Swarmの最大ウォールクロック時間

ストリーミングイベント

Swarm Workflowはリアルタイム監視用のSSEイベントを発行します:
イベントタイプAgent IDタイミング
WORKFLOW_STARTEDswarm-supervisorWorkflow開始時
PROGRESSswarm-lead / swarm-supervisor計画、生成、再割り当て
LEAD_DECISIONswarm-leadLeadが計画決定を行った(生成、割り当て、修正など)
TASKLIST_UPDATEDswarm-leadタスク依存グラフが変更された(タスクの作成またはキャンセル)
TEAM_STATUSswarm-leadチーム構成が変更された(Agentの生成またはシャットダウン)
AGENT_STARTEDAgent名Agentが最初のイテレーションを開始
AGENT_COMPLETEDAgent名Agentが完了
WORKFLOW_COMPLETEDswarm-supervisor最終統合完了

次のステップ

Swarmチュートリアル

Swarm Workflowのステップバイステップガイド

WorkflowとPattern

他のWorkflowタイプと認知パターン

ストリーミング

リアルタイムイベントストリーミング

コスト管理

マルチAgentタスクの予算管理