我开始在 ChatGPT 中跟踪我的锻炼情况。次数、重量、训练感觉如何。几周后，我要求它将今天的表现与之前的会话进行比较。它给了我一个自信、详细的比较。数字是错误的。

不是稍微差一点。错误的。它引用的会话与我实际记录的内容不匹配。我回顾了我的谈话历史。它“比较”的数据并不以其声称的形式存在。其中一些看起来像是我几周前告诉它的内容的有损摘要。其中一些看起来像是发明的。

自然诊断是幻觉。模型编造了事情。我无法证实这一点。 ChatGPT 从未存储过原始数据吗？它是否存储了一些东西然后将其汇总？记忆在会话之间是否发生了漂移？我无法得知系统在我记录这些会话之日相信什么，或者它是否曾经保存过实际的数字。我不能排除幻觉。我也不能排除腐败的可能性。

无法区分才是真正的问题。对于大多数人工智能存储系统，您无法判断您看到的是哪种故障模式。诊断工具不存在。几乎没有人在建造它。

## 两种故障模式，而不是一种

业界有一个词形容“模特说错话”：幻觉。它是所有错误输出的包罗万象的。当代理使用持久内存时，有两种不同的故障模式。他们需要不同的修复。

**幻觉**是模型级别的失败。法学硕士生成的内容没有输入依据。检索结果很好。这一代人出了问题。这些修复是模型级的：更好的基础、检索增强生成、受限解码、验证链。

**内存损坏**是基础设施级别的故障。存储的数据有误。模型忠实地检索它。答案看起来是正确的，因为检索是正确的。检索到的内容发生了变化。

内存损坏通过了每一项为幻觉设计的检查。该段落与查询相符。该模型引用了其来源。输出接地于存储的数据。每个护栏都说答案是基于真实信息的。信息有误。

## 为什么腐败是默认现象

默认情况下，代理内存的每个主要类别都存储可变状态。

平台内存（ChatGPT、Claude、Gemini、Copilot）会覆盖更新时的条目。没有版本踪迹。检索系统（Mem0、Zep、LangChain Memory）在合并时合并或替换内存。

基于文件的系统（markdown、JSON）保持可变，除非您添加 git。 Git 为您提供小型存储库的真实历史记录和差异。对于代理写入的数据，它[在千兆字节规模上的扩展性很差](https://x.com/garrytan/status/2040797478434549792)，并且很少有团队将其视为内存的预​​写日志。

标准数据库（SQLite、Postgres）可以实现事件源、时态表和审计触发器。它们的默认路径仍然被覆盖：“UPDATE”替换该行并且旧值消失。

这些都没有保留[版本化历史记录或防止静默突变](/内存保证)开箱即用。他们中的任何一个*都可以*。几乎没有人*这样做*。

即使是深思熟虑的新设计也可能陷入同样的​​陷阱。 Garry Tan 的 [GBrain 规范](https://gist.github.com/garrytan/49c88e83cf8d7ae95e087426368809cb) 从第一天起就得到了很多正确的信息：SQLite、FTS5、矢量搜索、MCP。该规范仍然重写编译后的事实，而不是附加到它。您的代理重写了 7,471 个合并错误的页面。错误的版本成为规范。没有审计线索。干净的架构，相同的突变模型。

这不是一次糟糕的发射。它是整个品类的标杆文化。采用率、星级和资金跟踪检索指标：k 处的召回率（通常写为 R@k）、精度、延迟、压缩比。这些指标很重要。良好的检索是必要的。当智能体写入自己的内存时，这是不够的。没有广泛使用的基准测试存储数据写入后会发生什么情况。

[MemPalace](https://github.com/milla-jovovich/mempalace) 是一个最近的例子。该项目在两天内就在 GitHub 上获得了 19,000 颗星，“完美的基准分数”。 [独立分析](https://penfieldlabs.substack.com/p/milla-jovovich-just-released-an-ai)发现标题数字是[检索召回指标，而不是端到端准确性](https://github.com/milla-jovovich/mempalace/issues/27)。误导性的发布文案是 MemPalace 的一个问题。激励结构是该类别的问题：检索分数为 19,000 颗星，关于写作完整性的问题为零。 Supermemory、Mem0 和我跟踪的至少十几个其他人在同一个轴上竞争。没有人发布关于存储的事实是否在代理写入一周后保持不变的指标。

对于传统应用程序，可变状态很好。对于代理记忆来说这是一个问题。代理经常跨会话写入，有时会发生冲突。两个会话为同一字段写入不同的值。最后写入获胜。第一个值消失。没有人得到通知。没有任何记录表明它曾经有所不同。

LLM 驱动的总结使情况变得更糟。系统将旧记录合并到新摘要中。摘要取代原文。如果合并是错误的（两个人合并为一个人，一个细节被遗漏，一个歧义问题解决得很糟糕），那么原来的人就会消失。您无法将摘要与它所替换的内容进行比较。被它取代的东西已经不复存在了。

这不是理论上的。当我在擦除后[恢复我的生产数据库](/posts/how-i-lost-and-recovered-6000-memories)时，我有不同日期的备份。我可以比较不同时间的实体状态。一些实体在 3 月 3 日和 3 月 9 日的备份之间存在差异。在仅附加系统中，这两个值都作为带时间戳的观察值保留。在可变系统中，只有最新的才能生存。你永远不会知道早期值的存在。

## 无人运行的审计

大多数团队都会检查是否出现幻觉。他们验证模型的输出是否基于检索到的上下文。他们测试模型是否发明了事实。

几乎没有人检查存储的事实是否已更改。问：

**您能看到发生了什么变化吗？** 如果某个值与上周不同，您能看到这两个值吗？它是什么时候发生变化的，是什么触发了它？

**你能重放过去的状态吗？** 你能重建代理在特定日期所相信的内容，而不仅仅是今天的快照吗？

**您能追踪来源吗？** 对于任何存储的事实，您能否命名创建或更改它的代理、会话和输入？

如果答案是否定的，腐败就无法被发现。并非不可能。无法检测到。它现在可能正在发生。直到下游发生故障并且有人询问该数字来自哪里时，您才会知道。

## 是什么阻止了它

内存损坏是结构性的，而不是模型问题。更好的提示和更智能的检索并不能解决这个问题。修复是建筑性的。

**不变性。** 观察结果在写入后不会改变。新信息就是新观察。旧的留下来。实体状态源自完整的历史记录，而不是单个可变行。

**出处。** 每个事实都携带元数据：哪个代理在何时、从什么输入、在哪个会话中编写了它。当某个值看起来错误时，您可以追踪保管权。当两个代理发生冲突时，您会看到两者并进行选择。

**时间重播。**状态来自观察日志，而不是当前行。你可以在过去的任何时间重建信念。当当前和过去的状态出现分歧时，腐败就会变得显而易见。

这些财产需要花费一些钱。仅附加日志会增长。从历史记录中重新计算状态的成本比读取一行的成本更高。整合的系统正在根据完整的历史记录来交换存储和延迟。不变性以简单的写入和严格的存储来换取可审计性。当智能体写入影响真实结果的记忆时，这种交易是值得的。对于许多生产案例来说，它已经是这样了。

我将这些属性构建到 [Neotoma](https://neotoma.io) 中。我没有预测到每一种腐败情况。我不断遇到可变状态，产生错误的答案，但无法诊断它们。 Neotoma 需要安装时间。它不是零设置。您不能将内存作为普通文件进行编辑。这些都是真实的成本。赌注是，一旦代理编写驱动决策的状态，版本化历史、出处和重播就比便利性更重要。

## 复合风险

腐败会以幻觉通常不会的方式复合。当有人读到并说“那是错误的”时，幻觉的答案常常会消失。一次对话，一次错误。

损坏的内存条目仍然存在。它再次被检索。它影响了后来的决定。我的锻炼比较一次也没有失败。后来的每次比较都基于相同的漂移或缺失数据。每个答案单独看起来都很好。除非我交叉检查自己的记录，否则该错误是不可见的，这违背了代理跟踪器的目的。

将其扩展到真正的赌注。内存中的错误电子邮件意味着每次发送都会发送给错误的人，直到有人注意到为止。错误的金额意味着不止一张错误发票。

损坏存在于内存层，而不是模型。正常调试会漏掉它。该模型有效。检索工作有效。存储的数据是错误的，或者从未正确存储过。您无法快速设计过去的基础设施，从而放弃其自身的历史记录。

## 检查什么

如果您使用代理内存，请尝试此操作。选择您的代理在两周多前存储的五个实体。把它们找回来。将当前值与您认为最初存储的值进行比较。

如果您无法进行比较，则您的系统不会保留历史记录。你是腐败盲人。这并不意味着腐败发生了。这意味着你不知道它是否有。一旦代理商花钱、接触客户或触发现实世界的行动，“我们不会知道”是不够的。

严格的写入完整性基准测试将像这样运行。为 N 个已知值的实体提供种子。运行读取和写入相同实体的 M 代理会话。等一周吧将存储的值与原始值进行比较。

两个分数很重要。 **漂移率：** 在没有明确用户修正的情况下，有多少比例的值发生了变化？ **可检测性：**对于每个变化，系统能否显示它发生的时间、导致它的原因以及之前的值？今天也没有广泛使用的人工智能内存基准测试报告。

该行业对抗幻觉的做法是正确的。更困难的问题已经出现在看起来健康的系统内部，因为几乎没有人检查存储的事实是否仍然是存储的事实。

## 业界何时开始询问

当代理错误有价格标签时，写入完整性就不再是可选的。如今，许多错误都得到了重生或迅速调整。代理越来越多地[在现实世界中付款、发送电子邮件、执行代码和行动](/posts/six-agentic-trends-betting-on)。当代价高昂的失败归因于记忆漂移而不是模型混淆时，事后分析会在“模型是否产生幻觉？”之后添加第二个问题。存储的数据有变化吗？

这种压力不会停留在拥有合规团队的企业内部。 [审计压力会转移到低端市场](/posts/six-agentic-trends-betting-on) 只要错误会造成金钱损失。顾问、独立构建者和小团队将需要相同的答案：系统在产生输出时相信什么？如果你的内存层不能说，那么内存层就是责任。

触发因素是经济因素，而不是哲学因素。第一次公开的事后剖析将责任归咎于记忆的无声破坏，而不是幻觉，这将改变业界谈论可靠性的方式。事后分析是“何时”，而不是“如果”。