コンテキストプルーニング
AIエージェントのセッション中に蓄積されたツール結果や古いコンテキストを削除し、コンテキストウィンドウを効率的に管理する手法。
目的
長時間のセッションでは、ツール実行結果やターン履歴が積み重なりコンテキストウィンドウを圧迫する。プルーニングにより不要なデータを除去し、コンテキストをスリムに保つ。
主なモード
| モード | 動作 |
|---|---|
off(デフォルト) |
プルーニングを無効化。ツール結果をすべて保持 |
cache-ttl |
最後のAPI呼び出しから一定時間(デフォルト5分)経過後、古いツール結果を削除 |
cache-ttl の動作フロー
- セッションがアイドル状態になる(最後のAPI呼び出しから5分以上経過)
- プルーニング実行:古いツール結果をコンテキストから削除
- 次のリクエスト:削除後のスリムなコンテキストを送信
既存のキャッシュを再利用するのではなく、「不要なデータを捨てて次のキャッシュを効率的に始める」戦略。
pruning vs compaction の違い
コンテキストコンパクションと混同されやすいが、対象・タイミング・手法が異なる:
| pruning | compaction | |
|---|---|---|
| 対象 | ツール結果のみ | 会話全体 |
| タイミング | TTL経過後(cache-ttl時) | コンテキスト上限接近時 |
| 方法 | 削除 | 要約 |
| 保存 | メモリ内のみ | JSONLに永続化 |
プロンプトキャッシュとの関係
pruningによりコンテキストの内容が変わるため、以前のキャッシュは無効化される。しかし、スリムになったコンテキストが新しいキャッシュのベースとなり、次以降のリクエストでキャッシュ効率が改善する。