エージェント・メモリの公式台帳 v0.3.0 · pre-release · MIT

エージェント・メモリの問題

エージェントのメモリは何でも保存する。 真偽を問わず。

Verimem は永続メモリ層です。その add() はすべての書き込みを反作話の許可ゲートに通し——出典は本当にその事実を含意するのか?——その search()読み取りごとに来歴を返します。ドアに公証人を置いた海馬です。

100% 無料&オープンソース —— MIT ライセンス。セルフホスト・ローカルファースト:アカウント不要、API キー不要、課金なし。

許可grounding 0.97
書き込み候補
「デプロイは PostgreSQL 16 を使用。」
出典 ⊢ 事実 —— 引用されたリリースノートが主張を含意する。
ステータス 許可 · 来歴付きで保存。
§01 許可ゲート

他のメモリ層は抽出器が出したものを何でも保存します。Verimem は違います。

書き込み時、候補となる事実は許可・降格・拒否のいずれかになります——引用元が本当にそれを含意するかで決まります。安価で LLM 不要の字句スクリーンがまず 「動く / 検証済み / 完了」 のような裏付けのない主張を降格し、最も厳格なモードでは出典⊢事実の含意チェックを加えます。SNLI で測定すると AUROC 0.971 に達し、この数値はジャッジに依存しません

mem0、Zep、Letta、Cognee、MemOS を構造的に精査したところ、いずれも書き込み許可ゲートを持っていません。このゲート——そして読み取りごとに戻る来歴——こそが要点のすべてです。

図解 —— 3つの裁定で見るゲート

許可0.97
書き込み · 含意
「デプロイは PostgreSQL 16 を使用。」
許可 · 来歴付きで保存
降格0.41
書き込み · 裏付けなし
「移行は完了、すべて動いています。」
降格 · 保持、低信頼として記録
拒否0.08
書き込み · 矛盾
「API のレート制限は 10,000 req/s。」
拒否 · 出典は 1,000 —— 保存せず

読み取りごとに来歴

読み取りはテキストだけを返すのではなく——各事実について書き込み時の statusgrounding_score を返します。だからコードは盲信せず信頼度で条件分岐できます。そして update() は古い事実を決して破棄せず、置き換え(supersede)て、監査可能な history() の軌跡を残します。

memory.py · 書き込みはゲートを通り、読み取りは来歴を返す

from engram import Memory

mem = Memory()                                  # local SQLite, offline
mem.add("The deployment uses PostgreSQL 16.")   # write goes THROUGH the gate

for hit in mem.search("which database?"):       # read returns provenance
    print(hit["text"], hit["status"], hit["grounding_score"])
# -> The deployment uses PostgreSQL 16.  ADMITTED  0.97
§02 エビデンス —— 主張ではなく実測
指標結果記録として
書き込みゲートの entailment AUROC 0.971 出典⊢事実、ジャッジ非依存(SNLI)。書き込み経路の堀。
下流のハルシネーション 95.9% → 12.2% −83.7 pp;McNemar p≈6e-44、2つのシードで再現。仕組みは作話を棄権に変換すること(欠落 3%→85%)で、正確さを上げるのではありません——そしてこの腕はジャッジに結合しています。
クリーンな事実の過剰拒否 30–39% 厳格な閾値での正直なコスト。蒸留したローカルゲート(v2)はクリーンな事実の 0.924 を許可し、これを大きく埋めます。
Retrieval recall@5 · LongMemEval-s 0.8745 フル500、ジャッジなし、同一の e5 エンベッダー、外部API ゼロ。Fusion ON 対 0.8525 OFF(+2.2 pp)。以前の n=300 は 0.909 —— 楽観的で、フル500 の数字が正直なものです。これは recall@k であり、エンドツーエンドの QA 正確度ではありません
イタリア語の retrieval MRR +52% e5 エンベッダーへの切替で 0.466 → 0.710、英語の劣化はゼロ。
矛盾検出 · HaluMem TPR 0.66 / FPR 0.0125 時間的スーパーセッション修正の後。
テストスイート 5,830 グリーン テストファイル 764、約8.4万行。自前実行、リポジトリから再現可能。

ここの各数値は自前実行でリポジトリから再現可能です——第三者ランキングの順位ではありません。retrieval の数値は recall@k であり、Mem0 や Zep が掲げるエンドツーエンドの QA 正確度ではないため、直接は比較できません。

§03 違い —— 正直な組み合わせ

01書き込み許可ゲート

出典の含意で各書き込みを許可・降格・拒否。ここの競合は持っていません。

02読み取りの来歴

各事実が status + grounding_score を返す。update() は置き換え、history() は監査可能なまま。

03バイテンポラルな valid-time

valid_until のハード失効 —— 事実がいつ真でなくなったかを知るメモリ。

04あなたのサブスクで動く

Hosted MCP モード:API キー不要、トークン課金なし —— ホストの LLM が処理します。

05多言語インジェクション防御

書き込み時の prompt-injection 防御 —— 英語だけでなくイタリア語も含む。

06MCP ネイティブ

セッション開始時に 228 のメモリツール。Claude Code、Cursor、Cline、Continue、Zed に対応。

システム書き込みゲート読み取りの来歴アプローチ成熟度
Mem0 フラットベクトル + LLM 要約 確立、広く採用
Zep / Graphiti 部分的(時間的) 時間的ナレッジグラフ 商用、成熟
HippoRAG OpenIE + PageRank 研究
Verimem 融合リコール + ゲート + 睡眠統合 できたて · 採用はまだ 0

競合のスコアや採用は出典や時期で変動します。私たちが立つ2つの列——書き込みゲートと読み取りの来歴——は構造的な精査から来ており、マーケティング表からではありません。

§04 Verimem でないもの
記録として
  • 採用 0。

    できたての公開リリース。まだ誰も依存していません——メンテナの日常利用を除けば、私たちも。

  • PyPI 未登録。

    今のところソース / git から導入。engram-memory パッケージは v0.4.0 以降の目標です。

  • 自前ベンチマーク。

    各数値はリポジトリから再現できますが、第三者監査は受けていません。認証済みではなく再現可能として扱ってください。

  • 単一ノードの SQLite。

    単一ユーザーかつローカル。マルチテナントのスコープは事実層にありますが、ホスト型 / 分散ストアはありません。

  • regex 段階のエンティティグラフ。

    エンティティ+PageRank エンジンは実データで稼働しますが、抽出器は決定論的な regex で、バックフィルとして実行 —— まだライブの書き込み経路には接続されていません

  • Answer-path 未実証。

    敵対的レビューが最初の answer-conditioning デモを誇張と判定。自らの証拠で立つのは書き込み経路の堀だけ —— だから主張もそれだけです。

§05 2分でインストール

① Python —— ソースから

pip install "git+https://github.com/aureliocpr-ctrl/verimem.git"

engram コマンドと from engram import Memory SDK を提供。ローカル SQLite、オフライン、ゲートはデフォルトで有効。

github.com/aureliocpr-ctrl/verimem ↗ · MIT · README · BENCHMARKS.md

② MCP サーバーとして —— Claude Code、Cursor、Cline、Zed

{
  "mcpServers": {
    "engram": {
      "command": "engram",
      "args": ["mcp"],
      "env": { "ENGRAM_HOSTED": "1" }
    }
  }
}

ホストを再起動すると、メモリツールがAPI キー不要で呼び出せます。エンジンは現在 engram として配布 —— Verimem への改名は進行中です。