Anthropic の Claude Cookbook に収録されたこのノートブックは、長期タスクを担うエージェントのコンテキストを管理するための 3 つの戦略を実践的に比較するものである。 3 つとは、コンパクション、ツール結果のクリア、そして構造化ノートテイキングとして説明されるメモリ (構造化ノートテイキング を参照)である。ノートブックは、ツールの結果、モデルの推論、ユーザーのメッセージがすべて蓄積していき、 やがてエージェントはトークン上限に達するか、もはや役に立たないコンテキストのためにコストを払い続けることになる、という観察から出発する。 そして、コンテキストが大きくなるにつれて想起が低下する コンテキストロット を、ハードな上限に達する前からこの問題が効いてくる理由として挙げている。 コンテキストエンジニアリング をリソースの問題として捉える Anthropic の枠組みに従い、ノートブックは 3 つのプリミティブがどう違うのかを示そうとする。 3 つともウィンドウをより効率的に使うためのものであり、混同しやすいからである。

実例として用いられるのは、長時間稼働する調査エージェントである。このエージェントは、それぞれおよそ 40K トークン(合計約 320K トークン)の 合成レビュー文書 8 本を 2 回のバッチで読み、ノートを取り、複数のセッションにまたがって比較の統合レポートを書く。 ノートブックは、このワークロードでは 3 つの問題すべてに自然と同時にぶつかると論じている。かさばる文書の読み込み、長い分析的な対話、 そしてセッション間で保持されなければならない知識である。各プリミティブは、まず最小限の手書き実装として示され、 次に Anthropic のファーストパーティ API 機能を通じて示され、最後に 3 つすべてが一緒に実行される。

詳細

  • 各プリミティブが何を対象とするか。 コンパクションはトランスクリプト全体に対する操作で、会話をモデルが書いた要約で置き換える。 ツール結果のクリアはトランスクリプトの一部に対する操作で、呼び出しの記録は残したまま、古いツールの結果をプレースホルダーで置き換える。 メモリは情報をウィンドウの外のストレージに移し、エージェントは後でそれを読み戻す。ノートブックが示す大まかなメンタルモデルは、 コンパクションはウィンドウ全体を圧縮し、クリアはその中の古くて再取得可能なデータを捨て、メモリは情報をセッションをまたいで保持させる、というものである。
  • API 機能と調整項目。 ノートブックは 3 つを Anthropic API の機能に対応づけている。コンパクションは compact_20260112 のコンテキスト編集 (サーバーサイドで、トークンのしきい値で発動し、しきい値の最小は 50K、デフォルトは 150K。カスタムの instructions と pause_after_compaction で設定可能)、 クリアは clear_tool_uses_20250919 のコンテキスト編集(デフォルトの発動は 100K、デフォルトの keep はツール使用 3 回分で、 ほかに clear_at_least、exclude_tools、clear_tool_inputs がある)、そしてメモリは memory_20250818 ツールで、 モデルがこれを呼び出し、アプリケーションがクライアントサイドで実装する。
  • ベースラインの失敗モード。 コンテキスト管理を行わないと、同じ実行は 200K トークンのウィンドウでは API が次のリクエストを拒否するハードストップに達し、 1M トークンのウィンドウでは実行は続くものの、初期の資料が後のツール結果の下に埋もれて想起が劣化する。 ノートブックは、いずれの場合もプリフィルのレイテンシがコンテキストの長さに比例して増えることも付け加えている。
  • トレードオフ。 ノートブックはコストを並べてまとめている。コンパクションは逐語的な詳細を要約と引き換えにし、推論のコストがかかる。 クリアは推論のコストはかからないが、古い結果は再取得されるまで失われ、キャッシュされたプロンプトのプレフィックスを無効にする。 メモリはツール呼び出しのオーバーヘッドを加え、その質はエージェントが何を保存すると選んだかに左右される。 情報の欠落は二者択一ではなく程度の問題だ、とノートブックは述べている。
  • 組み合わせ。 それぞれが問題の異なる部分を対象としているため、3 つは競合するのではなく組み合わせて使える。 クリアとメモリツールを組み合わせる場合は、エージェントが直前に保存した内容を見失わないよう、メモリツールをクリアの対象から除外することを推奨している。 また Claude Code を、コンパクションを 2 つのメモリシステムと併用している例として挙げている。 開発者が書く CLAUDE.md ファイルと、Claude 自身が書く 自動メモリ である。
  • どれを使わずにおくか。 毎回のセッションをまっさらな状態から始めるべき場合はメモリを、セッションがコンテキストの上限を十分に下回る場合はコンパクションを、 エージェントが過去のツール結果を本当に完全な形で必要とする場合(たとえば文章を並べて比較する場合)はクリアを、それぞれ使わないことを提案している。
  • ワークロードによる選択。 締めくくりの指針は、プリミティブを追加する前に、そのワークロードが実際にコンテキストの問題のどの部分を抱えているかを診断すること、 そしてワークロードの特性をまとめた表を答えではなく検証すべき仮説として扱うことである。また、1M トークンのウィンドウがあってもこの必要性はなくならないと論じている。 コンテキストロットとプリフィルのレイテンシは、ウィンドウの上限ではなく、ウィンドウにどれだけ入っているかに比例して増えるからである。
  • 隣接する機能。 ノートブックは、ツールの肥大化に対する別のアプローチとして プログラマティックツール呼び出し と ツール検索 を挙げているが、 これらは扱っていない。