2026-07-28 発行(読了 6 分)
実プロダクトのアーキテクチャ・使用例から AI 開発の現在地を週 3 回・1 号 1 テーマで深掘り
エージェントが複数セッションにまたがって学習・継続動作するようになるにつれ、「何を覚えておくか」の設計が改めて焦点になっている。Anthropic は Claude Managed Agents にファイルベースの長期メモリと監査ログを追加し、Cursor はツール定義や過去の会話を常駐させず必要な時だけ取得させる構成でトークン消費を46.9%削減し、OpenAI は Agents SDK の実装例で短期メモリと長期メモリの境界を書き込み時のガードレールで引いている。3社の手法を並べると、メモリ設計が「保存容量を増やす」話ではなく「どこで区切り、何を書かせないか」を先に決める設計行為になっていることが見えてくる。
Claude Managed Agents 向けに2026年4月23日に公開された Memory 機能は、記憶を構造化データベースではなく通常のファイルとして保存する設計を取る。エージェントは既存の bash・コード実行能力をそのまま使って記憶を読み書きし、org 全体で共有する読み取り専用ストアとユーザーごとの読み書き可能なストアを使い分けられる。どの変更がどのエージェント・どのセッションに由来するかを追う監査ログが標準で付き、過去バージョンへのロールバックや履歴からの redact も可能だ。
この設計が選ばれたのは、ベクトル DB や専用メモリストアを新たに構築せずに済むからだ。コーディングエージェントはすでにファイルシステム操作を前提に訓練・運用されており、「ファイルとして保存する」は既存の道具立てに乗るだけで実装できる。逆に監査ログとロールバックを標準機能にしたのは、エンタープライズ導入で「エージェントが何を学習し、なぜその判断に至ったか」を追跡できないと承認が下りないという実務上の制約が先にあったからだ。
Cursor が公開した dynamic context discovery は、ツール定義や過去の会話、MCPサーバーのツール一覧をあらかじめすべてコンテキストに詰め込むのではなく、最小限の手がかりだけを常駐させ、必要になった時にエージェント自身が grep や tail、セマンティック検索で取りに行く設計だ。長い shell 出力や MCP の応答はファイルに書き出し、エージェントが tail で必要な分だけ読み進める。要約で失われた過去の会話も、検索可能なファイルとして残すことで後から引き出せるようにしている。
この方式が効くのは、MCPサーバーの数が増えるほど全ツール定義を毎回コンテキストに載せるコストが線形に膨らみ、しかも大半のターンでは使わないツールの説明が「使われない高コストな常駐者」になるからだ。Cursor は MCP ツールを呼び出したランに限定した計測で、この方式がエージェントの総トークン消費を46.9%削減したと公式に報告している。
OpenAI Agents SDK の実装例は、状態を Profile(構造化された既知情報)・Global Memory(セッションをまたぐ長期メモ)・Session Memory(今回限りの短期メモ)・Trip History に分けて管理する。長期メモへの書き込みは save_memory_note ツールを経由し、「複数回の利用を通じて成り立ちそうか(durable)」「実際にレコメンドや制約を変えるか(actionable)」の2条件を満たした場合のみ保存を許可する。セッション終了時には LLM 呼び出しでセッションメモをグローバルメモへ統合し、重複排除と競合解消(新しい情報を優先)を行う。会話履歴そのものの管理には、直近 N ターンだけを残す Trimming と、古いターンを要約に圧縮する Summarizing の2方式があり、前者は決定的でレイテンシ0、後者は長期文脈を保てる代わりに要約起因の情報汚染リスクを持つとされる。
この二層設計と書き込み時ガードレールが必要になるのは、「今回だけ窓側の席がいい」のような一回限りの要望と、「いつも通路側」のような恒常的な好みを同じ場所に書くと、次回以降のレコメンドが一回限りの要望に汚染されるからだ。OpenAI の実装は「セッションメモがグローバルメモに優先する」という明示的な優先順位ルールを持たせることで、この汚染を読み出し時ではなく書き込み・統合時に処理している。