我想跟你聊聊我意识到某些东西已经彻底坏掉的那一刻。
去年12月,我正在搭建一个 AI SEO 流水线。我们在 context/ 目录下准备了一个详尽的“LLM Wiki”:结构化的架构文档、Agent 可以 grep 的函数索引等等,应有尽有。凭良心说,这_确实_曾是个很棒的系统,直到……上下文污染(context pollution)开始发作。Agent 开始回忆起我们在同一会话中刚刚更新过的陈旧信息。带着全新上下文生成的全新 Agent 会立刻开始胡扯那些一模一样的过时废话。我的上下文窗口填满速度翻了一倍,因为 Agent 在反复重读它已经看过的文件,试图调和那些本不该存在的矛盾。与此同时,我整个人快被气炸了,一边对着 Agent 疯狂爆粗,一边得到它未卜先知般的回复:“您说得完全正确!”(卧槽,我真是比讨厌任何东西都更讨厌这句话)。
Agent 甚至不一定是在撒谎,它甚至都不是你通常理解的那种“犯错”。它只是完全在照着我们构建它的方式做事:检索相关上下文并加以利用。问题在于,“相关上下文”里面夹杂了它自己捏造的垃圾,而整个系统中没有任何机制能区分观察到的事实(observed facts)、推导出的猜测(concluded guesses)和纯粹的胡编乱造(outright fabrications)。
这种情况屡见不鲜。我见过的每一个 Agent 系统都在某种程度上存在这个问题。我越深究原因,就越发意识到我们所有人都在基于一个非常不完整的底层假设进行构建。这个假设就是:记忆是一个检索问题。找到正确的 chunk,塞进上下文窗口,让模型自己去琢磨。RAG、向量数据库、语义搜索……整个生态系统都围绕着一个问题转:我们如何找到相关信息?而那个更难的问题——那个压根没人真正去问的问题——是这些信息到底是否真实。而这正是杀死 Agent 的元凶。
这就是业内所谓的上下文腐烂(context rot)。
而事实是,标准的修补方法有点像创可贴。在彻底……失效之前,它们看起来还管用。当然,你可以用 RAG,但余弦相似度给你找出来的是最相近的 chunk,这可不等于正确的 chunk;当这个最相近的 chunk 恰好是六周前产生的一段幻觉时,你只不过是把“自信满满地犯错”这一过程给自动化了而已。
你可以使用像 Mem0 或 Zep 这样支持会话持久化的向量记忆产品,挺好,但这些记忆只是一堆扁平的笔记,永远在累积,没有过期机制,没有修订机制,毫无……细腻层次(nuance)。如果 Agent 周一说了“使用 OAuth”,周二又说了“使用 API keys”,这两句话就会永远存在于记忆中,哪一句都不会受到质疑,根据哪句的 embedding 刚好更接近查询词,两句都会被满怀信心地检索出来。即便加上时间戳来提供时间上下文,也依然需要耗费额外的 token 去推理到底哪一个是最新状态。这些方法没有一个能够追踪得出过什么结论、基于什么证据,以及该结论是否依然成立;这还没算上对整个*召回(recall)*环节的质量把控与过滤。这就是断层所在,这就是大家遗漏的东西,而我觉得我终于想明白了其中的原因。
我们从搜索领域继承来的心智模型根本不适用于 Agent。搜索是无状态的(要是我的脑子没突然抽风的话,LLM 本身也是):你发起查询 -> 得到结果 -> 完事。索引并不关心你拿这些结果干了什么,也不关心它们对你的目标而言是否准确。但 Agent……(某种程度上)是有状态的。它们会随时间进行推理,并通过一系列观察与推论建立起信念。如果你不追踪这种溯源关系(provenance),如果你只是把所有东西往向量数据库里一倒就管它叫“记忆”,你得到的就正是我们当下的现状:自信地检索,却什么都不懂的系统。
学术界已经开始意识到这一点了。Google DeepMind 今年的一篇论文探讨了“认知漂移(epistemic drift)”,即校准不良的 AI 系统如何通过自信地提供不可靠信息,随着时间推移反而损害了人类的判断力。还有一项关于多轮推理中“信念偏差(belief deviation)”的研究表明,仅通过检测 Agent 的内部状态何时过度偏离连贯性,就能获得 30 点的性能提升。多个研究团队正不约而同地收敛到形式化的信念修正(belief revision)模型上,因为事实证明,那种仅仅把东西存下来再检索出来的非形式化方法根本无法扩展。
有趣的是,生物学早在很久以前就解决了这个问题。你的海马体(hippocampus)负责对特定情境事件进行快速、稀疏的编码,而大脑新皮质(neocortex)则负责对泛化知识进行缓慢的整合固化;整个系统每天夜间都会运行一套流程,来决定哪些内容可以从“发生过的事”晋升为“我知道的事”。睡眠期间的尖波涟漪(Sharp-wave ripples)、明确的遗忘机制……
大脑并不会试图记住一切,它试图记住的是真正重要的事物,并且拥有专门用来分辨差别的架构。我们现在还没有这种架构。也没人在造它。这个价值 60 亿美元的 Agent 记忆市场,100% 的精力都聚焦在检索质量上,而几乎 0% 关注信念的连贯性(belief coherence)。
!! 技术宅硬核科普预警 :3 !!
不过,正确的方向上已经出现了一些动向。HippoRAG 明确利用知识图谱和 PageRank 对海马体索引理论进行建模,通过认真借鉴生物学机制,在多跳问答(multi-hop QA)上获得了 20% 的性能提升。机器人领域也有关于基于惊奇门控的情景记忆(surprise-gated episodic memory)的研究,其中只有新颖的观察才会被存储,这正是大脑所做的那种显著性过滤(salience filtering)。
Zep 构建了包含情景层和语义层的时间知识图谱。Hindsight 则更进一步,采用了四个独立的记忆网络和冲突解决策略,但矛盾依然只是带上时间戳被保留了下来,而不是在存储前被解决,并且没有任何具体方法可以精确追溯 Agent 当初为什么会说出那番话。
这些都是朝向我们所需架构迈出的步伐,但它们从根本上说依然是检索系统。它们让检索变得更聪明,但它们不追踪信念状态,不在写入时处理矛盾,也不维护可供审计的溯源链。真正困难的部分在于搞清楚你找到的东西现在是否仍然属实,以及它与你所相信的其他一切是如何关联的。所以,这就是我们正在构建的东西。
不过等等,我所说的“信念(belief)”到底指什么?
嗯,它并不等同于一段记忆。记忆是:“她已读不回我。”然而信念是:“她生我气了,因为她已读不回,而她以前从不这样,在她回消息之前我基本敢肯定这点。”看出区别了吗?这主要在于将一段记忆置于过往经历或相关记忆的上下文(无意双关)中并进行解读。
问题就在这里:Agent 本质上无法自然地做到这一点。Agent 所相信的内容必须存在于模型本身之外。你无法在神经网络权重中存储持久、可审计、可修正的信念。容量根本不够——每个参数大约仅 3.6 比特,还要在泛化与记忆之间平分;可解释性也同样不存在,因为叠加态(superposition)意味着神经元编码的是混合体,而不是确切的事实。
从结构上讲,“这个模型对 X 持有什么信念”这个问题根本就无法回答。如果你需要问“为什么 Agent 会相信这个?”并得到一个真实的答案——不是一段生成出来的胡话,而是你可以审计的真实证据链——那么这条证据链就必须存在于某个地方。它必须是显式的、可查询的,并且必须支持修正,因为信念是会发生变化的。
我们称之为外置认识论(externalized epistemics),这只是一种高大上的说法,意思是记忆系统本身需要知道自己知道什么。“Engrammic”这个名字来源于印痕(engram)——即大脑中假想的记忆物理痕迹。我反复强调的区别在于,当今大多数 Agent 记忆都是扁平的,只不过是躺在数据库里的文本,除了临近哪个 embedding 之外毫无结构可言;但我们正在构建的东西是有……某种形状的。溯源与含义被深深烙印在它的存储方式之中。记忆是扁平的,但含义,亲爱的读者……含义是 ✨ engrammic ✨。
它需要追踪自己为什么相信某些事情,在冲突发生时捕捉到它们,并在存入之前理清,而不是事后才发现自己有一半的记忆在和另一半打架。
具体来说,这意味着当 Agent 试图存储“她回消息了,我们没事了”,而“她生我气了”已经存在时,系统不会只是简单地追加一行。它会标记冲突并强迫进行处理。要么旧的信念被取代,并附带明确指向替代它的链接;要么新的观察被拒绝;要么两者都被挂起以等待人工介入。但绝对不会发生的是:默默累积相互矛盾的事实,最终不可避免地再次冒出来把一切搞得一团糟。
这意味着每一个信念都有迹可循:与其说“这是模型生成的”,不如说是“这来自在时间 A、B、C 记录的观察 X、Y、Z,其置信度随时间衰减”。当企业客户质问“为什么你们的 Agent 会对我们的客户说这个”时,你可以通过遍历图谱给出确切回答,而不是耸耸肩摊手。这意味着遗忘是一个你需要真真切切去设计的机制。旧的观察会衰减,过时的上下文会淡出,系统会主动决定哪些东西足够重要从而值得保留。这里的目标不是追求某种所谓的“完美”召回,而是对相关性具备良好的判断力。
这比建个向量数据库难得多,但一旦你的 Agent 面对真实用户和混乱数据在实际任务上运行超过一周,这也是唯一真正行得通的方案。
我认为 AI 的下一个十年关乎信任,而非能力。我们已经证明了模型可以很有能力,但还没证明它们值得被信任;在我见过的每一次部署中,最终都会在信任问题上翻车,因为记忆层压根就不是为此而设计的。
多 Agent 系统让情况变得更糟。当五个 Agent 写入共享状态时,你就会遇到信念层面的缓存一致性(cache-coherence)问题。当 agent 1 和 agent 2 写入了相互冲突的观察时,agent 3 会怎么认为?没人知道,现有的架构也根本不支持内部调和。
世界模型(World models)也让这个问题雪上加霜。LeCun 的 JEPA 研究明确规定了外部记忆是有原因的,机器人领域的 VLA 论文也都实现了外部检索,但它们没有一个具备认识论结构:没有信念状态,没有溯源链,没有矛盾处理。从头到尾全都是检索。
我们公开发布我们的研究,因为这个问题比任何一家单打独斗的公司都要大。技术论文发布在 engrammic.ai/research,核心架构也已开源。我宁愿看到这套系统被正确地构建出来,也不在乎它是不是非得由我们来建。所以,如果你正在从事 Agent 记忆、信念修正、多 Agent 协作或与这一领域相关的任何工作——我。们。非。常。想。听。到。你。的。声。音。
我们正在研究层面积极寻找合作者。有太多的未知领域需要探索,而认真思考这件事的人却远远不够。随时联系我们、翻翻论文、在仓库里提 issue。这件事情意义重大,大家一起把它搞明白也更有意思。
我有资格解决这个问题吗?老实说,大概没有。但我还是会去尝试吗?那必须的。总得有人来做这件事,不如就让我来吧。目前的路线——一味扩大检索规模并寄希望于连贯性会自发涌现——根本通向不了什么好结果。它只会带来流利、自信却错得离谱的 Agent,而且这种错误你无法调试、无法审计,当监管机构质问你的系统为什么对别人说了假话时你也根本解释不清。当然这里还有对齐(alignment)的问题,但我留到下一篇博客再聊,简单来说(tldr):与人类对齐的智能,可以从那些以与人类相同形式思考的系统中涌现出来——也就是以认识论(epistemically)的形式。
最后我想说:在智能值得被信任之前,它必须先学会怀疑。这就是我们正在构建的东西……怀疑。
题图来自 cosmos.so。