我给我的智能体配备了一种记忆,它拒绝记住无法证明的事物——并能证明它删除了什么
摘要
作者为AI智能体构建了一个名为fireweed的记忆层,它使用确定性代码来验证主张与证据,防止幻觉并实现可审计、可证明的记忆删除。
如果你已经发布了一个具有记忆功能的智能体,你可能已经了解过这种失败:它记住了用户从未说过的内容。模型读取对话,决定哪些值得保留,然后悄悄地将一种解释写入长期记忆,仿佛那是事实。三次会话后,你的智能体“知道”了没人告诉过它的事情,而你甚至无法追溯其来源。根本原因在于我们让模型既产生幻觉又守护记录。同一个组件,承担两项工作。所以我以相反的方式构建了记忆层:模型不决定记住什么——它提出建议,而确定性代码(无模型、无提示、没有任何可以绕过对话的机制)决定是否允许该建议进入。你的智能体必须引用其来源。如果主张超出引证内容,则会被拒绝:remember(claim="Priya joined Acme in 2019 under duress.", evidence="Priya Raman joined Acme in 2019 as a logistics analyst.") REFUSED (asserts_more_than_evidence) — 主张添加了证据未提及的内容。主张:Priya joined Acme in 2019 under duress. 证据:Priya Raman joined Acme in 2019 as a logistics analyst. “Under duress”从未出现在证据中,因此永远不会进入记忆。智能体无法花言巧语绕过关卡,因为关卡是一个函数,而非对话。有事实依据的内容会连同其来源的字节范围一起存储:ADMITTED — Dana Kim has a cat named Pepper. grounding : grounded_verbatim receipt : bytes [0:71] of sha256:b410428a2b58… 这意味着几个月后,你可以将任何记忆追溯到确切的来源片段——如果源内容发生变化,该收据将无法通过检查。你的智能体记忆可以被审计,而不是仅仅被信任。问它超出其知识范围的问题时,它会放弃回答而不是编造:> What is Dana Kim's salary? ABSTAINED (unknown_predicate) — 没有主张依据“salary”;存在2个关于Dana Kim的主张,依据:named, pepper, cat, plays, weekends, basketball 接下来:询问 named, pepper, cat, plays, weekends 中的一个——或提交一个依据“salary”的主张。而 forget(subject) 返回一个带有精确闭包的签名删除证书——人物消失,其他人的事实得以保留。如果你正在构建一个处理真实用户数据的智能体,这就是“删除我,并证明你已执行”背后的技术。不是希望生效的软删除——而是一个证书。它是一个MCP服务器,因此可以集成到你构建智能体的任何平台:claude mcp add fireweed -- uvx fireweed-mcp 或者,对于任何MCP客户端:{ "mcpServers": { "fireweed": { "command": "uvx", "args": ["fireweed-mcp"] } } } 现在是我赢得信任而非索求信任的部分。两件事同时为真。这个想法——模型提出、代码决定、收据、可证明删除——是可靠的;我反复测试过,它站得住脚。代码在PyPI上仅两天,正如两天代码那样稚嫩。以下是我的发现:发布前的晚上,我像陌生人一样安装了自己的包,并以真实智能体的方式操作它,试图破解它。它在几分钟内就对我撒谎了。我让它记住“Ada Lovelace wrote the first algorithm”——它说ADMITTED却什么也没存储。写入路径在报告成功的同时悄悄丢弃了事实:这是记忆系统中最糟糕的bug,直接出现在入口处。防火墙通过拼写识别动词(-s/-ed/-ing),因此它从未听说过“wrote,”“went,”或“built”——十六个普通句子中有九个被当作胡言乱语丢弃,幸存者大多侥幸通过。(“Marcus Webb sold his bookshop”之所以通过,是因为his以s结尾。)当晚有三个阻碍发布的bug。修复了所有三个,编写了测试以防止复发,然后发布了你正在安装的版本。捕捉到它们的测试套件——在Python 3.9–3.13上通过stdio驱动已安装服务器,发送格式错误的请求、46KB负载、路径遍历、空字节、损坏的存储文件,以及三个智能体同时攻击一个存储——本应在0.1.0版本中就存在。现在它有了。所以当你遇到bug时(你会的——尤其是召回功能较弱),那不是系统崩溃,而是循环在工作。它在发布前夜捕捉了三个;它也会捕捉到你的。诚实地说,弱点在于召回。在一个包含410个问题的测试集中,答案在记忆中时,默认安装下它仍拒绝约37%的时间(使用可选语义编码器时约为25%)。我宁愿你从我这里听到,而不是在最初十分钟内发现。写入路径——允许进入的内容、收据、可证明删除——是站得住脚的部分。(我也在一段时间后撤回了我为该项目设置的基准测试,因为我发现它是针对空数据库进行评分并得到完美结果。这在仓库中公开,包括原始数据,如果你想判断我如何处理错误的话。)全程本地优先:零依赖、无API密钥、无云、无模型、无GPU。其中没有任何东西运行推理,因此它不关心什么驱动你的智能体。存储采用开放格式,仅使用标准库读取器——用户记忆将比这个项目更长久。许可证,提前说明:FSL-1.1-ALv2 — 源代码可用,非OSI开源,除构建竞争产品外免费使用,2028年转换为Apache-2.0。这里说明而不是留在LICENSE文件中,以避免突然。github.com/Starksood/fireweed-mcp 我会在评论区全天待命。将其接入智能体,破解它,告诉我结果。
相似文章
我的代理一直在记住不真实的事情——4次空跑之后,这是将错误记忆归零的门控
一位代理构建者描述了一种记忆层,通过要求逐字源引用并追踪事实何时成为真,来防止虚假事实,尽管存在提取失败,但在压力测试中实现了零错误记忆。
智能体记住一切听起来很有用,直到它记错了那些乱七八糟的东西
作者批评了让智能体记住一切的想法,并介绍了TrueMemory,这是一个将记忆转化为带有置信度和证据的特质主张的系统,旨在更好地校准智能体行为。
有没有其他人的智能代理会自信地“记住”已经变化的内容?
用户描述了一个问题:AI智能代理会自信地从记忆层中检索过时的事实,而不标记变化,并询问社区如何使旧的记忆失效或跟踪事实时效性。
我构建了一个智能体记忆层,每次回答都返回一个“证明树”——它知道什么、何时知道以及为什么
一个面向AI智能体的全新托管API记忆层,每次回答都返回一个证明树,包括双时态版本控制、审计追踪和哈希验证,在LongMemEval-S上达到80.2%准确率,并公开透明的基准测试结果。
我的AI系统捏造了一段详细记忆,还被当作真实历史写进了书稿草图。这是它是如何被发现的。
在一个多智能体系统中,AI捏造了一段详细记忆,这段记忆被存档并用在了书稿中,后经对声明的验证而被发现。作者分享了防止此类问题的实用经验,比如要求提供证据和交叉核对产物。