第10章 — 長期タスクの記憶

公開日: 2026-04-08 最終更新日: 2026-06-12 バージョン: 1

第10章 — 長期タスクの記憶

LLM Primer IV: MCPで設計するAI認知 のウォークスルー第10回です。問いが「どれだけ収まるか」から「何を覚え、何を忘れるか」へ変わるとき、今日出荷されている7桁トークンのコンテキスト・ウィンドウは、壁を取り除くのではなく1時間先送りするだけ、という話です。


なぜこの章があるのか

30秒走るエージェントは必要なものをすべてプロンプトに運べます。3時間走るエージェントはそうできません。1時間目にした仕事は3時間目の仕事と一緒には収まらず、何を覚え何を忘れるかが中心的な工学問題になります。コンテキスト・ウィンドウはもう「管理される予算」ではなく、絶えず深いストアに対して書き直される「作業面」です。この章は記憶のアーキテクチャ — 直近の推論のための短期記憶、セッションをまたいだ永続化のための長期記憶、両者をつなぐ圧縮と外部化の技術 — についてです。

ひとことで言うと: 短期記憶はモデルの記憶ではなく エージェント・ループ の記憶で、テキストとして物質化され各呼び出しで注入される — つまり、モデルが何を覚えるかについての判断は、すべてループが明示的にコードで行うもので、デバッグすべき隠れた状態はない。

10.1 短期記憶: ウィンドウ、スクラッチパッド、ReAct

短期記憶は、現在のコンテキスト・ウィンドウに収まり、外部参照なしで使えるものすべてです。最も単純なポリシーは スライディング・ウィンドウ: システムプロンプトとツール記述を頭に保ち、直近Nターンを末尾に保ち、間は捨てる。関連するコンテキストが直近にあるあいだは機能し — それは短い会話で真、ほぼすべての場合で偽です。失敗モードはクリーン — ターンが捨てられたら、なくなる — そしてエージェントは、ウィンドウが最初にいっぱいになる予測可能な地点で、ユーザーの指示を目に見えて忘れます。

次の層は スクラッチパッド、モデルが意図的に書き込むコンテキスト中の構造化された領域です。内部スクラッチパッドはループ内で中間推論を運び、外部スクラッチパッドはツール呼び出しで保管バッファに書き、後続のコンテキストが注入します。スクラッチパッドに正典の形を与えたパターンが ReAct — Reason and Act — で、2022年にYaoらが導入しました。ループは「思考、行動、観察」を交互に並べ、モデルが「答えにたどり着いた」と判断するまで続けます。この構造は推論をモデルが参照し直せる明示的なテキスト的成果物へ外在化し、エージェント・ループにメモリ操作の見える足場 — 思考は要約でき、行動は重複排除でき、観察は圧縮できる — を与えます。ReActや近縁なしに作られたエージェントは、推論と行動を絡めて状態が不透明になる傾向があります。

実用的な補完は Reflexion で、明示的な反省ステップ — モデルが直近の行動を評価し、次の試みに向けて批評をスクラッチパッドへ書く — を加えます。最近のエージェント・フレームワークは両者を1つの設定可能なループに混ぜ、毎サイクルではなく失敗信号で反省を引きます。

10.2 長期記憶: エピソードと意味

短期記憶が終わるところから長期記憶が始まります。認知科学の エピソード(特定の出来事)と 意味(一般的な事実)の区別は、エージェントにも有用と分かりました。エピソード記憶は特定の過去の対話の記録、意味記憶は生き残った蒸留知識 — このユーザーはメトリック単位を好む、このプロジェクトのデプロイ・コマンドは make ship、このAPIは成功に見えるエラーを返す、など。

エピソード記憶は、現在の実務ではほぼ常にベクトルDBです。過去の対話は埋め込まれ、メタデータと共に保存され、クエリ時に意味的類似度で取得されます。パターンはRAGをエージェント自身の過去 — 文書コーパスではなく — に適用したもので、工学 — チャンク化、埋め込み選択、取得評価 — は第III巻が扱うものと大きく同じです。

意味記憶は標準化が進んでいません。支配的な基盤は2つ — 構造化されたkey-valueストアとナレッジグラフ。Key-value は単純、速く、検査しやすい。グラフは「ユーザーが現在取り組んでいるプロジェクトのデプロイ・コマンドは何か」のようなマルチホップ・クエリを支えますが、保守とクエリ言語を要します。本番エージェントの多くは key-value から始め、結合が本当に要るときだけグラフへ卒業します。多くは卒業しません。

更新ポリシーが、多くのチームが躓く場所です。ひとつの会話から取り出された事実は、一般には真とは限りません。すべての主張を意味記憶に昇格させる素朴なポリシーは、矛盾する破損したストアを生みます。現れた規律は、文脈で主張に重みを付け、事実をタイムスタンプと出所でバージョン化し、利害の高いドメインでは明示的なユーザー確認で更新をゲートすること。MemGPT といった名で呼ばれるパターンは、明示的なメモリ管理ツールをエージェントに与え、モデル自身が何を保存・取得・忘却するかを決めます。勝ち筋は、ルールベースの抽出では気づけない「どの記憶が重要か」をモデルが知っていること。コストはモデルも間違えることで、モデルが管理する記憶ストアは暴走的な成長へのガードレールが要ります。

10.3 コンテキスト限界を生き延びる: 圧縮と構造化メモ

エピソード記憶と意味記憶があっても、エージェントの現在のセッションはやはりウィンドウに当たります。最も一般的な処方は 要約ベースの圧縮: コンテキストがウィンドウの60〜80%に近づくと、バックグラウンドのステップが古いターンを要約して置き換える。失敗モードは 要約のドリフト(要旨は生き残るが、後で重要だった具体的事実が失われる)と 再帰的な平滑化(各パスが要約を要約し、累積損失が大きい)。処方は、命名された実体・決定・未解決問題を保つ構造化された要約プロンプトと、可能なら以前の要約ではなく原文から要約すること。

ツール結果のクリア は、数ターンを挟んだあとツール返却の大部分を退避させ、「usersテーブルを問い合わせ、47行返却、user 12345を発見」のような短いメモに置き換えます。構造化メモ取り は、エージェントに現在の目標、完了ステップ、残ステップ、未解決問題を捉える権威ある notes ファイルの維持を求めます — トランスクリプトではなく真実の源泉として扱う。外部化 は、生成された成果物をファイルシステムやDBへ移し、コンテキストには参照だけを保ちます。統合原理は、コンテキスト・ウィンドウは 能動的 な作業のためで、アーカイブ のためではないということ。大きなウィンドウは外部ストレージをより重要に します — 重要でなくする方向ではなく — なぜなら、より長いセッションを可能にし、外部化アーキテクチャがうまく働くか失敗するかの時間が増えるからです。

覚えておきたいこと: 長期エージェントは、ただの「より長い短期エージェント」ではありません。違う工学問題で、違う失敗モードがあり — 研究者、エンジニアリング、運用、バックグラウンドの各パターンはプリミティブの組み方が違います。記憶状態を人が読める形で検査可能にし、読み書きすべてをログし、セッション再開と高メモリ負荷をエッジケースではなく日常ケースとしてテストする。

この章を踏まえて

第9章と第10章は、第IV部を2つの補完的なメンタルモデルで閉じます: 単一呼び出しの中の有限予算としてのコンテキストと、セッションをまたいだ選択的記憶のアーキテクチャとしてのメモリ。どちらの章も 敵対的 圧力を扱っていません。メモリへの書き込みはどこも攻撃者が毒を盛れる場所、ツール呼び出しはどこも攻撃者が割り込める場所、取り戻された記憶はどこも、エージェントが自分の思考として扱う指示を攻撃者が注入できる場所です。直前2章のアーキテクチャは、正しさと効率のために設計され、攻撃下の生存のために設計されていません。


次回 — 第11章: 攻撃面とプロトコル脆弱性 Confused Deputy、Token Passthrough、Session Hijacking、Capability Escalation、Unauthenticated Sampling、そしてコンテキスト汚染を直すのが難しい構造にする暗黙の信頼伝播。

全体像を押さえたい方へ: 本書では、4つの正典パターン — 研究者、エンジニアリング、運用、バックグラウンド・エージェント — をそれぞれ特徴的な失敗モードと共に歩き、長時間走るコーディング・エージェントが落ち着いたチェックポイント規律、そして「使うほど賢くなる記憶システム」と「使うほどうるさくなるシステム」を分ける削除アーキテクチャを扱います。Amazonで『LLM Primer IV』を見る

下田 昌平
下田 昌平
開発と設計を担当。1994年からプログラミングを始め、今もなお最新技術への探究心を持ち続けています。