セッションとメモリ
セッションプルーニング
セッションプルーニングは、各LLM呼び出しの直前に、メモリ内のコンテキストから古いツール結果を削除します。ディスク上のセッション履歴(*.jsonl)は書き換えません。
実行タイミング
mode: "cache-ttl"が有効で、そのセッションの最後のAnthropic呼び出しがttlより古い場合。- そのリクエストでモデルに送信されるメッセージにのみ影響します。
- Anthropic API呼び出し(およびOpenRouterのAnthropicモデル)でのみ有効です。
- 最良の結果を得るには、
ttlをモデルのcacheRetentionポリシー(short= 5分,long= 1時間)に合わせてください。 - プルーニング後、TTLウィンドウはリセットされるため、
ttlが再度期限切れになるまで、後続のリクエストはキャッシュを保持します。
スマートデフォルト(Anthropic)
- OAuthまたはsetup-token プロファイル:
cache-ttlプルーニングを有効にし、ハートビートを1hに設定。 - APIキー プロファイル:
cache-ttlプルーニングを有効にし、ハートビートを30mに設定し、AnthropicモデルでデフォルトcacheRetention: "short"を設定。 - これらの値を明示的に設定した場合、OpenClawは上書きしません。
改善点(コスト+キャッシュ動作)
- プルーニングする理由: AnthropicのプロンプトキャッシュはTTL内でのみ適用されます。セッションがTTLを超えてアイドル状態になると、次回のリクエストでは、先にトリミングしない限り、フルプロンプトが再キャッシュされます。
- 何が安くなるか: プルーニングにより、TTL期限切れ後の最初のリクエストにおける cacheWrite サイズが削減されます。
- TTLリセットが重要な理由: プルーニングが実行されるとキャッシュウィンドウがリセットされるため、後続のリクエストはフル履歴を再キャッシュする代わりに、新しくキャッシュされたプロンプトを再利用できます。
- 行わないこと: プルーニングはトークンを追加したり、コストを「二重」にしたりしません。TTL後の最初のリクエストでキャッシュされる内容を変更するだけです。
プルーニング対象
toolResultメッセージのみ。- ユーザーおよびアシスタントのメッセージは決して変更されません。
- 最後の
keepLastAssistants個のアシスタントメッセージは保護され、そのカットオフ後のツール結果はプルーニングされません。 - カットオフを設定するのに十分なアシスタントメッセージがない場合、プルーニングはスキップされます。
- 画像ブロックを含むツール結果はスキップされます(トリミング/クリアされません)。
コンテキストウィンドウの見積もり
プルーニングは推定コンテキストウィンドウ(文字数 ≈ トークン数 × 4)を使用します。ベースウィンドウは次の順序で解決されます:
models.providers.*.models[].contextWindowのオーバーライド。- モデル定義の
contextWindow(モデルレジストリから)。 - デフォルト
200000トークン。
agents.defaults.contextTokens が設定されている場合、それは解決されたウィンドウに対する上限(最小値)として扱われます。
モード
cache-ttl
- 最後のAnthropic呼び出しが
ttl(デフォルト5m)より古い場合にのみプルーニングが実行されます。 - 実行時: 以前と同じソフトトリム+ハードクリア動作。
ソフト vs ハードプルーニング
- ソフトトリム: サイズ超過のツール結果のみ対象。
- 先頭と末尾を保持し、
...を挿入し、元のサイズを記した注記を追加します。 - 画像ブロックを含む結果はスキップします。
- 先頭と末尾を保持し、
- ハードクリア: ツール結果全体を
hardClear.placeholderで置き換えます。
ツール選択
tools.allow/tools.denyは*ワイルドカードをサポートします。- Denyが優先されます。
- マッチングは大文字小文字を区別しません。
- 許可リストが空の場合 => すべてのツールが許可されます。
他の制限との相互作用
- 組み込みツールは既に自身の出力を切り詰めます。セッションプルーニングは、長時間実行されるチャットでモデルコンテキスト内にツール出力が蓄積しすぎるのを防ぐ追加のレイヤーです。
- コンパクションは別機能です: コンパクションは要約して永続化しますが、プルーニングはリクエストごとに一時的です。 /concepts/compaction を参照してください。
デフォルト(有効時)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[古いツール結果の内容がクリアされました]" }
例
デフォルト(無効):
{
agents: { defaults: { contextPruning: { mode: "off" } } },
}
TTLを考慮したプルーニングを有効化:
{
agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" } } },
}
特定のツールにプルーニングを制限:
{
agents: {
defaults: {
contextPruning: {
mode: "cache-ttl",
tools: { allow: ["exec", "read"], deny: ["*image*"] },
},
},
},
}
設定リファレンスを参照: Gateway Configuration