Sessions and memory

セッションツール

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、種類、チャンネル、モデル、トークン数、タイムスタンプを含むセッションを返します。種類(maingroupcronhooknode)、完全一致の label、完全一致の agentId、検索テキスト、または新しさ(activeMinutes)でフィルターできます。メールボックス形式のトリアージが必要な場合は、可視性スコープ付きの派生タイトル、最後のメッセージのプレビュースニペット、または各行の範囲制限された最近のメッセージも要求できます。派生タイトルとプレビューは、設定されたセッションツール可視性ポリシーの下で呼び出し元がすでに参照できるセッションに対してのみ生成されるため、無関係なセッションは非表示のままです。

sessions_history は、特定のセッションの会話トランスクリプトを取得します。デフォルトでは、ツール結果は除外されます。それらを表示するには includeTools: true を渡します。返されるビューは意図的に範囲制限され、安全性フィルターが適用されています。

  • 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 を設定すると、キューに入れてすぐに戻ります。
  • 返信を待つ: タイムアウトを設定し、応答をインラインで取得します。

Slack や Discord のキーが :thread:<id> で終わるようなスレッドスコープのチャットセッションは、有効な sessions_send ターゲットではありません。エージェント間の調整には親チャンネルのセッションキーを使い、ツールでルーティングされたメッセージがアクティブな人間向けスレッド内に表示されないようにしてください。

メッセージと A2A の後続返信は、受信側プロンプト([Inter-session message ... isUser=false])およびトランスクリプトの由来情報で、セッション間データとしてマークされます。受信側エージェントは、それらをエンドユーザーが直接書いた指示ではなく、ツールでルーティングされたデータとして扱う必要があります。

ターゲットが応答した後、OpenClaw は、エージェントが交互にメッセージを送る返信バックループを実行できます(最大 5 ターン)。ターゲットエージェントは REPLY_SKIP を返して早期に停止できます。

ステータスとオーケストレーションヘルパー

session_status は、現在のセッションまたは別の可視セッション向けの軽量な /status 相当ツールです。使用量、時刻、モデル/ランタイム状態、および存在する場合はリンクされたバックグラウンドタスクのコンテキストを報告します。/status と同様に、最新のトランスクリプト使用量エントリから疎なトークン/キャッシュカウンターをバックフィルできます。また、model=default はセッションごとの上書きをクリアします。呼び出し元の現在のセッションには sessionKey="current" を使います。openclaw-tui などの可視クライアントラベルはセッションキーではありません。

sessions_yield は意図的に現在のターンを終了し、待機している後続イベントを次のメッセージにできるようにします。サブエージェントを生成した後、ポーリングループを構築する代わりに完了結果を次のメッセージとして受け取りたい場合に使用します。

subagents は、すでに生成された OpenClaw サブエージェント向けのコントロールプレーンヘルパーです。次をサポートします。

  • action: "list" でアクティブ/最近の実行を調査します
  • action: "steer" で実行中の子に後続の指示を送信します
  • action: "kill" で 1 つの子または all を停止します

サブエージェントの生成

sessions_spawn は、デフォルトでバックグラウンドタスク用の隔離されたセッションを作成します。これは常に非ブロッキングで、runIdchildSessionKey を返してすぐに戻ります。

主なオプション:

  • runtime: "subagent"(デフォルト)または外部ハーネスエージェント用の "acp"
  • 子セッション向けの modelthinking の上書き。
  • チャットスレッド(Discord、Slack など)に生成をバインドする thread: true
  • 子にサンドボックスを強制する sandbox: "require"
  • 子が現在の要求元トランスクリプトを必要とする場合、ネイティブサブエージェントには context: "fork"。クリーンな子には省略するか、context: "isolated" を使います。スレッドバインドされたネイティブサブエージェントは、threadBindings.defaultSpawnContext が別の指定をしていない限り、デフォルトで context: "fork" になります。

デフォルトのリーフサブエージェントはセッションツールを取得しません。maxSpawnDepth >= 2 の場合、深さ 1 のオーケストレーターサブエージェントは追加で sessions_spawnsubagentssessions_listsessions_history を受け取り、自身の子を管理できます。リーフ実行は引き続き再帰的なオーケストレーションツールを取得しません。

完了後、通知ステップが結果を要求元のチャンネルに投稿します。完了配信は、利用可能な場合はバインドされたスレッド/トピックルーティングを保持します。また、完了元がチャンネルのみを識別している場合でも、OpenClaw は要求元セッションに保存されたルート(lastChannel / lastTo)を直接配信に再利用できます。

ACP 固有の動作については、ACP エージェント を参照してください。

可視性

セッションツールは、エージェントが参照できる範囲を制限するようスコープされます。

レベル スコープ
self 現在のセッションのみ
tree 現在のセッション + 生成されたサブエージェント
agent このエージェントのすべてのセッション
all すべてのセッション(設定されている場合はクロスエージェント)

デフォルトは tree です。サンドボックス化されたセッションは、設定にかかわらず tree に制限されます。

関連資料

関連項目