{
  "title": "Context Engineering: なぜ Prompt Engineering だけでは不十分だったのか",
  "excerpt": "2026年までに、現代のAIシステムにおける本当の仕事は、賢いプロンプトを書くことではない。モデルが何を見るか、いつ見るか、そしてそのコンテキストがどのように構造化され、永続化され、持続的な記憶に変換されるかを決定することだ。",
  "content_html": "<p>しばらくの間、「prompt engineering」は大規模言語モデルから良い結果を引き出す技術に与えられた名前だった。初期にはそれで理にかなっていた。ほとんどの人が one-shot のインタラクションを使っており、主要なレバーは実際に言い回しのように感じられた。より明確に尋ね、例を追加し、形式を制約すれば、モデルはより良く振る舞った。</p>\n<p>だが、その枠組みはもはや本当の問題に対して小さすぎる。</p>\n<p>AIシステムが本番で失敗する際、問題は通常、モデルがシステムプロンプトにもう一つ賢い文が必要だったということではない。問題は、モデルが正しい情報を見ていなかったり、無関係な情報を見すぎていたり、正しい情報を誤った形式で見ていたり、あるいは一つのステップから次へと正しい状態を引き継げなかったりすることにある。言い換えれば、問題はプロンプトだけではなかった。問題は<strong>コンテキストパイプライン全体</strong>だったのだ。</p>\n<p>だからこそ、<strong>context engineering</strong>という言葉が広まったのだ。この言葉がAIの主流の議論に登場したのは2025年半ばで、Tobi Lütke と Andrej Karpathy が「prompt engineering」は信頼性の高いLLMシステムを構築する際の本当の作業を過小評価していると主張したときだった[1]。しかし、その根底にある学問は名前よりも古い。RAG、tool calling、memory system、summarization、evaluation loop を構築したことがあるなら、すでに context engineering の一部を行ってきたことになる。変わったのは、ついにその全体像を表す名前を手に入れたことだ。</p>\n<h2>シンプルなメンタルモデル</h2>\n<p>最もシンプルな図式が欲しいなら、context engineering は外部世界とモデルのワーキングメモリの間にある層だ。</p>\n<pre><code class=\"language-mermaid\">flowchart TD\n    U[\"User request\"] --> CE[\"Context engine\"]\n\n    I[\"Instructions and policies\"] --> CE\n    R[\"Retrieved knowledge\"] --> CE\n    M[\"Memory and saved state\"] --> CE\n    T[\"Tool definitions and results\"] --> CE\n    H[\"Recent conversation history\"] --> CE\n\n    CE --> W[\"Model context window\"]\n    W --> L[\"LLM reasons and acts\"]\n    L --> O[\"Answer or tool call\"]\n    O --> S[\"New memory, logs, and state\"]\n    S --> CE\n</code></pre>\n<p>これが全てだ。</p>\n<p>モデルは推論エンジンだ。コンテキストエンジンは、モデルが何を推論の対象とするかを決定する。</p>\n<h2>名前は新しい。仕事はそうではない。</h2>\n<p>この言葉が共鳴を呼ぶ理由の一つは、別々に進化してきたいくつかの流れを結びつけるからだ。</p>\n<p>Retrieval-Augmented Generation（RAG）は、モデルが推論時に外部知識へのアクセスを必要とすることを教えてくれた[2]。ReAct は、モデルがツールを呼び出し、結果を観察し、そこから継続できるときに、推論と行動がより良く機能することを教えてくれた[3]。Memory の研究は、長時間稼働するアシスタントには、終わりのないトランスクリプトの蓄積ではなく、インデックス作成、retrieval、reading strategy が必要だと教えてくれた[4]。Long-context evaluation は、単により多くのトークンをモデルに詰め込むことが、より良いワーキングメモリを与えることと同じではないことを示した[5][6][7]。</p>\n<p>このように見ると、context engineering はこれらのアイデアの代替ではない。それらの上にある傘なのだ。</p>\n<p>その傘が重要なのは、現代のAIシステムはもはや孤立したプロンプトではなく、次のステップのために指示、ドキュメント、構造化データ、ツールの出力、そして以前の状態を一時的なコンテキストウィンドウに組み立てる動的システムだからだ。LangChain は、context engineering を「LLM がそのタスクを実行可能に完了できるよう、適切な形式で正しい情報とツールを提供する作業」と定義したが、これは的を射ている[8]。</p>\n<p>「plausibly complete the task」という言葉は、そこで大きな役割を果たしている。これが正しいテストなのだ。</p>\n<p>エージェントが失敗した場合、最初の問いは「どうすればプロンプトをより賢くできるか」であるべきではない。</p>\n<p>最初の問いは「モデルが成功するために必要なものを、実際に与えただろうか」であるべきだ。</p>\n<h2>なぜ Prompt Engineering では小さくなりすぎたのか</h2>\n<p>Prompt engineering は依然として重要だ。それは単に、より大きな学問のサブセットになっただけだ。</p>\n<p>古いメンタルモデルはこうだった：</p>\n<table>\n<thead>\n<tr>\n<th>Prompt engineering</th>\n<th>Context engineering</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>より良い指示を書く</td>\n<td>情報環境全体を構築する</td>\n</tr>\n<tr>\n<td>単一のリクエストに焦点を当てる</td>\n<td>マルチステップシステムに焦点を当てる</td>\n</tr>\n<tr>\n<td>ほぼ静的</td>\n<td>動的でステートフル</td>\n</tr>\n<tr>\n<td>言い回しを最適化する</td>\n<td>選択、構造、メモリ、ツールを最適化する</td>\n</tr>\n<tr>\n<td>単一のモデル呼び出しを改善する</td>\n<td>ループ全体を改善する</td>\n</tr>\n</tbody>\n</table>\n<p>この違いは、エージェントを構築した瞬間に明らかになる。</p>\n<p>エンタープライズソフトウェアのサポートエージェントを構築しているとしよう。ユーザーが「なぜ私たちのAPIリクエストがタイムアウトするのですか」と尋ねたとする。</p>\n<p>プロンプトの観点だけで考えるなら、言い回しを改善するかもしれない：</p>\n<ul>\n<li>モデルに簡潔であるよう求める</li>\n<li>証拠を引用するよう求める</li>\n<li>ステップバイステップで考えるよう求める</li>\n</ul>\n<p>これらは良い改善だ。しかし、不十分だ。</p>\n<p>本当のシステム上の問いはもっと難しい：</p>\n<ul>\n<li>エージェントはインシデントの runbook にアクセスできるか？</li>\n<li>最新のログやステータスページを見ることができるか？</li>\n<li>このアカウントがどの顧客ティアに属しているかを知っているか？</li>\n<li>会話の以前のターンを覚えているか？</li>\n<li>チケットシステムにクエリを投げられるか？</li>\n<li>古いドキュメントと現在のものを区別できるか？</li>\n<li>コンテキストが多すぎる場合、何がトリミングされるか？</li>\n</ul>\n<p>これが context engineering だ。</p>\n<p>プロンプトはその中の一行項目に過ぎない。</p>\n<h2>Context に含まれるもの</h2>\n<p>実際には、context には推論時にモデルが見る全てのものが含まれ、単に見えるプロンプトだけではない[8][9]。</p>\n<p>これは通常、以下を意味する：</p>\n<ul>\n<li>System instructions</li>\n<li>現在のユーザーリクエスト</li>\n<li>Retrieved documents</li>\n<li>JSON、テーブル、スキーマ、レコードなどの構造化データ</li>\n<li>Tool definitions</li>\n<li>Tool outputs</li>\n<li>Recent conversation history</li>\n<li>Long-term memory や保存されたノート</li>\n<li>Security、policy、formatting constraints</li>\n<li>ファイル、タブ、チケット、作業ディレクトリなどの environment state</li>\n</ul>\n<p>だからこそ、「コンテキストウィンドウを埋める」という言葉がこれほど中心的になったのだ。コンテキストウィンドウは、テキストが入る場所だけではない。それはモデルの一時的なワーキングメモリだ。そこに入る全てのものが注意を競い合う。</p>\n<p>そして競争がキーワードだ。</p>\n<p>余分なトークンは、単なる追加情報ではない。それは追加のノイズでもある。</p>\n<h2>なぜ大きなコンテキストウィンドウは問題を解決しなかったのか</h2>\n<p>現在のAI市場で最も一般的な誤解の一つは、大きなコンテキストウィンドウが context engineering の重要性を低下させたというものだ。</p>\n<p>研究は逆の方向を指している。</p>\n<p>『Lost in the Middle』は、モデルが長いコンテキストを不均等に使用し、関連情報が先頭や末尾付近にあるときは性能が良く、重要な情報が中間にあるときは性能が悪くなることを示した[5]。Databricks の long-context RAG study は、より多くの retrieved documents を追加することは役立つが、64k トークン以上で強い性能を維持したのはごく一部の最先端モデルだけだったと発見した[6]。Chroma の『Context Rot』レポートはさらに踏み込んで、入力長が増えるにつれ、単純なタスクであっても信頼性が低下し、特に曖昧性やノイズが導入されると顕著になると述べている[7]。</p>\n<p>これは多くのチームが苦い思いをして学ぶ部分だ。</p>\n<p>大きなウィンドウは選択の必要性を排除しない。それらは、悪い選択のコストを最初は目立たなくし、後になってより痛みを伴うものにする。</p>\n<p>長いプロンプトは、少なくとも4つの異なる方法で失敗しうる：</p>\n<ol>\n<li><strong>Context poisoning</strong>: 悪い事実、hallucination、または古い結果が持ち越される。</li>\n<li><strong>Context distraction</strong>: 関連性はあるが重要ではない詳細が多すぎて、核心的なタスクが圧倒される。</li>\n<li><strong>Context confusion</strong>: 異なるコンテキストの断片が互いに矛盾する。</li>\n<li><strong>Context waste</strong>: 有用なトークンが、冗長または低価値な素材の下に埋もれる。</li>\n</ol>\n<p>だからこそ、context engineering はトークンの最大化ではない。コンテキストウィンドウ内の<strong>signal density</strong>を最大化することなのだ。</p>\n<h2>Retrieval から Navigation へ</h2>\n<p>ここに、最近の最も優れたアイデアの一つが登場する。</p>\n<p>Jason Liu は、古典的な chunk-based RAG の次のステップは、「最も類似したパッセージ」だけを考えるのをやめ、<strong>search space の形状</strong>を考え始めることだと主張した[10]。彼の枠組みは特に有用で、多くのチームがすでに進んでいる進化を描き出しているからだ：</p>\n<ol>\n<li>Minimal chunks</li>\n<li>Chunks with source metadata</li>\n<li>Multimodal および structured content のより良い処理</li>\n<li>Facets と query refinement</li>\n</ol>\n<p>最初の3つは、retrieval されるものの改善だ。</p>\n<p>4番目はより興味深い。それは、エージェントが<strong>コーパス自体について学ぶもの</strong>を改善する。</p>\n<p>Facets はモデルに周辺視のようなものを与える。上位の数チャンクだけを返すのではなく、システムは集約されたメタデータも返すことができる：</p>\n<ul>\n<li>どのドキュメントタイプが結果セットを支配しているか</li>\n<li>どのチームやオーナーが最も頻繁に現れるか</li>\n<li>どの日付が一緒にクラスタリングされるか</li>\n<li>どのカテゴリが存在するが上位結果では過小評価されているか</li>\n</ul>\n<p>これは重要だ。なぜなら、similarity search は検証が最も重要なものではなく、マッチングが最も容易なものに偏るからだ[10]。Retrieval system は、よく文書化された解決済みのインシデントを過剰に浮上させ、希薄で未だ未解決のインシデントを過小にする可能性がある。法的検索では、署名済みの契約を過剰に浮上させ、実際に注意を必要とする未署名のものを隠してしまう可能性がある。Facets はエージェントに、「何がマッチしたか」だけでなく、「近くに何が存在するか」を見るのを助ける。</p>\n<p>これは大きな概念的転換だ。</p>\n<p>RAG は主に retrieval についてだった。</p>\n<p>Context engineering はますます<strong>navigation</strong>についてになっている。</p>\n<h2>Context Engineering の6つの仕事</h2>\n<p>Context engineering を具体化する最も簡単な方法は、それが実行する実際の仕事に分解することだ。</p>\n<h3>1. Selection</h3>\n<p>最初の仕事は、何がウィンドウに入るに値するかを決定することだ。</p>\n<p>これには retrieval、ranking、filtering、source choice、freshness check が含まれる。当たり前のように聞こえるが、ここで大量の品質が勝ち取られたり失われたりする。BRIGHT のようなベンチマークは、現実的な retrieval は表面的なセマンティックマッチングが示唆するよりもはるかに難しいことを示している[11]。Retrieval quality が弱い場合、下流でのプロンプトの磨き上げをどれだけ行っても、結果を完全に救うことはできない。</p>\n<p>Selection は「関連するチャンクを見つける」だけではない。それは：</p>\n<ul>\n<li>正しいソースを選ぶ</li>\n<li>正しい粒度を選ぶ</li>\n<li>正しい量を選ぶ</li>\n<li>正しい順序を選ぶ</li>\n</ul>\n<p>優れたシステムは、単純なシステムよりも少ないものを retrieve するが、より意図的に retrieve する。</p>\n<h3>2. Structure</h3>\n<p>2番目の仕事は、選択されたコンテキストがどのように表現されるかを決定することだ。</p>\n<p>同じ情報でも、フォーマット次第で役に立つことも無用なこともある。Anthropic の tool-use guidance はこれについて明確に述べている。tool descriptions と interfaces はモデルの振る舞いを強く形作る[9]。Long-context prompting guidance も、XML tagging、source labeling、明確に分離されたドキュメントセクションについて同様の推奨を行っている[12]。</p>\n<p>実際には、structure は以下を意味する：</p>\n<ul>\n<li>ソースにラベルを付ける</li>\n<li>指示とデータを分離する</li>\n<li>複雑なドキュメントを一貫したマークアップで包む</li>\n<li>重要な場合はテーブルをテーブルとして保持する</li>\n<li>証拠とともに citations とメタデータを返す</li>\n</ul>\n<p>短く、適切にラベル付けされた結果は、巨大な JSON blob をしばしば凌駕する。</p>\n<h3>3. Compression</h3>\n<p>3番目の仕事は、重要なものを破壊せずにコンテキストを削減することだ。</p>\n<p>ここが、多くのエージェントシステムが大幅に改善するか、大幅に悪化するかの分かれ目だ。</p>\n<p>Compression は以下を意味しうる：</p>\n<ul>\n<li>以前のターンを要約する</li>\n<li>古い履歴をトリミングする</li>\n<li>直近の数ユーザーターンだけを逐語的に保持する</li>\n<li>長いスレッドから持続的な事実を抽出する</li>\n<li>コストとレイテンシを削減するために安定したプレフィックスをキャッシュする</li>\n</ul>\n<p>OpenAI の prompt caching ドキュメントは、プロンプトの順序が認知的な面だけでなく経済的な面でも重要であることを示している。静的な共有プレフィックスは先頭に置かれたときに安価で高速になり、cache hits は正確なプレフィックスの再利用に依存するからだ[13]。OpenAI のより新しい Responses API における compaction の取り組みは、長時間稼働するエージェントの履歴を、ウィンドウが一杯になる前によりトークン効率の良い表現に圧縮すべきものとして扱うことで、この考えをさらに推し進めている[14]。</p>\n<p>Compression はオプションではない。唯一の問いは、それを意図的に行うか、コンテキストウィンドウが独自に劣化するのを任せるかだけだ。</p>\n<h3>4. Memory</h3>\n<p>4番目の仕事は、現在のターンを超えて何が持続すべきかを決定することだ。</p>\n<p>ここで多くのチームが同じ間違いを犯す。memory を transcript retention と混同するのだ。</p>\n<p>しかし、良い memory は「全てを永遠に保持する」ことではない。LongMemEval は long-term memory を3段階の問題として捉える。indexing、retrieval、reading だ[4]。これが正しい考え方だ。Memory system は、モデルが完全な過去に溺れるのではなく、適切な瞬間に適切な過去の事実を回復するのを助けるべきだ。</p>\n<p>これは有用な区別をもたらす：</p>\n<ul>\n<li><strong>Working memory</strong>: 現在のタスクに必要な短期間のコンテキスト</li>\n<li><strong>Reference memory</strong>: 後で再読み込み可能な外部化された事実、要約、ノート、またはアーティファクト</li>\n</ul>\n<p>全てが working memory に留まれば、モデルは気を散らされる。全てが追い出されれば、モデルは連続性を失う。</p>\n<p>Context engineering は、それぞれの層に何が属するかを決定する。</p>\n<h3>5. Tool and Interface Design</h3>\n<p>5番目の仕事は、ツールをモデルにとって判読可能にすることだ。</p>\n<p>これはこの学問の過小評価された部分だ。Tool surface は単なるソフトウェアAPI設計ではない。それは context design でもある。</p>\n<p>モデルは以下を理解する必要がある：</p>\n<ul>\n<li>ツールが何をするか</li>\n<li>いつそれを使うか</li>\n<li>各パラメータが何を意味するか</li>\n<li>出力が何を意味するか</li>\n<li>結果を見た後に次に何をすべきか</li>\n</ul>\n<p>だからこそ、tool descriptions はこれほど重要なのだ[9]。また、Jason Liu が tool results を強調しているのも重要だ[10]。ツールの出力は、単に現在のクエリに答えるだけではない。それはエージェントに、次のクエリについてどう考えるかを教えるのだ。</p>\n<p>Tool surface が MCP のようなプロトコルによって標準化されると、これはさらに重要になる。MCP はツール、リソース、プロンプトをLLMアプリケーションに接続することを容易にするが、どの情報を提示すべきか、どのようにフィルタリングすべきか、次のモデル呼び出しにどれだけ注入すべきかを決定しない[15]。プロトコルは配管だ。Context engineering は依然として職人技なのだ。</p>\n<h3>6. Isolation and Orchestration</h3>\n<p>6番目の仕事は、いつコンテキストを共有すべきでないかを決定することだ。</p>\n<p>これは、おもちゃのデモと本番のエージェントの間で最も大きな違いの一つだ。</p>\n<p>時々、正しい答えはより大きな共有プロンプトではない。分離されたスコープを持つ複数の小さなプロンプトなのだ。</p>\n<p>Anthropic の multi-agent research system は強力な例だ[16]。彼らのサブエージェントは、別々のコンテキストウィンドウで並列に実行され、これにより問題の異なる分岐を探索できる。すべての中間的な詳細で互いを汚染することなく。LangChain は「isolate」の下で同様のパターンを説明している。エージェントの信頼性を向上させる最良の方法は、コンテキストを蓄積するのではなく分割することであると[17]。</p>\n<p>これは重要だ。なぜなら、共有コンテキストには隠れたコストがある。それは path dependence を生み出す。単一の悪い分岐が次のステップに、そしてその次に、そしてその次に影響を与えうる。</p>\n<p>Isolation は blast radius を制限する方法だ。</p>\n<h2>2026年に何が変わったか</h2>\n<p>2025年には、context engineering は主に人々がすでに感じていた問題に対する有用な名前だった。2026年には、それはアーキテクチャとして固まり始めている。</p>\n<p>最初の大きな変化は、ビルダーが durable state を生のコンテキストウィンドウ<strong>の外</strong>に移動させていることだ。Anthropic の context editing と memory tool は、ワーキングウィンドウに留まるものと、セッションを超えて持続すべきものを明示的に分離する[18]。OpenAI の2026年1月の personalization に関する cookbook は、異なる形で同じ動きを行っている。実行を超えて持続し、各実行の開始時に意図的にワーキングメモリに注入される構造化された state objects だ[19]。OpenAI の Responses API は、ネイティブな compaction でこれをさらに一歩推し進め、長時間稼働するエージェントループが、すべてのチームがゼロからカスタムの summarization サブシステムを構築する必要がないようにしている[14]。</p>\n<p>Anthropic の Managed Agents は、根底にあるパターンを異常に明確にしている。<strong>セッションはモデルのコンテキストウィンドウではない</strong>のだ[20]。これは2026年の重要なアイデアだ。ウィンドウは一時的なワーキングメモリだ。セッションログは durable object だ。Harness は、その durable context を次のモデル呼び出しにどのようにスライス、圧縮、再水和（rehydrate）するかを決定する。</p>\n<p>2番目の変化は、retrieval がより<strong>just in time</strong>になり、よりインターフェイスネイティブになっていることだ。あらゆる可能性のある関連トークンを前もって読み込むのではなく、チームはエージェントに、彼らがすでに操作方法を知っている retrieval surfaces を与えている。Mintlify の ChromaFs は良い例だ。ドキュメントの retrieval のために完全なサンドボックスを起動するのではなく、<code>ls</code>、<code>cat</code>、<code>grep</code> でナビゲート可能な仮想ファイルシステムとしてドキュメントを提示し、p90 のセッション作成を約46秒から約100ミリ秒に短縮した[21]。Turso の AgentFS は、同じ直感を一般的なエージェント実行に向けて推し進める。copy-on-write のファイルシステム抽象化で、ポータブルな単一ファイルストレージと組み込みの監査機能を備えている[22]。</p>\n<p>3番目の変化は、<strong>context graphs</strong>が比喩ではなく実装の方向性になりつつあることだ。Foundation Capital の thesis はこの言葉を可視化したが、より強い主張はアーキテクチャ的なものだ。エージェントが実行パスに位置するとき、彼らは最終出力を発するだけでなく、decision traces を durable artifacts として捉えることができる[26][27]。Graphiti のようなオープンソースシステムや Zep のような商用プラットフォームは、これを validity windows、provenance episodes、semantics、keywords、graph structure を横断する hybrid retrieval を持つ temporal context graphs として実用化している[23]。TrustGraph は関連するアプローチを取り、コンテキストをバージョン管理されたアーティファクトとして扱う。graph、embeddings、evidence、policies を、ビルド出力のように昇格またはロールバック可能なポータブルな「context cores」にバンドルするのだ[24][25]。</p>\n<p>4番目の変化は、context engineering がプラットフォームのブログだけでなく、実際のソフトウェア実践において可視化されつつあることだ。2026年のオープンソースソフトウェアにおける context engineering に関する MSR 論文は466のリポジトリを調査し、<code>AGENTS.md</code> のようなAIコンテキストファイルが広がっているが、まだ安定したコンテンツ構造はないと発見した[28]。これは重要だ。なぜなら、それは理論から運用アーティファクトへの移行を示すからだ。コンテキストはもはや実行時に推論されるものだけではない。それはソフトウェアライフサイクルの一部として、作成され、バージョン管理され、レビューされ、採掘されている。</p>\n<p>2026年のメンタルモデルを一枚の図で表したいなら、こうなる：</p>\n<pre><code class=\"language-mermaid\">flowchart LR\n    E[\"Session log / events\"] --> A[\"Context assembler\"]\n    F[\"Files, docs, and tools\"] --> A\n    G[\"Context graph / memory\"] --> A\n    P[\"Policies and AGENTS.md\"] --> A\n\n    A --> W[\"Working context window\"]\n    W --> X[\"Agent action\"]\n\n    X --> E\n    X --> G\n</code></pre>\n<p>これは「prompt + vector search」とは非常に異なるアーキテクチャだ。</p>\n<h2>Context Graphs が実際に適合する場所</h2>\n<p>この議論が混乱する理由の一つは、人々が<strong>context engineering</strong>と<strong>context graph</strong>を、同じ意味のように使うからだ。そうではない。</p>\n<p>Context engineering はより広い学問だ。次のコンテキストウィンドウに何が入るか、何が外に留まるか、何が圧縮されるか、何がオンデマンドで retrieve されるかを決定する作業だ。</p>\n<p>Context graph は、そのより大きなシステム内の一つの可能な long-term memory substrate だ。</p>\n<p>この区別は重要だ。なぜなら、すべての有用なエージェントが context graph を必要とするわけではないからだ。ほぼ静的なコンテンツ上のドキュメントアシスタントは、良い retrieval、tool design、compaction を必要とするかもしれないが、graph は必要としない。コーディングエージェントは、リポジトリの指示、durable session log、ファイルシステムの抽象化で、驚くほど遠くまで行けるかもしれない[20][21][22][28]。</p>\n<p>Context graphs が説得力を持つのは、問題が4つの特性を持つときだ：</p>\n<ul>\n<li><strong>Temporal truth が重要だ。</strong>今何が真かだけでなく、意思決定時に何が真だったかを知る必要がある[23]。</li>\n<li><strong>Provenance が重要だ。</strong>事実を、それを生み出したエピソード、ドキュメント、またはインタラクションに遡って追跡する必要がある[23][24]。</li>\n<li><strong>Precedent が重要だ。</strong>タスクは、以前に類似のケースがどのように処理されたかに依存し、例外や承認を含む[26][27]。</li>\n<li><strong>Cross-entity reasoning が重要だ。</strong>有用なメモリは平坦なノートではなく、人、ポリシー、インシデント、アカウント、チケット、結果のネットワークだ[23][25]。</li>\n</ul>\n<p>だからこそ、私の見解では、context graph の最良の定義は「AI のためのグラフデータベース」ではない。それは<strong>precedent の durable representation</strong>なのだ。</p>\n<p>だからこそ、decision traces はこれほど重要なのだ。Foundation Capital の枠組みはここで有用だ。ルールはエージェントに、一般的に何が起こるべきかを教える。decision traces は、特定のケースで、実際の制約の下で、実際の例外と共に何が起こったかを教える[26]。これらの traces がエンティティと時間を横断してリンクされると、一般的なメモリよりもはるかに価値のあるものが得られる。検索可能な判断だ。</p>\n<h2>2026年に私がどう構築するか</h2>\n<p>もし今日、本気の context-engineering stack を構築するなら、graph から始めない。インターフェースと promotion rules から始める。</p>\n<h3>1. まず durable session layer を構築する</h3>\n<p>すべてのアクション、ツールの結果、観察、重要な中間アーティファクトは、append-only のセッションログまたはイベントストアに格納されるべきだ。これがあなたの回復可能なコンテキストオブジェクトだ[14][20]。</p>\n<p>アクティブなコンテキストウィンドウを source of truth と混同しないこと。</p>\n<p>ウィンドウは推論のためのものだ。セッションは回復、リプレイ、デバッグ、選択的な再水和のためのものだ。</p>\n<h3>2. Context assembler をプロダクトサーフェスとして扱う</h3>\n<p>Assembler は明示的に管理すべきだ：</p>\n<ul>\n<li>token budgets</li>\n<li>source priority</li>\n<li>freshness</li>\n<li>compaction thresholds</li>\n<li>history trimming</li>\n<li>citation formatting</li>\n<li>cache-aware ordering</li>\n</ul>\n<p>これはモデルが<em>今</em>何を見るかを決定する層だ。それは観測可能で、テスト可能で、変更が安価であるべきだ[18][19][14]。</p>\n<h3>3. Eager stuffing より just-in-time retrieval を優先する</h3>\n<p>まずモデルに軽量なハンドルを与える。ファイルパス、オブジェクトID、URL、クエリテンプレート、チケットID、インシデントIDだ。そして、必要なときだけ詳細を引き出させる[9][18][21]。</p>\n<p>ここが、ファイルシステム、MCP ツール、search API、structured queries が、巨大な top-K dump よりも価値を持つ場所だ。</p>\n<h3>4. 高価値な state だけを long-term memory に昇格させる</h3>\n<p>すべてがメモリになるべきではない。</p>\n<p>私は4つのクラスのアーティファクトを昇格させる：</p>\n<ul>\n<li>安定したユーザーまたはアカウントの preferences</li>\n<li>provenance を持つ durable facts</li>\n<li>重要な中間の summaries</li>\n<li>decision traces と exceptions</li>\n</ul>\n<p>その他の全ては、昇格に値すると証明されるまでセッションログに留まるべきだ。</p>\n<h3>5. Context graph を昇格したメモリ層として構築する</h3>\n<p>これは多くのチームが逆にしている部分だ。</p>\n<p>Graph は、生のトランスクリプトをグラフ形式にしたものであるべきではない。それはセッションの上にあり、リアルタイムのアセンブリの下にある、キュレーションされた層であるべきだ：</p>\n<ul>\n<li>entities</li>\n<li>relationships</li>\n<li>time validity</li>\n<li>source episodes</li>\n<li>approvals</li>\n<li>exceptions</li>\n<li>outcomes</li>\n</ul>\n<p>Promotion のステップを飛ばせば、graph は情報のダンピンググラウンドになる。Promotion を正しく行えば、graph は組織が実際に推論する方法のメモリになる[23][26]。</p>\n<h3>6. Context をコードのようにパッケージングする</h3>\n<p>2026年までに、最も有望なアイデアの一つは、コンテキストをバージョン管理されたアーティファクトとして扱うことだ。ソフトウェアプロジェクトでは、これは <code>AGENTS.md</code> やその他のリポジトリ固有のコンテキストファイルとして現れる[28]。Graph-native システムでは、これは context cores として現れる。オントロジー、グラフ構造、embeddings、provenance、retrieval policy のポータブルなバンドルだ[24][25]。</p>\n<p>これは重要だ。なぜなら、コンテキストの変更には、コードの変更と同じ運用規律が必要だからだ：</p>\n<ul>\n<li>review</li>\n<li>versioning</li>\n<li>rollback</li>\n<li>environment promotion</li>\n<li>evaluation</li>\n</ul>\n<p>コンテキストがアーティファクトになれば、それは統治可能になる。</p>\n<h3>7. Observability と intelligence を分離する</h3>\n<p>両方が必要だ：</p>\n<ul>\n<li><strong>observability of the agent run</strong></li>\n<li><strong>observability of the context system</strong></li>\n</ul>\n<p>これらは同じものではない。</p>\n<p>私は知りたい：</p>\n<ul>\n<li>モデルが何を見たか</li>\n<li>何を見なかったか</li>\n<li>何が compact されたか</li>\n<li>何が just in time で retrieve されたか</li>\n<li>何がメモリに promoted されたか</li>\n<li>どの graph neighborhood が走査されたか</li>\n<li>どの precedent が実際にアクションに影響を与えたか</li>\n</ul>\n<p>これらの問いに答えられなければ、あなたは依然として暗闇の中でプロンプトをデバッグしているのだ。</p>\n<h2>実用的な成熟度モデル</h2>\n<p>自分のシステムがどこに位置しているかを評価しようとしているなら、この成熟度モデルは抽象的な定義よりも有用だ。</p>\n<h3>Level 0: Prompt-Only</h3>\n<p>システムプロンプト、ユーザーメッセージ、そしておそらくいくつかの例がある。</p>\n<p>これは狭いタスクに対して驚くほど良く機能する。しかし、タスクが新鮮な知識、永続性、またはツールを必要とするとき、すぐに破綻する。</p>\n<h3>Level 1: Retrieval-Enhanced</h3>\n<p>実行時にドキュメントを追加する。</p>\n<p>多くのチームがここで止まる。そして、多くのチームが単純な chunking、ranking、context bloat の限界を見始めるのもここだ。</p>\n<h3>Level 2: Agent-Aware</h3>\n<p>あなたは今、history、tool results、memory、formatting を意図的に管理する。</p>\n<p>これは「context engineering」が有用な言葉となる最初のレベルだ。なぜなら、システムはもはやプロンプトに retrieval を足しただけではなく、複数の形態のコンテキストを動的に組み立てているからだ。</p>\n<h3>Level 3: Adaptive</h3>\n<p>システムはタスクに基づいてコンテキストの構築方法を変える。</p>\n<p>それは以下を行うかもしれない：</p>\n<ul>\n<li>ソースの中から選ぶ</li>\n<li>古い履歴を圧縮する</li>\n<li>メモリを選択的に再読み込みする</li>\n<li>作業を専門のツールにルーティングする</li>\n<li>サブ問題を別々のコンテキストに分離する</li>\n</ul>\n<p>この時点で、コンテキスト構築はアプリケーションのコアロジックの一部だ。</p>\n<h3>Level 4: Context-Native</h3>\n<p>システムはコンテキストをファーストクラスのエンジニアリングサーフェスとして扱う。</p>\n<p>それは以下を持つ：</p>\n<ul>\n<li>explicit context budgets</li>\n<li>retrieval and generation evals</li>\n<li>metadata and facet-aware navigation</li>\n<li>memory policies</li>\n<li>observability around failure modes</li>\n<li>cost-aware prompt assembly</li>\n</ul>\n<p>これが最も強力な本番システムが向かっている場所だ。</p>\n<h2>実践における優れた Context Engineering の姿</h2>\n<p>この学問全体をチェックリストに減らさなければならないなら、こうなる：</p>\n<ol>\n<li>プロンプトではなくタスクから始める。まず成功がどのように見えるかを定義する。</li>\n<li>モデルが必要とするかもしれないコンテキストソースを列挙する。Instructions、docs、tools、memory、state、policies。</li>\n<li>working memory と reference memory を分離する。すべてがアクティブなウィンドウに存在すべきではない。</li>\n<li>意図を持って retrieve する。より多くのチャンクは、より良い recall と同じではない。</li>\n<li>モデルが素早く解析できるようにコンテキストを構造化する。Labels、sources、tables、boundaries が重要だ。</li>\n<li>ツールがプロンプトの一部であるかのように設計する。なぜなら、そうだからだ。</li>\n<li>積極的にトリミングする。人間に再読を求めないなら、モデルに再読を強制しない。</li>\n<li>retrieval と generation を別々に測定する。そうでなければ、間違った問題を診断することになる。</li>\n<li>タスクが分岐するか並列実行できるときは、分離されたコンテキストを使う。</li>\n<li>durable facts と decision traces を意図的に昇格させる。すべてのトランスクリプトが long-term memory に属するわけではない。</li>\n<li>重要なコンテキストをコードのようにパッケージングする。Instructions、policies、graph artifacts はバージョン管理されるべきだ。</li>\n<li>コンテキストのバグをソフトウェアのバグのように扱う。それらは観測可能で、再現可能で、修正可能であるべきだ。</li>\n</ol>\n<p>これらのどれも華やかなものではない。だからこそ重要なのだ。</p>\n<p>Prompt engineering が人気になったのは、それが近道のように聞こえたからだ。</p>\n<p>Context engineering が重要なのは、それが実際の作業を記述しているからだ。</p>\n<h2>本当の教訓</h2>\n<p>AI における重心は移動している。</p>\n<p>かつてのフロンティアの問いはこうだった。<strong>モデルはどれだけ賢いか？</strong></p>\n<p>応用上の問いはますますこうなっている。<strong>モデルが行動する前に、何を見ることができるか？</strong></p>\n<p>これは異なるエンジニアリング問題だ。単一のプロンプトよりもシステム設計についての問題だ。言い回しよりも情報フローについての問題だ。One-shot の出力品質よりも、エージェントが時間をかけて信頼性を保てるかどうかについての問題だ。</p>\n<p>だからこそ、context engineering は学問として成長し続けるのだ。モデルが良くなるほど、残りの失敗はコンテキストの失敗のように見える。Missing state。Wrong tool。Bad retrieval。Bloated history。Poor formatting。Conflicting evidence。Weak memory。Unbounded loops。</p>\n<p>皮肉なことに、これはAIシステムを、より古典的なソフトウェアのように感じさせる。私たちはパイプライン、インターフェース、ステートマシン、メモリ階層、キャッシュ、observability layers を構築する作業に戻っている。新しさは、これらのすべての部品が、確率的推論エンジンの奉仕のために存在するということだ。</p>\n<p>名前は新しいかもしれない。方向性はそうではない。</p>\n<p>信頼性の高いAIシステムは、コンテキストをファーストクラスのプロダクトサーフェスとして扱うチームによって構築される。</p>\n<p>他の全員は、モデルを不安定だと言い続けるだろう。</p>\n<p><strong>References:</strong></p>\n<p>[1] <a href=\"https://simonwillison.net/2025/Jun/27/context-engineering/\">Simon Willison. (2025, June 27). <em>Context engineering</em>.</a></p>\n<p>[2] <a href=\"https://arxiv.org/abs/2005.11401\">Lewis, P. et al. (2020). <em>Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks</em>.</a></p>\n<p>[3] <a href=\"https://arxiv.org/abs/2210.03629\">Yao, S. et al. (2023). <em>ReAct: Synergizing Reasoning and Acting in Language Models</em>.</a></p>\n<p>[4] <a href=\"https://arxiv.org/abs/2410.10813\">Wu, D. et al. (2025). <em>LongMemEval: Benchmarking Chat Assistants on Long-Term Interactive Memory</em>.</a></p>\n<p>[5] <a href=\"https://arxiv.org/abs/2307.03172\">Liu, N. F. et al. (2023). <em>Lost in the Middle: How Language Models Use Long Contexts</em>.</a></p>\n<p>[6] <a href=\"https://arxiv.org/abs/2411.03538\">Leng, Q. et al. (2024). <em>Long Context RAG Performance of Large Language Models</em>.</a></p>\n<p>[7] <a href=\"https://www.trychroma.com/research/context-rot\">Hong, K., Troynikov, A., and Huber, J. (2025, July 14). <em>Context Rot: How Increasing Input Tokens Impacts LLM Performance</em>.</a></p>\n<p>[8] <a href=\"https://blog.langchain.com/the-rise-of-context-engineering\">LangChain. (2025, June 23). <em>The rise of \"context engineering\"</em>.</a></p>\n<p>[9] <a href=\"https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use\">Anthropic. <em>How to implement tool use</em>.</a></p>\n<p>[10] <a href=\"https://jxnl.co/writing/2025/08/27/facets-context-engineering/\">Jason Liu. (2025, August 27). <em>Beyond Chunks: Why Context Engineering is the Future of RAG</em>.</a></p>\n<p>[11] <a href=\"https://arxiv.org/abs/2407.12883\">Su, H. et al. (2025). <em>BRIGHT: A Realistic and Challenging Benchmark for Reasoning-Intensive Retrieval</em>.</a></p>\n<p>[12] <a href=\"https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips\">Anthropic. <em>Long context prompting tips</em>.</a></p>\n<p>[13] <a href=\"https://platform.openai.com/docs/guides/prompt-caching\">OpenAI. <em>Prompt caching</em>.</a></p>\n<p>[14] <a href=\"https://openai.com/index/equip-responses-api-computer-environment\">OpenAI. (2026, March 19). <em>From model to agent: Equipping the Responses API with a computer environment</em>.</a></p>\n<p>[15] <a href=\"https://modelcontextprotocol.io/\">Model Context Protocol. <em>What is the Model Context Protocol (MCP)?</em></a></p>\n<p>[16] <a href=\"https://www.anthropic.com/engineering/built-multi-agent-research-system\">Anthropic. (2025, June 13). <em>How we built our multi-agent research system</em>.</a></p>\n<p>[17] <a href=\"https://blog.langchain.com/context-engineering-for-agents/\">LangChain. (2025, July 2). <em>Context Engineering</em>.</a></p>\n<p>[18] <a href=\"https://claude.com/blog/context-management\">Anthropic. (2025, September 29). <em>Managing context on the Claude Developer Platform</em>.</a></p>\n<p>[19] <a href=\"https://developers.openai.com/cookbook/examples/agents_sdk/context_personalization\">Okcular, E. (2026, January 5). <em>Context Engineering for Personalization - State Management with Long-Term Memory Notes using OpenAI Agents SDK</em>.</a></p>\n<p>[20] <a href=\"https://www.anthropic.com/engineering/managed-agents\">Anthropic. <em>Scaling Managed Agents: Decoupling the brain from the hands</em>.</a></p>\n<p>[21] <a href=\"https://www.mintlify.com/blog/how-we-built-a-virtual-filesystem-for-our-assistant\">Mintlify. (2026, March 24). <em>How we built a virtual filesystem for our Assistant</em>.</a></p>\n<p>[22] <a href=\"https://docs.turso.tech/agentfs/introduction\">Turso. <em>AgentFS</em>.</a></p>\n<p>[23] <a href=\"https://github.com/getzep/graphiti\">Zep. <em>Graphiti: Build Real-Time Knowledge Graphs for AI Agents</em>.</a></p>\n<p>[24] <a href=\"https://github.com/trustgraph-ai/trustgraph\">TrustGraph. <em>The context development platform</em>.</a></p>\n<p>[25] <a href=\"https://docs.trustgraph.ai/guides/context-cores/\">TrustGraph. <em>Working with Context Cores</em>.</a></p>\n<p>[26] <a href=\"https://foundationcapital.com/ideas/context-graphs-ais-trillion-dollar-opportunity\">Gupta, J., and Garg, A. (2025, December 22). <em>AI's trillion-dollar opportunity: Context graphs</em>.</a></p>\n<p>[27] <a href=\"https://foundationcapital.com/ideas/why-context-graphs-are-the-missing-layer-for-ai\">Garg, A. (2026, January 16). <em>Why context graphs are the missing layer for AI</em>.</a></p>\n<p>[28] <a href=\"https://arxiv.org/abs/2510.21413\">Mohsenimofidi, S., Galster, M., Treude, C., and Baltes, S. (2026). <em>Context Engineering for AI Agents in Open-Source Software</em>.</a></p>",
  "source_hash": "sha256:3f3faa38dd809a893509e9f3c2de70a7ec3778cc6cef2fa58967b63bd169d7d9",
  "model": "moonshotai/kimi-k2.6",
  "generated_at": "2026-08-07T07:53:33.900442+00:00"
}