Session Pruning
Session pruningは、各LLM呼び出しの前にコンテキストから古いツール結果を削減します。これにより、
通常の会話テキストは書き換えずに、蓄積したツール出力(実行結果、ファイル読み取り、
検索結果)によるコンテキスト肥大化を抑えます。
pruningはメモリ内でのみ行われ、ディスク上のセッショントランスクリプトは変更しません。
完全な履歴は常に保持されます。
なぜ重要か
長いセッションでは、コンテキストウィンドウを膨らませるツール出力が蓄積します。これにより
コストが増え、必要以上に早く compaction が必要になることがあります。
pruningは、特にAnthropic prompt cachingにとって価値があります。キャッシュTTLが
切れた後、次のリクエストでは完全なプロンプトが再キャッシュされます。pruningは
キャッシュ書き込みサイズを減らし、コストを直接下げます。
仕組み
- キャッシュTTLが切れるのを待ちます(デフォルトは5分)。
- 通常のpruningのために古いツール結果を見つけます(会話テキストはそのまま残します)。
- 大きすぎる結果をソフトトリムします — 先頭と末尾を残し、
... を挿入します。
- 残りをハードクリアします — プレースホルダーに置き換えます。
- TTLをリセットし、後続のリクエストで新しいキャッシュを再利用します。
レガシー画像クリーンアップ
OpenClawは、履歴内に生の画像ブロックを保存していた古いレガシーセッション向けに、
別個の冪等なクリーンアップも実行します。
- 直近の3つの完了済みターンはバイト単位でそのまま保持されるため、
直後のフォローアップに対するプロンプトキャッシュ接頭辞の安定性が保たれます。
user または toolResult の履歴内にある、すでに処理済みの古い画像ブロックは、
[image data removed - already processed by model] に置き換えられる場合があります。
- これは通常のキャッシュTTL pruningとは別です。後続ターンで画像ペイロードが繰り返し
プロンプトキャッシュを無効化するのを防ぐために存在します。
賢いデフォルト
OpenClawは、Anthropicプロファイルに対して自動的にpruningを有効にします。
| プロファイルタイプ | pruning有効 | Heartbeat |
|---|
| Anthropic OAuth/token認証(Claude CLI再利用を含む) | はい | 1時間 |
| API key | はい | 30分 |
明示的な値を設定した場合、OpenClawはそれを上書きしません。
有効化または無効化
Anthropic以外のプロバイダーでは、pruningはデフォルトで無効です。有効にするには:
{
agents: {
defaults: {
contextPruning: { mode: "cache-ttl", ttl: "5m" },
},
},
}
無効にするには、mode: "off" を設定します。
pruningとcompactionの違い
| Pruning | Compaction |
|---|
| 何をするか | ツール結果を削減する | 会話を要約する |
| 保存されるか | いいえ(リクエストごと) | はい(トランスクリプト内) |
| 対象範囲 | ツール結果のみ | 会話全体 |
両者は相互補完の関係にあり、pruningは
compactionサイクルの合間にツール出力を軽量に保ちます。
さらに読む