マルチエージェントルーティング
Triggerfishは異なるチャンネル、アカウント、または連絡先を、それぞれ独自のワークスペース、 セッション、個性、分類の上限を持つ別々の分離されたエージェントにルーティングすることをサポートします。
なぜ複数のエージェントが必要か?
単一の個性を持つ単一のエージェントでは常に十分ではありません。以下のものが必要かもしれません:
- カレンダー、リマインダー、家族のメッセージを処理するWhatsApp上のパーソナルアシスタント。
- Jiraチケット、GitHub PR、コードレビューを管理するSlack上のワークアシスタント。
- 異なるトーンと制限されたアクセスでコミュニティの質問に答えるDiscord上のサポートエージェント。
マルチエージェントルーティングにより、単一のTriggerfishインストールからこれらすべてを同時に実行できます。
仕組み
AgentRouterは各インバウンドメッセージを調べ、設定可能なルーティングルールに基づいてエージェントに マップします。ルールが一致しない場合、メッセージはデフォルトエージェントに送られます。
ルーティングルール
メッセージは以下でルーティングできます:
| 基準 | 説明 | 例 |
|---|---|---|
| チャンネル | メッセージングプラットフォームでルーティング | すべてのSlackメッセージが「Work」へ |
| アカウント | チャンネル内の特定のアカウントでルーティング | 仕事のメールと個人のメール |
| 連絡先 | 送信者/ピアのアイデンティティでルーティング | 上司からのメッセージが「Work」へ |
| デフォルト | ルールが一致しない場合のフォールバック | それ以外はすべて「Personal」へ |
設定
triggerfish.yamlでエージェントとルーティングを定義します:
yaml
agents:
list:
- id: personal
name: "Personal Assistant"
channels: [whatsapp-personal, telegram-dm]
tools:
profile: "full"
model: claude-opus-4-5
classification_ceiling: PERSONAL
- id: work
name: "Work Assistant"
channels: [slack-work, email-work]
tools:
profile: "coding"
allow: [browser, github]
model: claude-sonnet-4-5
classification_ceiling: CONFIDENTIAL
- id: support
name: "Customer Support"
channels: [discord-server]
tools:
profile: "messaging"
model: claude-haiku-4-5
classification_ceiling: PUBLIC各エージェントは以下を指定します:
- id — ルーティング用の一意識別子。
- name — 人間が読める名前。
- channels — このエージェントが処理するチャンネルインスタンス。
- tools — ツールプロファイルと明示的な許可/拒否リスト。
- model — 使用するLLMモデル(エージェントごとに異なる場合あり)。
- classification_ceiling — このエージェントが到達できる最大分類レベル。
エージェントアイデンティティ
各エージェントは個性、ミッション、境界を定義する独自のSPINE.mdを持ちます。SPINE.mdファイルは エージェントのワークスペースディレクトリに置かれます:
~/.triggerfish/
workspace/
personal/
SPINE.md # パーソナルアシスタントの個性
work/
SPINE.md # ワークアシスタントの個性
support/
SPINE.md # サポートボットの個性分離
マルチエージェントルーティングはエージェント間の厳格な分離を強制します:
| 側面 | 分離 |
|---|---|
| セッション | 各エージェントは独立したセッション空間を持ちます。セッションは共有されません。 |
| Taint | Taintはエージェントごとに追跡され、エージェントをまたぎません。仕事のtaintは個人セッションに影響しません。 |
| スキル | スキルはワークスペースごとにロードされます。仕事のスキルはパーソナルエージェントには利用できません。 |
| シークレット | 認証情報はエージェントごとに分離されています。サポートエージェントは仕事のAPIキーにアクセスできません。 |
| ワークスペース | 各エージェントはコード実行のための独自のファイルシステムワークスペースを持ちます。 |
エージェント間通信はsessions_sendを通じて可能ですが、ポリシーレイヤーによって
ゲートされています。1つのエージェントは明示的に許可するポリシールールなしに、別のエージェントのデータや セッションにサイレントにアクセスできません。 :::
