Swarmモードとは?
Swarmモードは、複数の永続的な自律Agentを並列にデプロイし、複雑なタスクを協力して解決します。LLMを搭載したLead Agentがチームを動的に調整します。タスクの計画、Agentの生成、作業の再割り当て、リアルタイムイベントに基づく意思決定を行います。 タスクが事前に分解されて変更されない静的なオーケストレーションとは異なり、Lead Agentは進捗を継続的に監視し、状況の変化に応じて新しいタスクの作成、冗長な作業のキャンセル、アイドルAgentの再割り当てを行います。仕組み
ShannonのSwarm Workflowはイベント駆動のLead Agentループで動作します:Lead Agentイベントループ
Lead Agentは特定のイベントで起動し、次のアクションを決定します:ライフサイクルの概要
- 初期計画 — Leadがユーザーのクエリを受け取り、オプションで依存チェーンを持つ初期タスクセットを作成
- Agent生成 — Leadが依存順序を尊重してAgentを生成し、タスクを割り当て
- イベント駆動の調整 — Agentが作業を完了したり、アイドルを報告したり、チェックポイントに到達した際に、Leadが動的にタスクを再割り当て、計画を修正、または新しいAgentを生成
- 統合 — すべてのタスクが完了すると、Leadは専用の統合Agentを生成するか、
doneを宣言して最終レスポンスを生成
タスク依存関係 (DAG)
タスクは他のタスクへの依存関係を宣言でき、有向非巡回グラフ(DAG)を形成します:task-4は3つのリサーチタスクがすべて完了するまで割り当てられません。Leadはrevise_planを通じて新しい依存チェーンを動的に作成できます。
Lead Agentアクション
Leadが起動するたびに、1つ以上のアクションを選択します:Agentアクション
各イテレーションで、Agentは1つのアクションを選択します:Agentは自分自身を終了できません。Agentが
doneを返すと、自動的にidleステータスに変換されます。shutdown_agentでAgentを終了できるのはLead Agentのみです。これにより、Leadがチーム構成の完全な制御を維持します。Agent間通信
Swarm Agentは2つのメカニズムで協調します:P2Pメッセージング
AgentはRedisベースのメールボックスを通じて特定のチームメイトにダイレクトメッセージを送信します。メッセージタイプにはrequest、offer、accept、delegation、infoがあります。
各LLM呼び出し前に、Agentのメールボックスで新しいメッセージがチェックされます。受信メッセージはAgentのプロンプトコンテキストに表示されます。
共有ワークスペース
Agentはトピックベースのワークスペースリストに発見を公開します。各イテレーション前に、すべてのAgentがすべてのトピックから最新のワークスペースエントリを取得し、チーム全体が集合的な進捗を把握します。知識重複排除
Shannonは3層の重複排除メカニズムでAgent間の冗長な作業を防止します:L1: Agent単位のURLフェッチキャッシュ
L1: Agent単位のURLフェッチキャッシュ
各AgentはすでにフェッチしたURLをキャッシュします。同じAgentループ内で同じURLが再度リクエストされた場合、ネットワーク呼び出しなしでキャッシュされたコンテンツが返されます。
L2: Agent間共有URLメタデータ
L2: Agent間共有URLメタデータ
URLメタデータ(タイトル、要約、主要な事実)はチーム内のすべてのAgent間で共有されます。Agent BがAgent Aがすでに処理したURLをフェッチしようとすると、再フェッチではなくキャッシュされたメタデータを受け取ります。これにより時間とトークンの両方を節約できます。
L3: 検索オーバーラップ検出
L3: 検索オーバーラップ検出
全Agent間で発見された検索結果URLを追跡します。新しい検索で返されたURLの70%以上が他のAgentにより既に発見されている場合、システムは新しいアングルを探すよう警告を注入します。さらに、検索飽和検出器がJaccard単語レベル類似度(しきい値0.7、3クエリのウィンドウ)を使用して最近のクエリを比較し、重複検索をフラグします。
収束検出
3つのメカニズムでAgentが無期限に実行されることを防止します:進捗なし検出
進捗なし検出
Agentが3回連続で意味のあるアクションを実行しなかった場合(空または認識不能なaction)、収束と見なされidleステータスに遷移します。
tool_call、send_message、publish_dataはこのカウンターをリセットします。連続エラー中止
連続エラー中止
3回連続で永続的なツールエラーが発生した場合(レートリミットなどの一時的エラーを除く)、Agentは中止し、失敗を報告します。
最大イテレーション強制完了
最大イテレーション強制完了
最後のイテレーションでAgentが
doneまたはidleを呼び出していない場合、Workflowが強制完了し、直近のイテレーションからサマリーを構築します。グローバル予算制御
Swarmの実行は3層の予算制約でコストの暴走を防止します:
Lead Agentはコンテキストで予算情報(残りの呼び出し回数、トークン、時間)を受け取り、コスト意識の高い意思決定を行います。例えば、予算が厳しい場合に低優先度のAgentをシャットダウンしたり、オプションのタスクをスキップしたりします。
Swarmと他のWorkflowの使い分け
Swarmモードは各Agentが複数のLLMイテレーションを実行し、Lead Agentの調整決定もトークンを消費するため、標準Workflowよりも多くのトークンを消費します。永続的で協調的なマルチAgent実行から本当に恩恵を受けるタスクに使用してください。
設定
Swarmの動作はconfig/features.yamlで制御されます:
ストリーミングイベント
Swarm Workflowはリアルタイム監視用のSSEイベントを発行します:次のステップ
Swarmチュートリアル
Swarm Workflowのステップバイステップガイド
WorkflowとPattern
他のWorkflowタイプと認知パターン
ストリーミング
リアルタイムイベントストリーミング
コスト管理
マルチAgentタスクの予算管理