チームが「agent memory が必要」と言うとき、実際には少なくとも3つの異なる課題を同時に指している。
最初の2つはいまや当たり前の要件だ。3つ目こそが本番システムで最も居心地悪くなる部分になる。
コンテキストウィンドウがいくら大きくなっても、それはワーキングセットに過ぎない。ポリシーエンジンでも、永続ストアでも、レビューワークフローでも、ロールバック機構でもない。agent が質問に答えるだけなら検索で十分かもしれない。しかし agent がオンボーディング資料、インシデント runbook、アカウントプラン、ポリシー要約、生成レポートを更新するようになった瞬間、メモリは運用状態(operational state)になる。
Cloudflare の現行 Agents ドキュメントは、永続的な会話ストレージ、context block、圧縮、検索、AI が制御できる memory ツールを Session API として整理している(Cloudflare Agents memory ドキュメント、Session API リファレンス)。Redis も別の視点から同じ転換を示している:agent memory は、ステートレスなモデル呼び出しをステートフルなシステムに変えるためのインフラである、と(Redis agent memory 概要)。
これらは有用なシグナルだ。しかし購買側の問いはもっと狭い:実際に制御したい失敗モードに、どのタイプの memory プラットフォームが適合するか?
ほとんどの比較は何もかもを「long-term memory」に押し込める。結果として、チームは良い retriever を買った後、依然として安全にリリースできない現実に気づく。
代わりに3層モデルを使う。
| レイヤー | 何に答えるか | 欠けたときの典型的な失敗 |
|---|---|---|
| Memory レイヤー | どう保存、ランク付け、検索、要約、期限切れを行うか | 無関係なリコール、古い事実、重複メモリ、高いトークンコスト |
| ガバナンスレイヤー | 誰が読み、書き、承認、削除、監査、ロールバックできるか | サイレントドリフト、危険なパーソナライズ、コンプライアンスギャップ、復旧経路の不在 |
| 分配レイヤー | 複数の agent、ツール、ランタイム、人間が同じコンテキストをどう消費するか | フレームワークロックイン、コピーされたコンテキスト、一元的な真実の崩壊 |
多くのプラットフォームがまず宣伝するのは memory レイヤーだ。しかし、マルチエージェントと実在の企業データに晒されたときにシステムが生き残るかを決めるのは、ガバナンスレイヤーと分配レイヤーである。
コンテキストをインフラとして考え始めているチームは、ファイルワークスペースの観点を掘り下げた puppyone の記事 AI agent infrastructure and versioned filesystems も併せて読むと良い。
memory、ファイル、ロールバックが必要な agent のために、ガバナンス済みコンテキスト層を構築Get started有用な比較は「どのツールが最高か」ではない。「このワークフローにどのアーキテクチャが合うか」だ。
| アプローチ | 適する場面 | 得られるもの | それでも自分で解く必要があるもの |
|---|---|---|---|
| マネージド memory サービス | 単一のクラウドや agent ランタイム上で構築中のチーム | 永続セッション、context block、圧縮、管理されたストレージパターン | クロスプラットフォーム分配、組織横断の書き込みポリシー、より深いレビュー |
| Memory SDK / レイヤー | 迅速にパーソナライズやスコープ付きリコールを追加したい製品チーム | memory 追加・検索・スコープ付けの API | 同意、保持、シークレット、監査、ロールバック |
| セッション & ナレッジグラフメモリ | 会話中心で、ユーザー事実と関係が価値を持つ製品 | 抽出された事実、ユーザーグラフ、グループグラフ、解釈可能な関係 | 変更承認、真実の源ガバナンス、運用成果物の扱い |
| ステートフル agent ランタイム | 長時間実行、自分でメモリツールを扱う agent | agent レベルの memory 操作とツール駆動のリコール | チームとランタイムをまたいだ共有コンテキストのガバナンス |
| 自前の基盤 | データ、遅延、コンプライアンスに厳格な要件があるプラットフォームチーム | ストレージ、インデックス、デプロイ、可観測性への最大の制御 | 抽出ロジック、UX、ポリシー、評価、長期運用 |
| Agents Filesystem | 共有ファイル、成果物、ガバナンス付き書き込みを伴うマルチエージェントワークフロー | agent 可読な構造、永続ファイル、パス単位権限、バージョニング、ロールバック | memory ポリシー設計、承認ゲート、検索とオーケストレーションとの統合 |
この表は意図的に「唯一の勝者」を立てない。サポート chatbot、コーディング agent、財務バックオフィス agent のメモリ問題は同じではない。
マネージド memory サービスの魅力は、永続化、圧縮、検索をランタイムプリミティブとして束ねる点にある。Cloudflare の Agent memory モデルは、agent がツール経由で検索・読み込み・更新できるセッションストレージと context block を中心に据えている。
適する場面:
注意点:
マネージド memory は配管工事を減らすために使う。ポリシー層の代替とは見なさない。
永続パーソナライズ、スコープ付きリコール、ランタイム全面採用なしの memory API が欲しい場合、多くは SDK が最速の道だ。
Mem0 はその好例で、ドキュメントが会話・セッション・ユーザー・組織メモリを区別している。また、取得可能なメモリにシークレットや未マスクの PII を置かないよう注意している(Mem0 memory types)。スコープがなければ「memory」は雑多な引き出しになる。
適する場面:
注意点:
実務上の起点ルール:セッションメモリからユーザー/組織メモリへ昇格するものには、必ずオーナー、TTL もしくは保持ポリシー、監査ログを付ける。
重要情報が関係性(人、アカウント、設定、エンティティ、ポリシー、依存、時系列イベント)であるとき、グラフ指向メモリが最も強い。
たとえば Zep のドキュメントは、セッション固有のチャット履歴に加え、検索可能なユーザーナレッジグラフとグループグラフを扱う(Zep quickstart、Zep group graph ガイド)。事実と関係が明示構造になるため、埋め込みだけの手法よりも解釈可能性が高い。
適する場面:
注意点:
グラフメモリはしばしば context base の補完であり、代替ではない。
ステートフルランタイムは、agent にメモリ操作のためのツールを与える:読み、書き、検索、要約、再構成。Letta のメモリベンチマークは実務的な論点を浮かび上がらせた:メモリ性能はストレージバックエンドだけでなく、agent がそのメモリツールを信頼性高く使えるかにも依存する(Letta memory benchmark)。
ここでファイル形式のメモリが面白くなる。agent はファイル操作と相性が良い:一覧、読み取り、検索、編集、diff、書き込み。開発者はファイルレビューに慣れている。セキュリティチームもパス、マウント、ID、監査ログで推論するのに慣れている。
適する場面:
注意点:
ファイル単位のセーフティパターンは、puppyone の AI agent 向けファイルシステム設計 を参照。
一部のチームはスタックをもっと自前で持つべきだ。データ所在地、遅延、デプロイ構成、統合深度が本質要件なら、組み合わせ可能な基盤が正解になりうる。
Redis はよく使われる例で、低遅延ステート、キャッシュ、ベクター検索を一つのスタックに収められる。記事はエンコード、保存、検索、agent 応答への統合のパイプラインを示す。名前が付く部分はそこまでで、周辺が本当に難しい:
適する場面:
注意点:
制御そのものが目的なら自作。プラットフォーム工学が差別化要因でないなら採用か購入。
Agents Filesystem は単なるフォルダではない。agent のために設計された、統制されたコンテキストワークスペースだ。
次の条件で正解になる:
まさにこれが puppyone が解こうとしている問題だ:社内データソースを接続し、コンテキストを Markdown や JSON のような agent 可読ファイルとして表現し、Access Point でアクセスをスコープ化し、agent ネイティブなインターフェースで公開し、バージョン履歴と監査ログを agent の作業に付ける。
ただし、全チームがいきなりフルスペックのファイル層から始める必要はない。chatbot に per-user 設定だけなら memory SDK で足りる。しかし agent が共有 runbook、ポリシー要約、コンテキストファイル、ワークフロー成果物を編集するなら、統制されたファイルシステムが復旧モデルを強化する。
重要な区別はシンプルだ:検索メモリは agent の記憶を助ける。統制されたファイルシステムはチームが agent の変更を信頼することを助ける。
プラットフォームを選ぶ前に、小さな bakeoff を走らせる。汎用デモではなく、代表的な2〜3個のワークフローを使う。
| テスト | 何を測るか | なぜ重要か |
|---|---|---|
| 厳密リコール | ID、ポリシー名、アカウント事実、最新決定 | 運用上の事実には意味的類似度では不十分 |
| 鮮度処理 | 古い事実が抑制または期限切れ表示されるか | agent は期限切れのコンテキストを蘇らせてはならない |
| 書き込み安全性 | 誰が書けるか、どこに着地するか、どうレビューするか | メモリ書き込みはミューテーションである |
| マルチエージェント隔離 | 低信頼 agent が共有コンテキストを汚染しないか | 一つの悪書き込みを拡散させない |
| 説明可能性 | なぜそのメモリが検索・更新されたか | デバッグにはトレースが必要 |
| ロールバック | 直前状態にどれほど素早く戻せるか | 悪メモリと悪ファイルは必ず発生する |
| 移植性 | 複数ランタイムが同じコンテキストを使えるか | エンタープライズ agent が一生同じクライアントに留まることは稀 |
bakeoff は決定のために使う。最もきれいなデモを称賛するためではない。
アーキテクチャ議論が曖昧になったときの近道。
より深いアーキテクチャの枠組みには、このチェックリストを Context Engineering:RAG では足りないとき と併読してほしい。分水嶺は似ている:単純なリコールは単純な検索で解けるが、本番 agent には構造化・統制・再利用可能なコンテキストが必要だ。
puppyone をあなたの agent スタックの統制された memory/ファイル層として評価するGet startedRAG は通常、関連ドキュメントを取得してプロンプトに追加する検索パターン。agent memory はもっと広い。永続設定、決定、ワークフロー状態、成果物、書き込みポリシー、保持ルール、そしてそれらを後から検索・変更する仕組みを含む。
プラットフォームの一部にはなる。全体になることは稀。ベクター検索は意味的リコールに有効だが、エンタープライズ agent memory には確定的ルックアップ、スコープ付き権限、変更履歴、監査、保持、ロールバックも必要。
まず scope:セッション、ユーザー、組織、agent ロール、ワークフロー。次に、保存してよいもの/絶対保存してはいけないもの、共有メモリに誰が書けるか、ロールバック方法を定義する。それが済んだ上でインデックスと検索を最適化する。
memory がパーソナライズや検索だけではなく、共有の運用コンテキストでもある場合に puppyone は適合する。統制されたファイル、MCP 経由アクセスのコンテキスト、サンドボックスマウント、バージョン履歴、監査ログが必要なら、puppyone は既存のモデルとランタイムを囲む context base と Agents Filesystem のレイヤーになれる。