先週、vLLM MeetupとKCD (Kubernetes Community Days)でこのトークを行いました。 Nowledge Memを構築する中で得た教訓です。 製品の売り込みではありません。 私たちが実際に直面したエンジニアリング上の問題と、それらをどう捉えているかについてです。
トークは中国語です。 録画はBilibiliにあります:《为AI Agent构建记忆系统》。 この記事は、同じ内容をより深く掘り下げた英語版です。
この記事はスライドよりも踏み込んだ内容です。 トークに参加された方は、拡張ノートとしてお読みください。 参加されなかった方にも、単体でお読みいただけます。
問題
Claude Codeで2時間かけてアーキテクチャの意思決定を行います。 翌日Cursorを開くと、その決定について何も知りません。
これが2026年のAIメモリの現状です。 あらゆるツールが独自に構築しています。 ChatGPTはキーバリューペアを保存し、Claudeはファイルシステムを使い、Cursorはglobルールを使います。 どれも互いに連携しません。 平均的なパワーユーザーは毎日4つか5つのAIツールに触れています。 それぞれが自分だけが唯一の存在だと想定しています。
問いは、AIエージェントにメモリが必要かどうかではありません。 どのような種類のメモリで、どうすればがらくた置き場にならずに構築できるかです。
3つのパラダイム
「AIのためのメモリ」と言うとき、人々は異なるものを指しています。
パラメトリックメモリは知識をモデルの重みに焼き込みます。 KBLaM(Microsoft、2025年)とMSA(EverMind、2026年)は、ファインチューニングと重みレベルの統合を通じてこのアプローチを取ります。 これはモデル層の関心事です。
エージェントメモリはエージェントにセッションをまたぐ永続性を与えます。 これまで最も多くのエネルギーが注がれてきた領域であり、これから議論する課題の多くはここに端を発します。
プロダクトとしてのメモリは、私たちが取り組んでいる層です。 エージェントメモリのあらゆる課題を引き継ぎ、さらに多くを加えます。 ツールをまたぐ継続性、時間的推論、知識の進化、そしてAIシステムに自分の知識を預けるという体験です。
この分野がどうここに至ったか
この分野は3年間で4つの段階を経てきました。
- 認知シミュレーション(2023年)。 Generative Agentsはリフレクションを伴うメモリストリームを導入しました。 Voyagerは実行可能なコードをスキルとして保存しました。 メモリ統合への最初の本格的な試みです。
- OSメタファー(2023〜25年)。 MemGPTは最も明快な枠組みを示しました。 コンテキストをRAM、LLMをCPUとする考え方です。 MemOSはそれをスケジュール可能なメモリリソースへと拡張しました。
- データインフラストラクチャ(2024〜25年)。 これが単なる学術的な問題ではないことを証明しました。 Zepは時間的ナレッジグラフを構築しました。 AWS AgentCoreは基本機能をコモディティ化しました。
- 学習可能なメモリ(2025〜26年)。 A-MEMはインデックスを自己組織化します(Zettelkasten方式)。 MemSkillはPPOを使って操作戦略を学習します。 MemEvolveはアーキテクチャそのものを進化させます。
方向性は一貫しています。 メモリの構造と進化に対する決定権は、人間からエージェントへと移り続けています。 4つの段階すべてに共通する前提は、メモリはエージェントに奉仕するというものです。
認知科学から学んだこと
Nowledge Memを設計する中で最も驚いたのは、人間の認知とソフトウェアの間の機能的な対応関係ではありませんでした。 制約の対応関係でした。
人間の注意力は限られています。 コンテキストウィンドウも同様です。 人間にはオフラインでの統合が必要です(私たちはそれを睡眠と呼びます)。 AIシステムにも必要です(私たちはそれをバックグラウンドパイプラインと呼びます)。 人間の記憶は安価ですが想起は高コストです。 recall@kが低いベクトルデータベースも同じです。 人間には能動的な忘却が必要です。 ノイズに溺れるメモリシステムも同様です。
これらは類推ではありません。 異なる基盤における、同じ情報理論的なボトルネックなのです。
認知マッピング:人間の認知とAIメモリアーキテクチャの間の制約
特に有用だった概念が1つあります。 注意のプリフェッチとしてのワーキングメモリです。 Baddeleyのモデル(容量が限られ、注意に焦点を当て、短期と長期を橋渡しする)に着想を得て、私たちはバックグラウンドエージェントが1万件以上のメモリからキュレーションする日次のワーキングメモリを構築しました。 コミュニティシグナル、減衰スコア、最近の活動を使って、今日のために関連性の高い少数の項目を選び出します。 人間の注意力のためのL1キャッシュと考えてください。
出力は、どのエージェントでも読めるプレーンなMarkdownファイル(~/ai-now/memory.md)です。
毎日ローテーションします。
あるユーザーはこう話してくれました。「毎朝、最初にやることはモーニングブリーフィングを確認することです。」
デスクトップアプリのワーキングメモリ
5つの課題
どのメモリシステムも、最終的には同じ5つの問題に行き当たります。 それぞれについて、私たちがどう考えているかを示します。
1. 蒸留:会話の90%は記憶する価値がない
問いは、記憶するかどうかではありません。 どのような形で記憶するかです。
「エージェントにとって重要」は「人にとって重要」と等しくありません。 「今は重要でない」は「後で重要でない」と等しくありません。 保存か破棄かの二択は、誤った抽象化です。
私たちは知識を3つの形に分解します。
- Trace(トレース):生の会話。 完全なまま保存されます
- Unit(ユニット):抽出された原子的な知識(事実、決定、計画、手順)。 検索可能で、リンク可能で、進化可能です
- Crystal(クリスタル):3つ以上の独立した情報源によって相互検証された安定した結論
これは認知科学におけるエピソード記憶から意味記憶への統合に直接対応します。 高忠実度から高密度へ。
最も重要だった設計上の洞察は、型が進化のパターンを決めるということです。 私たちはUnitを8つの型(事実、決定、計画、手順、選好など)に分類します。 計画は決定になります。 決定は固まって事実になります。 これは単なるタグ付けではありません。 知識のライフサイクルなのです。
最も大きな違いを生んだ3つのエンジニアリング上の選択があります。
トリアージゲート(約50トークン)。 初期には、私たちはあらゆる会話を蒸留していました。 トークンの浪費がひどいものでした。 今では軽量なプレフィルタが、その会話が完全な抽出パイプラインに値するかどうかを判断します。 コストは桁違いに下がりました。
アーキテクチャとしてのユーザー意図。 バックグラウンドの自動蒸留は、コストを抑えるために厳格な品質しきい値を使います。 しかしユーザーが明示的に蒸留をトリガーした場合、それはプロダクトの意図であり、LLMプロンプトまで一貫して流れ込まなければなりません。 これは実際のポストモーテムから学びました。 自動キャプチャでユーザー意図を無視すると、気づかないうちに品質が低下したのです。
既存のタクソノミーからの自動ラベリング。 エージェントはあなたの既存のラベルから選びます。 新しいカテゴリを勝手に発明することはありません。 あなたのラベル体系はあなたのものです。 システムはそれを使うことを学びます。
メモリ蒸留パイプライン:会話から構造化された知識へ
2. 検索:見つけられなければ、覚えていても無意味
ボトルネックは速度ではありません。 問い方と保存のされ方の間にある意味のギャップです。
私たちは2層の検索パイプラインを構築しました。
ファストパス(約100ms、クエリの90%を処理)。 ベクトル検索+全文検索+エンティティマッチング+コミュニティ検出+ラベルフィルタリング+グラフ走査を、すべて並列で行います。 複数ソースでのヒットには+5%のブースト。 Crystalには+25%。 最新バージョンには+15%。
ディープパス(難しい10%向け)。 LLMによる意図分類がクエリを5つの意図タイプに振り分け、それぞれ異なる重み分布を持ちます。 概念クエリはベクトルに60%寄ります。 事実クエリはFTSに50%寄ります。 HyDEが表現のギャップを埋めます。 LLMリランキングは0.7のLLMスコアと0.3の意味スコアを混ぜます。 GraphRAGが推論のギャップを埋めます。
すべての結果はsource_thread_idを持ちます。
エージェントがより多くのコンテキストを必要とするなら、元の会話を引き出します。
メモリにすべてを詰め込む必要はありません。
必要なのは良いポインタです。
検索パイプライン:ファストパスとディープパス
3. 時間性:メモリには2つの時計がある
ほとんどのメモリシステムは1つのタイムスタンプしか持ちません。
created_atです。
しかし「2020年に何が起きたか?」と「今週何を追加したか?」はまったく別の問いです。
私たちは2つの独立した時間軸を追跡します。
- イベント時間:その出来事が起きたとき
- 記録時間:それを保存したとき
精度の追跡も行います。
「2020年に」と言ったなら、私たちは2020-01-01をprecision=yearとともに保存し、UIには「2020年」と表示し、「1月1日」とは表示しません。
LLMが「数年前に」と言い、確信度が0.3を下回る場合、日付はまったく保存しません。
推測はしません。
検索の最適化は3層のカスケードです。
- 正規表現プレフィルタ(μs)。 ネガティブ先読みにより、「last resort」が時間的抽出をトリガーするのを防ぎます。
- 3トークンのLLMゲート(約15ms)。 はいかいいえか:このクエリに時間的な意図はあるか?
- 完全な抽出(128トークン)。 タイプ+値+確信度。
クエリの90%は層1か層2で止まります。 コストの高い第3ステップが発火することはほとんどありません。
最終的なランキング式では、時間的ブーストは1.0のうち最大0.15に制限されます。 意味的類似度が0.65で支配的です。 時間は並べ替えには役立ちますが、それを主導することはありません。
二重時間のワーキングメモリとアクティビティカレンダーを備えたタイムライン
4. 進化:知識は追記のみではいられない
実際の知識は変化します。 以前知っていたことと矛盾することを学びます。 計画は決定になります。 仮定が確認されます。
私たちはこれを4つの進化関係でモデル化します。 エンジニアはこれをすぐに理解する傾向があります。 Gitに対応するからです。
| 関係 | 意味 | Gitの類推 |
|---|---|---|
replaces | 新しい理解が古いものを置き換える | force push |
enriches | 既存の知識に追加する | merge |
confirms | 独立した情報源が検証する | approve |
challenges | 矛盾する情報が現れる | conflict |
単一のエッジプロパティis_progressionが、バージョン連鎖(replaces/enriches = true)と検証シグナル(confirms/challenges = false)を区別します。
4つの独立したエッジタイプよりも表現力が高く、よりコンパクトです。
知識変換パイプライン(Trace → Unit → Crystal)は単なるバージョン管理ではありません。 Crystalの形成には3つ以上の情報源が必要です。 2つは偶然、3つはパターンです。 インサイトにはコードレベルの品質ゲートが3つあります。 空のものは出荷されず、根拠のないものは出荷されず、30文字未満のものは出荷されません。
なぜコードレベルか?LLMの品質は劣化するからです。
「空のインサイトを出力しないでください」というプロンプトは、弱いモデルには無視されることがあります。
if zero_insights: return Noneは決して劣化しません。
矛盾が現れたとき、システムは自動解決しません。 両方のバージョンを並べて提示し、ユーザーが決めます。 新しい方を残すか、両方を残すか、却下するかです。
タイムラインにおける進化の検出と、人間による解決を伴うバージョン履歴
5. 減衰:忘却は機能である
ほとんどのメモリシステムはこれを無視しています。 忘却がなければ、メモリシステムは埋め立て地です。
私たちは2つのフレームワークを検討しました。
- ACT-R(John Anderson、カーネギーメロン大学):脳がどのように記憶を活性化し忘却するかについての数十年にわたる研究
- FSRS(Jarrett Ye叶峻峣):最適な復習間隔を計算し、現在Ankiのデフォルトアルゴリズムになっています
どちらも優れています。 しかし異なる問題を解いています。 FSRSは「これをまだ覚えているか?」を最適化し、明示的なユーザー評価(1〜5)を必要とします。 私たちの問題は、フィードバックループのない受動的な検索の文脈で「今、何が注意に値するか?」です。
そこで私たちは2つの独立したスコアに分けました。
**減衰(Decay)**は時間とともに薄れます。 対数周波数補正を伴う指数関数的減衰です。 メモリは自然に薄暗くなります。
**確信度(Confidence)**は上がる一方です。
検索ヒット、クリック、EVOLVES関係、Crystalの引用のたびに証拠が積み重なります。
confidence = max(new_value, old_value)。
決して減少しません。
重要度フロア。 重要なメモリ(決定、主要なインサイト)には最低スコアがあります。 何ヶ月も活動がなくても、検索可能なままです。
明示的な評価の代わりに、私たちは6つの暗黙的な行動シグナルを使います。 検索ヒット、結果のインプレッション、クリック、閲覧の滞在時間、EVOLVES関係、Crystalの引用です。 EVOLVESが最も高い重みを持つのは、ナレッジグラフによる検証が私たちが持つ最も強い確信度シグナルだからです。
アーカイブには4つの条件すべてが必要です。 減衰が極端に低い、インタラクションがゼロ、90日以上経過、そしてまだアクティブステータスにあること。 システムは保持する側に倒れます。
「忘却のないメモリシステムは埋め立て地である。」
メモリヘルスダッシュボード:減衰分布と確信度のトレンド
すべてがどう組み合わさるか
スーパーグラフ
システム内の知識は3つの形(Trace、Unit、Crystal)で存在し、7つのノードタイプと11のエッジタイプを持つグラフに組織化されます。
グラフは段階的な開示を中心に設計されています。 エージェントはすべてを一度に読み込みません。 軽量な意味検索から始めます。 より多くのコンテキストが必要ですか?エンティティ関係を確認します。 履歴が必要ですか?バージョン連鎖をたどります。 全体像が必要ですか?コミュニティクラスタとCrystalのインサイトを見ます。
各層には対応するプリミティブなツールがあります。 ナレッジグラフは可視化のためのものではありません。 段階的な走査のためのものであり、すべての走査は推論の行為です。
段階的なナレッジグラフ:トレースから品質層へ
バックグラウンドインテリジェンス
EVOLVES検出、エンティティ抽出、Crystal形成、ワーキングメモリのキュレーション。 上記で説明したすべての自動動作は、2つの実行モデルで13のバックグラウンドタスクとして動作します。
スケジュール実行(cron)。 午前5時の日次ブリーフィング、昨日のワーキングメモリのアーカイブ、今日の生成。 午前6時の減衰リフレッシュ(純粋な計算、LLMなし)。 週次のインサイト検出、Crystal監査、低活動のコンパクション。 2週間ごと:AI要約を伴うLouvainコミュニティ検出。
イベント駆動(カスケード)。 新しいメモリが3つのパイプラインを同時にトリガーします。 EVOLVES検出(30秒デバウンス)、KGエンティティ抽出(30秒)、ワーキングメモリのリフレッシュ(300秒)。 EVOLVESが3つ以上の関連メモリを見つけると、Crystal評価を自動的にトリガーします。 これはスケジューリングではなくカスケードです。
タスクが実行される前に、コンテキスト注入がエージェントに必要なものを事前計算します。 48時間の活動サマリー、グラフ統計、昨日のワーキングメモリ。 ハードキャップは約25Kトークン。 エージェントは探索しません。 すべてのトークンが意思決定に使われます。
4層のガードレールがコストとノイズを抑えます。
- デバウンス:30秒/300秒でバーストイベントを統合
- レート制限:1時間あたり15タスク、超過分はキューに入る(決して破棄されない)
- トークン予算:タスクごと+1時間ごと+1日ごとの上限
- 品質ゲート:コードレベル。 空のブリーフィングは飲み込まれ、イベントは生成されない
コントロール
コントロール感のないメモリシステムは、ただのデータベースです。 私たちはコントロールを5つの次元で考えます。
- 可視。 グラフ可視化、バージョン履歴、コミュニティクラスタリング。
- 操作可能。 編集、削除、矛盾の解決、ラベルの管理。
- AIネイティブ。 あらゆる知識タスクを自然言語でスケジューリング。 「低品質のメモリを整理して。」「私のReact知識の分布を分析して。」
- データ主権。 ローカルストレージ、非バイナリ形式、いつでも完全エクスポート、グラフ可視化エンドポイントを含む豊富なAPI。
- ユビキタス。 デスクトップ、iOS、Android、TUI、CLI、MCP。
論理は単純です。 見えなければ、信頼しない。 信頼しなければ、使わない。 そして使わなければ、持っていないのと同じです。
グラフ探索:コミュニティクラスタリング、ノード重要度、グローバル分析
接続層
メモリシステムを構築することは1つのことでした。 それを人々が実際に使うあらゆるツールに接続することは、より困難でした。
8つのネイティブプラグイン:Claude Code、Cursor、Codex、Gemini CLI、OpenClaw、Bub、Alma、Droid。 14のAIプラットフォームから会話を自動同期するブラウザ拡張機能。 Obsidian、Apple Notes、Notionのネイティブコネクタ。 デスクトップ、iOS、Android、CLI、Raycast、MCP。
各プラグインは完全なライフサイクルを持ち、浅いMCP呼び出しではありません。 起動時にワーキングメモリを注入し、セッション中に知識をキャプチャし、最後にグラフへ蒸留します。
どのツールにも独自のセッションモデルがあります。 Claude Codeのセッションは長い会話です。 Cursorのセッションは短いタスクです。 ブラウザタブは散在する断片を生み出します。 接続層は、それらすべての間で知識を流れさせるものです。
クロスエージェント接続層:中心にある個人のナレッジグラフ
1年を経ての4つのテーゼ
A. メモリはコモディティ化しつつある。 今やすべてのAIネイティブ製品が独自のメモリを構築しています。 ChatGPT、Claude、Cursor、Gemini。 すべて異なり、どれも相互運用できません。 これは自然には収束しません。 集約層が必要です。 パスワードではなく知識のための1Passwordを考えてください。
B. メモリはツールより長生きする。 2023年のエージェントフレームワークで、まだ残っているものはいくつありますか?Langchain、AutoGPT、BabyAGI。 ツールは置き換えられます。 メモリはそれらとともに消えてはなりません。 ローカルストレージ、オープンな形式、完全エクスポート。 ユーザーが自分のデータをコントロールできなければ、信頼しません。
C. メモリはストレージの問題ではなく、知能の問題である。 5つの課題はすべてこれに帰着します。 蒸留は分類です。 検索はランキングです。 忘却は注意の配分です。 メモリシステムの中核はデータベースではありません。 意思決定の連鎖であり、すべてのステップにエージェントレベルの判断が必要です。
D. 終着点は実行可能な経験である。 メモリ → Crystal → Skill。 今日、CLAUDE.mdとSKILLS.mdは判断を手書きで形式化したものです。 抽象化としては正しいですが、手作業です。 SkillCraft(Chen et al.、2026年)は、ツールの組み合わせを再利用可能なスキルとしてキャッシュでき、トークンを80%削減できることを示しました。 Yansu(Isoform)はさらに進みます。 結晶化された知識が実行可能なアプリケーションになるのです。 次のステップは、システムがこれらをメモリから自動生成できるようにすることです。
次に来るもの
グラフ上の学習。 現在グラフはストレージ、走査、アルゴリズムを担っています。 次はその上でのGNNベースの予測的推論を、オンデバイスで行います。 どのメモリがまもなく陳腐化するか?どの決定が矛盾しているか?まだ表面化していないクロスドメインのつながりは何か?反応的なQ&Aから、能動的なアラートへ移行します。
Crystal → Skillの自動化。 Crystalパイプラインはすでにエージェントスキルの原材料を生み出しています。 SkillCraftとYansuが道を示しています。 次のステップは、この連鎖を慎重に自動化することです。 メモリ → 結晶化されたインサイト → 検証済みで実行可能なスキル。
適応型メモリアーキテクチャ。 MemEvolveは、メモリアーキテクチャ自体が進化しうることを示しました。 ユーザーやワークフローが異なれば、異なるメモリ戦略、減衰パラメータ、検索の好みが必要です。 私たちの方向性は、システムが各ユーザーのメモリスタイルを学習できるようにすることですが、1つの厳格な制約があります。 ユーザーがシステムの決定を理解し、信頼できなければなりません。 完全な自律ではなく、パーソナライズです。
2026年3月21日、vLLM Beijing MeetupとKCD (Kubernetes Community Days)でのトークに基づく。 録画は近日公開予定。 @NowledgeMemをフォローして最新情報をお受け取りください。
slides: https://siwei.io/talks/memory-2026/
Nowledge Memは、個人とAIネイティブチームのためのメモリ層です。 詳しくはこちらまたはドキュメントをお読みください。