智能体记忆的正式档案 v0.3.0 · pre-release · MIT

智能体记忆的问题

多数智能体记忆什么都存。 不管真假。

Verimem 是一个持久化记忆层:它的 add() 让每次写入都经过反虚构准入门控——来源真的蕴含这个事实吗?——它的 search()每次读取时都返回出处。一个在门口配了公证员的海马体。

100% 免费且开源 —— MIT 许可。自托管、本地优先:无需账号、无需 API key、无任何计费。

已准入grounding 0.97
候选写入
「部署使用 PostgreSQL 16。」
来源 ⊢ 事实 —— 所引用的发布说明蕴含该主张。
状态 已准入 · 已带出处存储。
§01 准入门控

其他记忆层会存储其抽取器产出的一切。Verimem 不会。

写入时,候选事实会被准入、降级或拒绝——取决于所引用的来源是否真的蕴含它。一个廉价、无需 LLM 的词法筛查会先给「能用 / 已验证 / 已完成」这类无支撑的说法降级;最严格的模式再加上来源⊢事实的蕴含检查。在 SNLI 上测得 AUROC 0.971,而且这个数字与评判者无关

对 mem0、Zep、Letta、Cognee 和 MemOS 的结构化复查发现,它们都没有写入准入门控。这个门控——加上每次读取带回的出处——正是全部要点。

示意 —— 门控的三种裁定

已准入0.97
写入 · 蕴含
「部署使用 PostgreSQL 16。」
已准入 · 已带出处存储
已降级0.41
写入 · 无支撑
「迁移已完成,一切正常。」
已降级 · 保留,标记为低可信
已拒绝0.08
写入 · 相矛盾
「API 限流是 10,000 req/s。」
已拒绝 · 来源说 1,000 —— 未存储

每次读取都带出处

读取不只是返回文本——它为每个事实返回写入时的 statusgrounding_score,让你的代码可以按可信度分流,而不是盲目相信。而 update() 从不销毁旧事实:它会取代它,留下可审计的 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 key、无按 token 计费 —— 由宿主的 LLM 干活。

05多语言注入防护

写入时的 prompt-injection 防护 —— 含意大利语,不只英语。

06MCP 原生

会话开始即有 228 个记忆工具,适用于 Claude Code、Cursor、Cline、Continue、Zed。

系统写入门控读取出处方式成熟度
Mem0 扁平向量 + LLM 摘要 成熟,广泛采用
Zep / Graphiti 部分(时态) 时态知识图谱 商用,成熟
HippoRAG OpenIE + PageRank 研究
Verimem 融合召回 + 门控 + 睡眠巩固 全新 · 尚 0 采用

竞品分数与采用情况随来源与时间而变;我们立足的两列 —— 写入门控与读取出处 —— 来自一次结构化复查,而非营销表格。

§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 key。引擎目前以 engram 分发 —— 更名为 Verimem 正在进行中。