エージェントチーム
Triggerfishエージェントは複雑なタスクを共に取り組む協力エージェントの永続的なチームを生成できます。 各チームメンバーは独自のセッション、役割、会話コンテキスト、ツールを持ちます。1人のメンバーが リードとして指定され、作業をコーディネートします。
チームは専門的な役割が並行して作業することから恩恵を受けるオープンエンドなタスクに最適です: 調査 + 分析 + ライティング、アーキテクチャ + 実装 + レビュー、または異なる視点が互いの作業を 繰り返し検討する必要があるタスク。
利用可能性
エージェントチームは、Triggerfish Gatewayを使用する場合、Powerプラン(月額$149)が必要です。 独自のAPIキーを実行しているオープンソースユーザーはエージェントチームへの完全なアクセスを持ちます — 各チームメンバーは設定されたプロバイダーからの推論を消費します。
ツール
team_create
タスクで協力するエージェントの永続的なチームを作成します。メンバーの役割、ツール、モデルを定義します。 正確に1人のメンバーがリードでなければなりません。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
name | string | はい | 人間が読めるチーム名 |
task | string | はい | チームの目標(リードへの最初の指示として送られる) |
members | array | はい | チームメンバーの定義(以下参照) |
idle_timeout_seconds | number | いいえ | メンバーごとのアイドルタイムアウト。デフォルト:300(5分) |
max_lifetime_seconds | number | いいえ | チームの最大ライフタイム。デフォルト:3600(1時間) |
classification_ceiling | string | いいえ | チーム全体の分類の上限(例:CONFIDENTIAL) |
メンバー定義:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
role | string | はい | 一意の役割識別子(例:researcher、reviewer) |
description | string | はい | このメンバーが行うこと(システムプロンプトに注入) |
is_lead | boolean | はい | このメンバーがチームリードかどうか |
model | string | いいえ | このメンバーのモデル上書き |
classification_ceiling | string | いいえ | メンバーごとの分類の上限 |
initial_task | string | いいえ | 最初の指示(リードはデフォルトでチームタスク) |
バリデーションルール:
- チームには
is_lead: trueを持つメンバーが正確に1人必要です - すべての役割は一意で空でない必要があります
- メンバーの分類の上限はチームの上限を超えることができません
nameとtaskは空でない必要があります
team_status
アクティブチームの現在の状態を確認します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
team_id | string | はい | チームID |
チームのステータス、集約taintレベル、各メンバーの現在のtaint、ステータス、最終アクティビティ タイムスタンプを含むメンバーごとの詳細を返します。
team_message
特定のチームメンバーにメッセージを送信します。追加コンテキストの提供、作業のリダイレクト、 進捗の更新要求に有用です。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
team_id | string | はい | チームID |
role | string | いいえ | ターゲットメンバーの役割(デフォルト:リード) |
message | string | はい | メッセージコンテンツ |
チームはrunningステータスで、ターゲットメンバーはactiveまたはidleである必要があります。
team_disband
チームをシャットダウンしてすべてのメンバーセッションを終了します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
team_id | string | はい | チームID |
reason | string | いいえ | チームを解散する理由 |
チームを作成したセッションまたはリードメンバーのみがチームを解散できます。
チームの仕組み
作成
エージェントがteam_createを呼び出すと、Triggerfishは以下を行います:
- チーム定義(役割、リード数、分類の上限)を検証する
- オーケストレーターファクトリーを通じて各メンバーのために分離されたエージェントセッションを生成する
- 各メンバーのシステムプロンプトにチームロスタープロンプトを注入し、役割、チームメイト、 協力指示を説明する
- リードに(またはメンバーごとのカスタム
initial_taskに)最初のタスクを送信する - 30秒ごとにチームの健全性を確認するライフサイクルモニターを開始する
各メンバーセッションは独自の会話コンテキスト、taintトラッキング、ツールアクセスで完全に分離されています。
協力
チームメンバーはsessions_sendを使用して互いに通信します。作成エージェントはメンバー間でメッセージを 中継する必要はありません。典型的なフロー:
- リードがチームの目標を受け取る
- リードがタスクを分解し、
sessions_sendを通じてメンバーに割り当てを送る - メンバーが自律的に作業し、ツールを呼び出して繰り返す
- メンバーが結果をリードに(または直接別のメンバーに)送る
- リードが結果を統合して作業が完了したかどうかを決定する
- リードが
team_disbandを呼び出してチームをシャットダウンする
チームメンバー間のメッセージはオーケストレーターを通じて直接配信されます — 各メッセージが受信者の セッションで完全なエージェントターンをトリガーします。
ステータス
いつでもteam_statusを使用して進捗を確認できます。レスポンスには以下が含まれます:
- チームステータス:
running、paused、completed、disbanded、またはtimed_out - 集約taint: すべてのメンバーにわたる最高の分類レベル
- メンバーごとの詳細: 役割、ステータス(
active、idle、completed、failed)、 現在のtaintレベル、最終アクティビティタイムスタンプ
解散
チームは以下によって解散できます:
- 作成セッションが
team_disbandを呼び出す - リードメンバーが
team_disbandを呼び出す - ライフサイクルモニターがライフタイム制限の後に自動解散する
- ライフサイクルモニターがすべてのメンバーが非アクティブであることを検出する
チームが解散すると、すべてのアクティブなメンバーセッションが終了してリソースがクリーンアップされます。
チームの役割
リード
リードメンバーはチームをコーディネートします。作成時:
- チームの
taskを最初の指示として受け取ります(initial_taskで上書きされない限り) - 作業の分解、タスクの割り当て、目標が達成されたときの判断のためのシステムプロンプト指示を受け取ります
- チームを解散する権限があります
チームごとに正確に1人のリードがいます。
メンバー
リード以外のメンバーはスペシャリストです。作成時:
initial_taskが提供された場合はそれを受け取り、そうでなければリードが作業を送るまでアイドル状態になります- 完了した作業をリードまたは次の適切なチームメイトに送るためのシステムプロンプト指示を受け取ります
- チームを解散できません
ライフサイクル監視
チームには30秒ごとに実行される自動ライフサイクル監視があります。
アイドルタイムアウト
各メンバーにはアイドルタイムアウト(デフォルト:5分)があります。メンバーがアイドル状態の場合:
- 最初の閾値(idle_timeout_seconds): メンバーは作業が完了している場合に結果を送るよう 促すメッセージを受け取ります
- 2倍の閾値(2x idle_timeout_seconds): メンバーは終了され、リードに通知されます
ライフタイムタイムアウト
チームには最大ライフタイム(デフォルト:1時間)があります。制限に達すると:
- リードは最終出力を生成するための60秒の猶予を与える警告メッセージを受け取ります
- 猶予期間後、チームは自動的に解散されます
ヘルスチェック
モニターは30秒ごとにセッションの健全性を確認します:
- リードの失敗: リードセッションに到達できなくなった場合、チームは一時停止され作成セッションに 通知されます
- メンバーの失敗: メンバーセッションが消えた場合、
failedとしてマークされ、リードに残りの メンバーで継続するよう通知されます - すべて非アクティブ: すべてのメンバーが
completedまたはfailedの場合、作成セッションに 新しい指示を注入するかまたは解散するかを選択するよう通知されます
分類とTaint
チームメンバーセッションは他のすべてのセッションと同じ分類ルールに従います:
- 各メンバーは
PUBLICtaintから開始し、分類データにアクセスするにつれてエスカレートします - 分類の上限はチームごとまたはメンバーごとに設定して、メンバーがアクセスできるデータを制限できます
- ライトダウン禁止強制はすべてのメンバー間通信に適用されます。
CONFIDENTIALにtaintされた メンバーはPUBLICのメンバーにデータを送信できません - 集約taint(すべてのメンバーにわたる最高のtaint)は
team_statusで報告され、作成セッションが チームの全体的な分類露出を追跡できます
SECURITY メンバーの分類の上限はチームの上限を超えることができません。チームの上限が
INTERNALの場合、CONFIDENTIALの上限で設定できるメンバーはいません。これは作成時に検証されます。 :::
チームとサブエージェントの比較
| 側面 | サブエージェント(subagent) | チーム(team_create) |
|---|---|---|
| ライフタイム | 単一タスク、結果を返して終了 | 解散またはタイムアウトまで永続 |
| メンバー | 1つのエージェント | 異なる役割を持つ複数のエージェント |
| インタラクション | 親からのファイア・アンド・フォーゲット | メンバーがsessions_sendを通じて自由に通信 |
| コーディネーション | 親が結果を待つ | リードがコーディネート、親はteam_statusでチェックイン可能 |
| ユースケース | 焦点を絞った単一ステップの委任 | 複雑なマルチロールの協力 |
焦点を絞ったタスクを行い結果を返す単一のエージェントが必要な場合はサブエージェントを使用します。 タスクが互いの作業を繰り返し検討する複数の専門的な視点から恩恵を受ける場合はチームを使用します。
チームは一度作成されると自律的です。作成エージェントはステータスを確認してメッセージを送ることが
できますが、細かく管理する必要はありません。リードがコーディネーションを処理します。 :::
