LangChain のブログに掲載された、LangChain Team 名義の 2025 年 7 月 2 日付の記事で、エージェントがコンテキストウィンドウに入れるものをどう管理するかを扱っている。記事は冒頭で、Andrej Karpathy によるものとして、LLM を新しい種類のオペレーティングシステムと捉え、モデルを CPU、そのコンテキストウィンドウを RAM とみなす枠組みを紹介し、コンテキストエンジニアリング を、次のステップにちょうど必要な情報でコンテキストウィンドウを満たす繊細な技芸であり科学であるとする彼の説明を引用している。記事はコンテキストエンジニアリングを、3 種類のコンテキストを包含する概念として扱う。すなわち、指示(プロンプト、メモリ、few-shot の例、ツールの説明)、知識(事実とメモリ)、ツール(ツール呼び出しからのフィードバック)である。

その動機は、長時間にわたるタスクで LLM 呼び出しとツール呼び出しを交互に行うエージェントはトークンを蓄積し、それがコンテキストウィンドウを超えたり、コストとレイテンシを押し上げたり、性能を低下させたりしうるという点にある。記事は、長いコンテキストが失敗する形についての Drew Breunig のリストを挙げており、その中には コンテキストポイズニング や コンテキストの混乱 が含まれる。そのうえで、実際に使われている戦略を、エージェント製品や論文から引いた例とともに 4 つに分類し、最後にそれぞれの分類を LangChain 自身の LangGraph の機能に対応付けている。トークン使用量のトレースと、コンテキストエンジニアリングの変更がもたらす影響のテストには LangSmith を勧めている。

要点

  • 書き込み:コンテキストをコンテキストウィンドウの外に保存すること。セッション内のスクラッチパッドは、ファイルに書き込むツール呼び出しとして、あるいはエージェントの実行時状態オブジェクトのフィールドとして実装される。セッションをまたぐ長期メモリについては、Reflexion や Generative Agents といった研究から、ChatGPT、Cursor、Windsurf などの製品に至るまでの流れを記事はたどっている。
  • 選択:関連するコンテキストをウィンドウに取り込むこと。多くのコーディングエージェントは、Claude Code の CLAUDE.md や Cursor と Windsurf のルールファイルのように、限られた一連のファイルを常に読み込む。一方、大量のメモリの中から選択するのはより難しく、ユーザーを驚かせることもある。ツールについては、最も関連性の高いツールの説明だけを取得する方法を説明し、知識については、コードベースが大きくなるにつれて埋め込み検索だけでは信頼性が低くなる理由について「Windsurf の Varun」の言葉を引用している。
  • 圧縮:タスクに必要なトークンだけを残すこと。その手段の一つは要約で、例としては、記事によればコンテキストウィンドウの 95% が使われた後に実行される Claude Code の自動コンパクト(コンパクション を参照)や、トークンを大量に消費するツール出力とエージェント間の引き継ぎに対する後処理がある。もう一つは、古いメッセージを削除するといったヒューリスティックによる切り詰めである。
  • 分離:コンテキストを分割すること。最も一般的なのは、それぞれ独自のツール、指示、コンテキストウィンドウを持つサブエージェントに分割する方法である(サブエージェントアーキテクチャ を参照)。また、トークンを大量に消費するオブジェクトを、コード実行サンドボックスや、毎ターンモデルに公開されるわけではない状態オブジェクトのフィールドに保持する方法もある。
  • マルチエージェントによる分離のコストとして、記事はチャットと比べて最大 15 倍のトークンを消費するという Anthropic の報告を伝え、あわせてサブエージェントの作業を計画するための入念なプロンプト作成と、協調の必要性を挙げている。この数値は記事自身が測定したものではなく、引用したものである。
  • これらの戦略を適用する前に、記事は 2 つの基盤を勧めている。データを確認し、エージェント全体のトークン使用量を追跡する手段と、コンテキストエンジニアリングの変更が役に立つのか害になるのかを簡単にテストする手段である。記事はその両方に LangSmith のトレースと評価を提示している。
  • 記事は各分類に LangGraph の機能を対応付けている。書き込みには、スクラッチパッドとしてのチェックポイント付きのスレッド単位の状態と、セッションをまたぐ長期メモリ。選択には、ノードごとの状態へのアクセスとメモリの取得、そしてツールの説明に対するセマンティック検索のための LangGraph Bigtool ライブラリ。圧縮には、要約や切り詰めのユーティリティと独自の要約ノード。分離には、状態スキーマ、サンドボックス、そして supervisor ライブラリと swarm ライブラリである。

背景

記事は、4 つの分類を新しい技法としてではなく、人気のあるエージェントにすでに見られるパターンをまとめたものとして提示している。また、その裏付けとなる根拠の多くは、Anthropic、Cognition、Hugging Face をはじめとする他の組織の文章からの引用であるため、そうした具体的な内容はそれぞれの出典による主張である。結びの節は LangChain による自社製品の説明であり、LangGraph と LangSmith に関する推奨はベンダーによるガイダンスとして読むべきである。