Skip to main content
Glama

Obliviate

Agent 记忆,能按指令遗忘——并证明它已消失。

在每一处删除它 · 在单个原子事务中 · 附带任何人都能核验的签名凭证

▶ Try the live demo

Live demo CockroachDB Basic Cloud MCP AWS S3 WORM Python 3.12 FastAPI License MIT

当 Agent 的记忆出错、被污染,或法律要求其消失时——你能在所有位置删除它、原子化地操作,并证明它真的消失了吗?

Obliviate 可以。它在一个 ACID 事务中级联删除某个实体的整个知识子图——文档、图节点、边和向量——然后通过三种方式证明擦除:一个 AS OF SYSTEM TIME 的前后对比、一次返回空结果的实时向量 + 图重新搜索,以及一份经过加密粉碎并启用对象锁定的删除证书。

浏览、召回、知识图谱和 /verify 对所有人开放。写入是令牌门控的(擦除产品绝不应允许匿名访客删除数据)——要自行运行 Forget & Prove,请将演示令牌 obliviate-judge-75a0f127 粘贴到 设置 → 安全 中。

Obliviate 着陆页

活记忆——具有实时物理效果的知识图谱(47 个实体 · 83 条关系,全部位于 CockroachDB 中):

Obliviate 知识图谱 —— 实时物理效果


问题

每一轮迭代中的 Agent 内存项目都在回答同一个问题:Agent 如何记住更多? 但几乎没有项目回答治理化生产内存真正要求的问题:Agent 如何遗忘——完全、安全且可证明地?

只增不减的记忆是一种负担。一个被污染或错误的事实会通过知识图谱传播,破坏未来的推理。已离开客户的数据会超过法定保留期继续留存(欧盟 GDPR 第 17 条 “被遗忘权” 是 2026 年的执法重点)。而在大多数系统中,“删除”只是尽力而为的 DELETE,会在磁盘上留下可恢复的向量、孤立的图边,并且没有任何已发生操作的证明。

Related MCP server: elephantasm-mcp

Obliviate 能做什么

将它指向一个实体——客户、已退役的系统、被污染的记忆——它就会执行可验证的擦除:

阶段

保证

级联删除

该实体的文档、图节点、边和向量会在一个可串行化事务中被移除——绝不会出现半擦除状态。

共享节点安全

与仍存活主体共享的实体会被失效而非删除——擦除一个主体绝不会损坏另一个主体的记忆。

加密粉碎

该主体的每条记录加密密钥被销毁,因此残留密文(在 MVCC 历史、备份或 S3 中)在密码学上不可恢复——而不仅仅是取消引用。

先前存在的证明

AS OF SYSTEM TIME 精确重建图谱在擦除之前所知的内容——这是数据库对自身的记忆,无需单独的审计日志。

不存在的证明

实时向量 + 图谱重新搜索返回空结果;Agent 回答*“查无记录”*。

证书

一份已签名、对象锁定(WORM)S3 的证书使每次擦除都具有防篡改可验证性。

同一原语的两种应用:

  • 数据完整性 / 事件响应——一个被污染或错误的事实进入了你的 Agent 记忆。将它干净地、跨集群地切除,并证明图谱再次干净。

  • 合规性——GDPR/HIPAA 的被遗忘权,附带一份可以交给审计师的证书。

有据召回——附带来源,并对不存在保持诚实

用简单英语提问。回答严格基于所存储的图谱,引用来源,并在事实不在记录中时诚实地拒绝回答——这正是让遗忘可被证明的行为。

Obliviate 聊天——带来源的有据回答

Forget & Prove —— 核心功能

一键在单个 ACID 事务中擦除一个主体,然后通过三种方式证明——它存在过(AS OF SYSTEM TIME)、它已消失(实时向量 + 图谱复检)、它不可逆(加密粉碎 + 对象锁定 S3 证书)。与仍存活主体共享的实体会被保留而非删除(注意 1 个共享已保留)。

Forget & Prove —— 实时的三部分擦除证明

它会生成一份已签名、对象锁定的擦除证书——并且任何人都可以在 /verify 上独立复核它:该页面重新计算 SHA-256 内容哈希,并校验 ECDSA(P-256)签名(公钥可见,因此可离线验证)。被篡改的字段会破坏哈希;伪造的证书会无法通过签名校验。

擦除证书

独立验证器(/verify)

知识图谱(47 个实体 · 83 条关系,实时物理效果)和应用内文档:

知识图谱

文档(/learn)

知识图谱

文档

为什么选择 CockroachDB(关键支撑,而非摆设)

Obliviate 将通常需要三个系统——图数据库、向量存储和审计日志——统一到一个持久、受控的存储中。这之所以可能,是因为 CockroachDB 的原语:

  • 分布式向量索引(C-SPANN)——对 VECTOR(384) 列进行语义召回,索引支撑(通过 EXPLAIN 验证),与关系数据位于同一张表中。

  • AS OF SYSTEM TIME——MVCC 时间旅行就是删除凭证。无需信任额外附加的历史表。

  • 可串行化事务——级联删除 + 失效 + 加密粉碎要么全部提交,要么全部不提交。

  • 递归 CTE——对知识图谱进行穷尽的、按构造的爆炸半径遍历。

  • 行级 TTL——保留策略由存储引擎强制执行。按行选择启用(ttl_expire_at):文档仅在保留策略设置时才过期,因此不会因一刀切的时钟而删除任何内容。

  • 托管 MCP 服务器(独立验证)——Obliviate 对接 CockroachDB Cloud 自有的托管 MCP 端点(cockroachlabs.cloud/mcp)。这是擦除声明的最强形式:审计师不必在 我们 的 API 说“它已消失”时信任它——他们将自己的 MCP Agent 指向 Cockroach Labs 的托管端点,直接对集群执行 select_query,以确认被遗忘主体的行确实不存在。这种证明永远不会经过 Obliviate 的代码。参见 docs/MCP.md。

  • MCP 原生(我们自己的工具)——Obliviate 还提供自己的 MCP 服务器(FastMCP),由同一个集群支撑,因此任何 MCP Agent(Claude Desktop/Code、Cursor)都可以通过高级工具记忆、召回,并可证明地遗忘。

所使用的 CockroachDB 工具(关键支撑): CockroachDB Cloud 托管 MCP 服务器 · 分布式向量索引(C-SPANN) · AS OF SYSTEM TIME · 可串行化事务 · 递归 CTE · 行级 TTL。 所使用的 AWS 服务: S3(对象锁定 / WORM 擦除证书) · EC2(托管)。证书在进程内使用 ECDSA(P-256)签名;基于 Lambda 的签名器是可选的部署变体,并非必需。

架构

flowchart TB
    U["User / Agent"] -->|HTTPS| API["FastAPI app"]
    MCP["Obliviate MCP server (FastMCP)"] -->|"remember · recall · forget (via core)"| CRDB
    API -->|"vectors · AS OF SYSTEM TIME · cascade · CTEs"| CRDB
    subgraph CRDB["CockroachDB (one transactional store)"]
      D["documents (encrypted)"]
      N["nodes + VECTOR index"]
      E["edges (graph)"]
      K["subject_keys (crypto-shred)"]
      EV["erasure_events (audit)"]
    end
    API -->|"sign (ECDSA P-256) + PUT (Object Lock / WORM)"| S3["Amazon S3 — erasure certificates"]
    API -->|"embeddings"| FE["fastembed (local, 384-d)"]
    API -->|"generation"| LLM["LLM — local (Ollama) or hosted, BYO-model"]

工作原理

  • 摄取——文档在其主体的密钥下加密存储;LLM 提取实体和关系;节点按名称 upsert(INSERT … ON CONFLICT = 确定性共指去重),并插入边——全部在同一个存储中完成。

  • 提问——余弦 ANN 找到相关实体,递归 CTE 扩展周围图谱,严格基于上下文的提示词仅从该上下文中回答,并在事实缺失时诚实拒绝(这是使遗忘可被证明的属性)。

  • 遗忘——上文所述的事务。

快速开始

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env          # set DATABASE_URL, LLM provider, AWS
python scripts/init_db.py     # apply schema + self-test
uvicorn app.main:app --port 8080

自带模型。 LLM 层与提供商无关——通过编辑 .env(或在应用内模型选择器中)将其指向本地 Ollama 模型或任何托管的 OpenAI 兼容提供商。不锁定任何提供商。

评估

Obliviate 实现了有研究支持的分层删除,而不是朴素的 DELETE:

  • 朴素删除对重建攻击的鲁棒性仅为 ~18%;感知依赖图的分层删除可达 ~94%(ForgetAgent,IJRASET)。

  • API 确认的向量删除仍会让嵌入可从磁盘上的原始索引中物理恢复——Ghost Vectors(arXiv:2606.18497)从文本嵌入中重建出 25.5% 的精确名称和 46.4% 的位置(从图像嵌入中可达 ~99%);对每个主体的密钥进行加密粉碎可将恢复率降至 0%(该论文自己的“Epoch 密钥轮换”修复方案——先加密,再丢弃密钥)。

评估工具(evals/)复现了一个遗忘正确性基准(盲审评分)和一个重建鲁棒性评分,用于比较朴素删除与 Obliviate。

为本黑客松而构建

Obliviate 的 CockroachDB 原生内存引擎是为本黑客松全新构建的——知识图谱以关系表形式存在,向量位于 C-SPANN 索引中,原子事务性 forget、AS OF SYSTEM TIME 证明、每个主体的加密粉碎,以及已签名的擦除证书。将图谱、向量和审计追踪统一到一个 CockroachDB 存储中,正是使遗忘成为单个 ACID 事务、并使证书可从数据库本身验证的原因——而当图谱和向量分别位于两个存储中时,这是不可能的。这种单存储设计是结构核心:单个 ACID 级联、以 AS OF SYSTEM TIME 作为证明机制、对象锁定的加密粉碎证书,以及穷尽的递归 CTE 爆炸半径。

诚实的局限性

  • 擦除仅从存储中移除数据,并不会让 LLM 遗忘其参数化先验(这正是接地提示严格且诚实性需通过行为验证的原因)。

  • 共指基于名称;本应不同的实体可能会合并,反之亦然。

  • AS OF SYSTEM TIME 窗口受集群 GC 窗口的限制;仅追加的审计跟踪和 S3 证书提供了超出该窗口的持久性。

许可证

MIT © 2026 Vinayak Sonthalia

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server providing cognitive memory tools (remember, recall, think, etc.) for AI agents, enabling forgetting, consolidation, and contradiction detection.
    176
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing agent memory with deterministic deletion guarantees, enabling compliant event storage, context retrieval, and audit-proof data management.
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that implements memory with decay mechanics, allowing AI agents to store and retrieve memories that fade over time unless accessed, with a permanent journal for verification.
    3
    MIT