AI 记住了,不代表它这次会用:把记忆分成三层
明明让 AI 记住了偏好,换个任务它还是忘。问题可能出在存储、读取或适用范围。把本次任务、项目事实和长期偏好分开,再给记忆加上来源与核实条件,才能减少重复交代。
我希望 AI 能记住一些事。比如回答用中文,改代码先看项目约定,做完事情告诉我验证了什么。这些要求每次重新说,实在有点像每天早上都给同一个同事办入职。
但“请记住”之后,还有一个容易被忽略的问题:它究竟把什么放到了哪里?下一次,又靠什么找回来?
如果只看聊天里的那句“好的,我记住了”,这两件事都没有答案。要判断记忆有没有用,我更愿意追问:保存在哪里,这次读到了没有,读到之后适不适用。
存在硬盘上,和摆在桌面上
我把模型处理当前任务时能看到的材料想成桌面。用户刚说的话、工具读回来的文件、历史对话的一部分,都可能摆在上面。模型生成回答时,依据的是实际送进本次输入的内容。
外部记忆则像柜子。里面可以存很多笔记,但柜子里的东西不会因为“已经保存”就自动出现在桌上。还需要一个读取动作:应用主动附带一段偏好,工具检索相关笔记,或者 Agent 按文件路径打开资料。
这也解释了一个常见误会:给助手记下一条事实,通常不等于现场修改了模型参数。很多产品做的是在模型外保存信息,再在后续交互里取用。具体怎样保存和检索,要看产品实现,不能把所有工具的“记忆”理解成同一回事。
Anthropic 的上下文工程文章介绍过结构化笔记:把信息写到上下文窗口之外,需要时再读回来。这说明了持久存储和当前上下文的分工,也提醒我不要把“有文件”当成“本轮已加载”。

假设我让助手整理一份读书笔记。它记得我写代码时喜欢先跑测试,这条偏好此刻并没有帮助。反过来,它虽然存着“读书笔记要区分原文和个人理解”,却没把这条找出来,回答还是可能混在一起。
前者是拿来了不相关的东西,后者是相关的东西没有拿来。两种情况,都不能只靠一句“记得牢一点”解决。
我会先分清三种寿命
下面这三层,是我组织资料时采用的办法,不是某个产品统一规定的技术架构。判断标准也很朴素:这条信息能用多久,换个任务还要不要用?
第一层是本次任务。例如“这次只改首页”“先给草稿,今天不要发送”“刚才的第二个方案被否决了”。这些是当前工作的边界和进度,应该跟着任务走。任务结束之后,它们不该悄悄变成永久偏好。
如果把“今天不要发送”记成“永远不要发送”,后面每一次正常操作都会被挡住。相反,若长任务中途换了会话,把“不要发送”丢掉,也可能造成真正的误操作。所以这层要保留目标、已完成项、未完成项和限制条件,交接时一起带上。
第二层是项目事实。比如这个仓库如何构建,某个目录为什么不能改,部署之前需要验证哪些页面。这些信息通常比一次对话活得久,却不能随便跨项目使用。
我给一个演示站点写的规则,未必适合另一个手机应用。同样叫“测试”,两边的命令、覆盖范围和验收条件可能完全不同。项目记忆最好靠近项目,入口清晰,让助手开工时知道去哪里找,而不是每次遍历所有笔记。
第三层是长期偏好和可复用知识。比如默认用中文,报告要写清验证范围,引用资料时保留出处。换个项目仍然成立的,才有资格放在这一层。
但“上次部署用了某个地址”显然不属于长期偏好。它是一条可能过期的环境事实,应该留在有范围、有日期的项目记录里。把临时事实提升成全局规则,很容易让一次成功经验变成下一次错误的起点。
用一个小例子试着分
假设我请助手给 demo-notes 加一个搜索框,并补充三句话:默认用中文交流;这个项目用一条固定命令构建;本次只做标题搜索,不搜正文。
第一句是长期偏好。第二句是项目规则。第三句是本次任务范围。
下周我让它做正文搜索,第三句就已经过时了。如果助手翻出旧记录,用“你说过不搜正文”拒绝继续,它看起来记性很好,实际上没有理解记录的适用期限。
我希望留下的记录更像这样:
在上一轮标题搜索任务中,范围限于标题;正文搜索当时未实现。后续是否扩展,以新任务要求为准。
这里没有复杂格式,只是把时间和范围写完整。同一段话从“永远有效的命令”,变成了“可追溯的历史事实”。
再看构建命令。即使笔记写得很明确,也值得在真正构建前对照一下当前配置。项目可能换过包管理器,脚本可能改名。记忆能告诉我先看哪里,不能代替这一次的现场证据。
别把整个柜子搬上桌
有了三层分类,我仍然不会要求助手每次开工读完全部记忆。找一本书需要目录,不需要先背下整个图书馆。
一个够用的入口可以很短:这里放通用偏好,那边放项目规则,历史问题按主题索引。当前要修页面,就先看页面相关记录;要部署,再看部署约定。这样做的目的不是一味缩短输入,而是让真正影响决策的内容更容易被找到。
记录本身也要能被检验。我会尽量给重要事实留下来源、日期和核实条件。例如“某次构建在这个版本下通过”,比“构建没问题”更有用;“改动配置后重新检查”,比“以后都按这个做”更可靠。
这里还要分清两件事:记录用户授权的历史,和得到当前任务的操作授权。过去允许发过一封邮件,不代表以后所有相似邮件都可以自动发送。助手检索到一条旧记录,也不该据此扩大当前任务的范围。
至于密码、令牌和别人的隐私,我不会为了让助手方便就塞进普通记忆文件。工具可以在合适的位置读取连接配置,知识笔记只需说明入口和用途,不必再复制一份秘密。
怎么知道它真的记住了
我觉得最有用的验收不是让 AI 复述“我记得你的要求”,而是换一个任务,看它有没有在正确的时候用上。
可以做一个很小的检查:新开会话,让它完成一件普通工作,观察语言偏好是否生效;换一个项目,看旧项目的规则有没有误带过去;故意更新一条事实,看它遇到新旧冲突时会不会查证。
如果结果不对,顺着三步排查:有没有写入持久存储,有没有被本次读取,是否被错误地用于这个场景。查到哪一步出问题,再改哪一步。没有必要一开始就增加更多记忆,更没有必要把每次失败都补成一条永久禁令。
这套办法也有成本。记忆要清理,索引要维护,旧结论需要失效机制。对于只问一次的简单问题,直接把材料放进对话,往往比搭建一套长期记忆省事。只有那些会反复用到、重新解释很费劲的信息,才值得认真安置。
我想要的不是一个把每句话永久收藏的助手,而是一个知道此刻该翻哪页笔记、哪些旧话需要重新确认的合作者。少重复交代,靠的不只是记得多,还要在恰当的时候用得准。
评论