メインコンテンツへスキップ
OpenClaw は、エージェントがセッションをまたいで作業し、状態を検査し、サブエージェントをオーケストレーションするためのツールを提供します。

利用可能なツール

ツール機能
sessions_list任意のフィルター(種別、ラベル、エージェント、アーカイブ、プレビュー)でセッションを一覧表示する
sessions_history特定セッションのトランスクリプトを読む
sessions_send別のセッションにメッセージを送り、任意で待機する
sessions_spawnバックグラウンド作業用に分離されたサブエージェントセッションを起動する
sessions_yield現在のターンを終了し、後続のサブエージェント結果を待つ
subagentsこのセッションで起動されたサブエージェントの状態を一覧表示する
session_status/status 形式のカードを表示し、任意でセッション単位のモデル上書きを設定する
これらのツールにも、アクティブなツールプロファイルと許可/拒否ポリシーが適用されます。tools.profile: "coding" には、sessions_spawnsessions_yieldsubagents を含む完全なセッションオーケストレーションセットが含まれます。tools.profile: "messaging" には、セッション間メッセージングツール(sessions_listsessions_historysessions_sendsession_status)が含まれますが、サブエージェントの起動は含まれません。メッセージングプロファイルを維持しつつネイティブ委譲も許可するには、次を追加します。
{
  tools: {
    profile: "messaging",
    alsoAllow: ["sessions_spawn", "sessions_yield", "subagents"],
  },
}
グループ、プロバイダー、サンドボックス、エージェント単位のポリシーは、プロファイル段階の後でもこれらのツールを削除できます。影響を受けるセッションから /tools を使用して、有効なツール一覧を検査してください。

セッションの一覧表示と読み取り

sessions_list は、キー、agentId、種別、チャネル、モデル、トークン数、タイムスタンプを含むセッションを返します。kinds(配列、受け入れ値: maingroupcronhooknodeother)、完全一致の label、完全一致の agentIdsearch テキスト、または最近のアクティビティ(activeMinutes)でフィルターできます。デフォルトではアクティブなセッションが返されます。代わりにアーカイブ済みセッションを検査するには archived: true を渡します。行には pinnedarchived の状態が含まれます。メールボックス形式のトリアージが必要な場合は、includeDerivedTitlesincludeLastMessage、または messageLimit(上限 20)を設定します。各行に、可視性スコープ内の派生タイトル、最後のメッセージのプレビュースニペット、または上限付きの最近のメッセージを含められます。派生タイトルとプレビューは、構成済みのセッションツール可視性ポリシーの下で呼び出し元がすでに見られるセッションに対してのみ生成されるため、無関係なセッションは隠れたままです。可視性が制限されている場合、sessions_list は有効なモードと、結果がスコープ制限されている可能性があるという警告を示す任意の visibility メタデータを返します。 sessions_history は、特定セッションの会話トランスクリプトを取得します。デフォルトではツール結果は除外されます。表示するには includeTools: true を渡します。最新の上限付き末尾には limit を使用します。ページネーションメタデータが必要な場合は offset: 0 を渡し、返された nextOffset 値を渡して、生のトランスクリプトファイルを読まずに古い OpenClaw トランスクリプトウィンドウへ後方にページ移動します。明示的なオフセットページは外部 CLI フォールバックインポートをマージしません。そのマージ済み表示履歴が必要な場合は、デフォルトの最新末尾ビュー(offset なし)を使用してください。 返されるビューは、意図的に範囲が制限され、安全性フィルターが適用されています。
  • assistant テキストは呼び出し前に正規化されます。
    • thinking タグは除去されます
    • <relevant-memories> / <relevant_memories> の足場ブロックは除去されます
    • <tool_call>...</tool_call><function_call>...</function_call><tool_calls>...</tool_calls><function_calls>...</function_calls> などのプレーンテキストのツール呼び出し XML ペイロードブロックは、正常に閉じない切り詰められたペイロードも含めて除去されます
    • [Tool Call: ...][Tool Result ...][Historical context ...] など、降格されたツール呼び出し/結果の足場は除去されます
    • <|assistant|> などの漏えいしたモデル制御トークン、その他の ASCII <|...|> トークン、全角 <|...|> バリアントは除去されます
    • <invoke ...> / </minimax:tool_call> などの不正な MiniMax ツール呼び出し XML は除去されます
  • 認証情報/トークンのようなテキストは返される前に秘匿されます
  • 長いテキストブロックは切り詰められます
  • 非常に大きな履歴では、古い行が削除されたり、過大な行が [sessions_history omitted: message too large] に置き換えられたりする場合があります
  • ツールは、truncateddroppedMessagescontentTruncatedcontentRedactedbytes、ページネーションメタデータなどの概要フラグを報告します
どちらのツールも、セッションキー"main" など)または以前の一覧呼び出しから得た セッション ID のいずれかを受け付けます。 バイト単位で完全一致するトランスクリプトが必要な場合は、sessions_history を生ダンプとして扱うのではなく、ディスク上のトランスクリプトファイルを検査してください。

セッション間メッセージの送信

sessions_send は別のセッションへメッセージを配信し、任意で応答を待機します。
  • 送信して忘れる: timeoutSeconds: 0 を設定すると、キューに入れてすぐに返ります。
  • 返信を待つ: タイムアウトを設定すると、応答をインラインで取得できます。
:thread:<id> で終わるキーなど、スレッドスコープのチャットセッションは、有効な sessions_send ターゲットではありません。ツール経由のメッセージがアクティブな人間向けスレッド内に表示されないよう、エージェント間の調整には親チャネルのセッションキーを使用してください。 メッセージと A2A の後続返信は、受信側プロンプト([Inter-session message ... isUser=false])とトランスクリプトの由来情報で、セッション間データとしてマークされます。受信側エージェントは、それらを直接エンドユーザーが書いた指示ではなく、ツール経由のデータとして扱う必要があります。 ターゲットが応答した後、OpenClaw は、エージェントが交互にメッセージを送る 返信バックループ を実行できます(最大 session.agentToAgent.maxPingPongTurns、範囲 0-20、デフォルト 5)。ターゲットエージェントは REPLY_SKIP を返して早期停止できます。

状態とオーケストレーションのヘルパー

session_status は、現在または別の可視セッション向けの軽量な /status 相当ツールです。使用量、時刻、モデル/ランタイム状態、存在する場合は関連付けられたバックグラウンドタスクコンテキストを報告します。/status と同様に、最新のトランスクリプト使用量エントリから疎なトークン/キャッシュカウンターを補完でき、model=default はセッション単位の上書きをクリアします。呼び出し元の現在のセッションには sessionKey="current" を使用してください。openclaw-tui などの可視クライアントラベルはセッションキーではありません。 ルートメタデータが利用可能な場合、session_status には可視の Route context JSON ブロックと対応する構造化 details フィールドも含まれます。これらのフィールドは、セッションキーと、現在ライブ実行を処理しているルートを区別します。
  • origin はセッションが作成された場所、または古い状態に保存済み origin メタデータがない場合に、配信可能なセッションキー接頭辞から推定されたプロバイダーです。
  • active は現在のライブ実行ルートです。現在処理中のライブセッションまたは現在のセッションに対してのみ報告されます。
  • deliveryContext はセッションに保存された永続的な配信ルートで、アクティブなサーフェスが異なる場合でも、OpenClaw が後の配信に再利用できます。
sessions_yield は、待機している後続イベントが次のメッセージになれるよう、意図的に現在のターンを終了します。ポーリングループを組み立てる代わりに、完了結果を次のメッセージとして受け取りたい場合は、サブエージェント起動後に使用します。 subagents は、すでに起動された OpenClaw サブエージェントの可視性ヘルパーです。アクティブ/最近の実行を検査するために action: "list" をサポートします。

サブエージェントの起動

sessions_spawn はデフォルトで、バックグラウンドタスク用に分離されたセッションを作成します。常に非ブロッキングであり、runIdchildSessionKey をすぐに返します。ネイティブサブエージェント実行は、子セッションの最初の可視 [Subagent Task] メッセージで委譲されたタスクを受け取り、システムプロンプトにはサブエージェントのランタイムルールとルーティングコンテキストのみが含まれます。 主なオプション:
  • 外部ハーネスエージェントには runtime: "subagent"(デフォルト)または "acp"
  • 子セッション向けの modelthinking の上書き。
  • 起動をチャットスレッド(Discord、Slack など)にバインドする thread: true
  • 子にサンドボックスを強制する sandbox: "require"
  • ネイティブサブエージェントで、子が現在のリクエスターのトランスクリプトを必要とする場合は context: "fork"。クリーンな子には省略するか context: "isolated" を使用します。context: "fork"runtime: "subagent" でのみ有効です。スレッドにバインドされたネイティブサブエージェントは、threadBindings.defaultSpawnContext が別の指定をしていない限り、デフォルトで context: "fork" になります。
デフォルトのリーフサブエージェントにはセッションツールが付与されません。maxSpawnDepth >= 2 の場合、深さ 1 のオーケストレーターサブエージェントには、自分の子を管理できるように sessions_spawnsubagentssessions_listsessions_history も追加で付与されます。リーフ実行には引き続き、再帰的なオーケストレーションツールは付与されません。 完了後、通知ステップが結果をリクエスターのチャネルに投稿します。完了配信は、利用可能な場合はバインドされたスレッド/トピックルーティングを保持します。また、完了 origin がチャネルのみを識別する場合でも、OpenClaw は直接配信用にリクエスターセッションに保存されたルート(lastChannel / lastTo)を再利用できます。 ACP 固有の動作については、ACP エージェント を参照してください。

可視性

セッションツールは、エージェントが見られる範囲を制限するようスコープされます。
レベルスコープ
self現在のセッションのみ
tree現在のセッション + 起動されたサブエージェント
agentこのエージェントのすべてのセッション
allすべてのセッション(構成されている場合はエージェント横断)
デフォルトは tree です。サンドボックス化されたセッションは、構成に関係なく tree に制限されます。

参考資料

関連