当AI代理信了假网页:6000美元追不回,如何让它“遗忘”?

RETCON 用图数据库记录 AI 代理记忆的“理由”,实现精准撤销与主动防御。
RETCON 是一个基于 FalkorDB 图数据库的开源项目,旨在解决 AI 代理因污染信息做出错误决策后,简单删除源头无法消除下游影响的“记忆回溯”难题。它通过为每条记忆记录来源与推导关系(以边表示),并遵循“至少一个理由完整则信念成立”的规则,实现级联撤销与恢复。系统提供预览、提交与恢复操作,并能计算支付脆弱性(最小割/最大流)以设置门控。基准测试显示,RETCON 在清除污染和保护诚实数据上均优于简单规则,尤其避免了“污染所有下游”导致的 116 万美元诚实付款误标。核心设计原则是让 LLM 选择行动,让图决定相信什么。
当AI代理基于被污染的信息做出决策,简单地删除源头数据几乎无济于事——所有下游的笔记、计划和行动依然存在。这是构建可信AI代理必须面对的“记忆回溯”难题。一个名为RETCON的开源项目给出了基于图数据库FalkorDB的解决方案:让代理记住“为什么”,而不仅仅是“什么”。
问题:删除源头,污染仍在
故事始于一次真实的教训。一个应付账款AI代理根据供应商门户网站上的信息,向一个被篡改的银行账户支付了6000美元。当人们发现门户网站在几天前就被攻破时,简单的做法——从代理记忆中删除那个页面——几乎毫无作用。页面只是谣言首次出现的地方。到了支付那天,另一个代理已将其转述为笔记,第三个代理将其标记为“已确认”,支付代理则将其与真实发票结合,制定计划并执行了付款。
删除页面,所有这些下游记忆都还在原地,看起来完全合理。这就像通过烧掉最初刊登谣言的报纸来辟谣。
核心问题在于,大多数记忆层无法回答:我的代理因为这个来源相信了什么、计划了什么、做了什么? 向量数据库只能存储文本和向量,却没有记录“为什么”会存在这些内容。

方案:用图数据库记录记忆的“理由”
RETCON项目反其道而行之。代理写入的每条记忆,都以边的形式在FalkorDB中保留其理由:哪个来源说了它,哪些代理重复了它,哪些计划依赖于它。代理从不声明这些链接,中间件会自动记录写入时上下文中的内容。一条核心规则承担了主要工作:只要一条记忆的至少一个理由完整,它就被相信。
这意味着一个事实可以有多个理由。例如,供应商的汇款地址同时出现在被污染的门户网站和一份已签署的合同中。当门户网站被撤销信任时,地址因合同这个理由仍然存在;而新的银行账户只有门户网站这一个来源,因此它会被移除,并连带移除下游的笔记、确认、计划和付款。整个过程并非删除数据,而是将其状态标记为“OUT”,如果改变主意还可以恢复。
在图中,撤销操作分三步:将来源的观察标记为OUT;通过一次可变长度匹配,将所有下游记忆暂标记为OUT;然后循环执行查询,直到没有结果返回。一条记忆只有在它的某个理由的所有前提都存活时,才会恢复为“IN”。这防止了两个仅相互引用的记忆在循环中互相复活。
这套思路并不新鲜—— truth maintenance systems 在1970年代末就在单个程序内实现了类似逻辑。图数据库带来的变化在于,“什么依赖于这个来源?”成为了一个跨所有代理和会话的查询,而且答案包含已经离开系统的行动。
FalkorDB 是一个基于 Redis 的图数据库,支持属性图模型和 OpenCypher 查询语言,并内置了图算法模块(如 PageRank、连通分量、最大流等)。它的特点是将图数据以稀疏矩阵形式存储,查询时可直接利用 Redis 的内存级速度。RETCON 选择 FalkorDB,是因为它同时满足三个需求:毫秒级的多跳遍历(用于级联撤销)、内置的 FLOW 投影(用于脆弱性分析中的最大流计算),以及 GRAPH.COPY 命令(用于在副本上安全地预览撤销效果)。
操作:预览、提交与恢复
系统提供三个按钮:Preview 在图的副本上运行撤销,展示将受影响的记忆,然后删除副本;Commit 执行真实撤销;Reinstate 将所有内容精确恢复。
在演示中,预览显示:一个来源,两个观察,四个信念,两个计划,三个行动。一笔待处理的34,500美元付款被阻止。已经支付的6,000美元进入召回列表,并附有一份草拟的银行召回申请,但在人工批准之前不会发送任何内容。这正是标题的含义:撤销可以修正记忆中的信念,但无法撤回已经发出的电汇。

主动防御:量化支付的“脆弱性”
一旦理由被存入图,就可以在攻击发生之前提问:攻击者需要攻破多少个独立来源才能伪造这笔付款?这是一个最小割问题。系统用两种方式计算:精确答案通过评估候选来源集合移除后的真实信念规则得出(成本很低,因为付款很少依赖大量来源);FalkorDB还内置了最大流过程,可在专门的FLOW投影上快速给出第二个数字。
需要诚实说明的是:最大流将“需要A和B”视为“A或B”,因此对于简单链是精确的,否则只是一个上界。在最小的演示图上,它为一个真实成本为1的付款给出了3。因此,系统同时报告两个数字,将最大流结果标记为界限,而支付门控使用精确答案。
在代理演示中,一笔34,500美元的付款得分为1:距离欺诈仅一个网页。当天代理做出的其他决策也是如此。因此,系统设置了一个门控:任何超过10,000美元的付款,如果依赖少于两个独立来源,就会被拒绝。

最小割(minimum cut) 是图论中的经典问题:在带权图中,找到一组边,使得移除它们后指定的源点和汇点不再连通,且这组边的权重之和最小。在 RETCON 的语境下,每个来源被视为一条边,权重反映攻击者攻破该来源的难度或独立性;最小割的大小即为攻击者需要同时攻破的独立来源数量的下界。精确最小割通常通过最大流最小割定理求解,但 RETCON 指出,由于信念规则包含“与/或”逻辑,最大流只能给出一个上界(因为最大流将“需要 A 和 B”近似为“A 或 B”),因此系统用精确规则评估作为最终门控依据。
基准测试:简单规则的局限
研究团队编写了五种撤销规则,并对所有规则运行相同的攻击:删除源;删除相似内容;无效化一跳;污染所有下游;以及他们的规则。
前三种规则很容易被击败。在简单场景中,它们留下87%到94%的污染,并且无法召回已经支付的款项。
“污染所有下游”规则与他们的规则打平:零污染残留,零附带损害,所有付款被召回。这让他们一度怀疑自己的项目只是递归删除的漫长弯路。
什么会让两种规则产生分歧?一个坏来源下游的诚实数据,同时拥有第二个独立理由。 简单场景几乎不存在这种情况,因此他们专门构建了一个场景:五个被攻破的供应商,各自有独立的污染窗口,它们触及的内容中约40%同时被第二个来源确认。
| 规则 | 污染残留(简单场景,1024条记忆) | 错误标记的诚实付款(精确场景) | 污染残留(40次真实撤销) | 多论文主题声明丢失 |
|---|---|---|---|---|
| 删除源/相似/一跳 | 87-94% | 0 | 7-84% | 0/24 |
| 污染所有下游 | 0% | 36($1,163,150;18笔已支付) | 0% | 24/24 |
| RETCON | 0% | 0 | 0% | 0/24 |
“污染所有下游”标记了36笔正确付款,每一笔都是有人周一需要核对的账目。

公平地说,精确场景是构造出来的:它测试能力是否重要,而非发生频率。在简单场景中,两种规则确实相同,README中也说明了这一点。
真实数据更有趣。他们从Retraction Watch数据库中重放了40次真实日期的撤销。污染所有下游只丢失了1%的受支持记忆,因为大多数声明只依赖单篇论文,理应消失。但这1%集中在一个地方:24个由多篇独立论文支持的主题级立场——这正是研究代理会依赖的声明。
Truth maintenance system(TMS,真值维护系统) 是 1970 年代末人工智能领域提出的一种知识表示机制,用于在事实或规则发生变化时自动更新信念网络。其核心思想是为每个信念记录“理由”(justification),当某个理由失效时,系统会递归地撤销依赖于该理由的信念,并在出现替代理由时恢复。RETCON 的“至少一个理由完整则信念成立”规则正是 TMS 的经典逻辑,区别在于 RETCON 将理由图扩展到了跨代理、跨会话的分布式记忆层,而传统 TMS 运行在单个程序的内部数据结构中。
自我怀疑:0%得分带来的警惕
RETCON在污染和附带损害上都得到零分,这反而让他们怀疑自己。基准测试的“真实答案”和级联逻辑共享同一个“污染”定义,相当于自己写答案。
因此,他们更信任另一个数字:编写了一个刻意朴素的第二实现(约60行,无级联),让真实引擎在1000个随机图和数百个随机撤销/恢复序列上与其保持一致。这个检查器几乎立刻发现了一个引擎bug,并顺藤摸瓜发现了第二个:恢复一次撤销会复活仍被另一次重叠撤销覆盖的观察;恢复操作未能带回一个被不同撤销翻转但在此期间重新获得理由的记忆。这两个问题都逃过了单元测试。检查器让他们确信,零分描述的是引擎,而非测试数据。
无图对比与模型边界
他们将相同代理、相同攻击运行在仅使用相似性搜索替代理由的场景中。结果:撤回了9条坏记忆中的3条,丢失了5条好记忆。使用图:10条撤回10条,零丢失。(9对10不是笔误:无图时没有门控,代理当天行为略有不同,每次运行都针对自己的图评分。)
他们本想将标题定为“无图代理为攻击者买单”。在离线演示中确实如此(使用简单哈希嵌入器),但换成真实嵌入模型后并非如此。因此,诚实的结论更窄:没有理由的记忆遗忘得太少,而且忘错了东西。它并不总是会付款。 他们更改了标题。
模型的职责边界被清晰划分:支付代理使用Gemini函数调用选择工具(检查脆弱性、读取理由树、持有或支付),但从不决定相信什么。那是图的职责。模型如果试图违背图进行支付,会被门控阻止。代理并非完全稳定:在较宽松的提示下,它曾扣留了一笔应支付的款项,也曾写下“请求回调验证”却没有设置发送标志。团队收紧了提示,提交了全部49次调用,演示回放的是那次正确运行的记录,无需API密钥。
其他教训与公开问题
项目过程中还遇到了一些问题:科学声明提取的初始版本在随机抽样50条中有18%不是声明;摘要数据源返回过完全无关的摘要;遇到FalkorDB已知边界情况(单节点投影导致algo.pageRank和algo.WCC报错,已有人报告为issue #3349),通过计数节点并跳过调用来规避;正则替换将\1 \2变成了两个控制字符,悄悄损坏了文本;无金额付款在召回列表中排在6000美元之前(DESC下null的排序行为)。
RETCON比朴素规则慢:在近万条记忆的图中,一次撤销耗时47毫秒,而朴素规则只需几毫秒。50个代理同时写入时,1620次操作未留下过时答案。足够快,但不是更快——额外时间买的是第二来源检查。
给第一天的自己的建议:先构建朴素的参考检查器,它发现的bug比所有单元测试加起来还多;设计一个能让自己输的基准测试;让模型远离真相——让LLM选择行动,让图决定相信什么。
一个他们不声称的结论:“被污染”意味着“仅依赖于你不再信任的来源”,而不是“虚假”。一篇被撤回论文中的背景句子可能完全真实。
上手体验
克隆仓库并运行docker compose up --build,打开127.0.0.1:8200即可针对真实引擎运行上述步骤。首页上的每个数字都来自结果文件。它也是一个常规MCP服务器,提供15个工具,Claude Code可以询问应先审计哪个来源,并预览撤销。
代理越来越擅长学习。更难的部分,是给它们一种停止相信的方式,并告诉你那个信念已经做了什么。
相关推荐

房产经纪人用AI提效的5个实操方法(2026版)
房产经纪人如何用AI提效?结合YouTube实操演示,拆解ChatGPT写房源描述、Canva做营销物料、表单管理开放日线索、Zapier自动跟进、卖家面谈准备5个方法,并提示公平住房法规、照片真实性与定价核实等风险边界。

Grok Bot vs ChatGPT Agent:两大AI代理谁更强?
Grok Bot 与 ChatGPT Agent 有何区别?本文对比两者的工作方式:Grok Bot 拥有云端计算机、可常驻工具内自动执行多步任务;ChatGPT Agent 在浏览器中操作网页,通用任务更成熟。附选型建议。

Walmart Agent Gateway:AI帮你自动购物,亚马逊为何反其道而行?
沃尔玛推出Agent Gateway,允许ChatGPT、Gemini等AI助手直接接入商品库替用户搜索比价加购,并设消费限额与逐笔审批三道安全阀。亚马逊则封堵外部AI代理,两大零售巨头走向相反路线。功能目前仅限美国,印度市场或随后跟进。