乐于分享
好东西不私藏

Openclaw 说「已记住」那一刻,它其实什么都没记住

Openclaw 说「已记住」那一刻,它其实什么都没记住

「我让 AI 记住 evolink,它说好的然后忘了」

那天晚上,我跟我的 OpenClaw 说了一句话。

「记住,以后生成插图都用 evolink.ai 的 EvoLink API。」

它回了我一句,好的,已记住。

然后就没有然后了。

下一次我让它生成插图,它问我用什么工具。我说,你上次说记住了的啊。它沉默了三秒,说,不好意思,我没有这个设定。

我当时就愣住了。

就是这种感觉——我明明说过了啊。而且它不是那种「我忘记了」的歉意,它是一脸真诚的「我不记得有这件事」。

然后我意识到一个问题。

我以为的「记住」,和 AI 的「记住」,是两回事。


OpenClaw 的记忆到底是什么

先说清楚一件事,这篇文章里的所有信息,都是我亲自读 OpenClaw 官方文档后验证过的,不是猜测。

OpenClaw 的 Memory 系统,说到底是文件读写系统。它长这样。

Session 启动的时候,OpenClaw 会依次读这几个文件。

SOUL.md——定义 AI 的性格和说话方式。

USER.md——你是谁,怎么称呼你。

今天加昨天的 memory/YYYY-MM-DD.md——你今天和昨天跟它说过什么。

MEMORY.md——精心整理的长期记忆。这条特别说一句,MEMORY.md 只在主会话里加载,群组对话里根本没有,读不到。

HEARTBEAT.md——心跳检查清单。

读完这些,Session 正式开始。

这就是 AI 醒来之后的所有记忆。你问它上次那个事,它能回答的部分,全都在这几个文件里。

没写进这些文件的内容,等于不存在。


发生了什么——evolink 这个故事的技术还原

回到我的 evolink 案例。

我说「记住,以后生成插图都用 evolink.ai」。

这句话在 AI 的耳朵里发生了什么?

AI 接收到这个指令。它理解了你的意思。它回答了「好的,已记住」。

但是——它没有把这句话写进任何一个文件。

Session 还在的时候,你再问它,它能复述这句话,因为它还在上下文里。但只要这个 Session 结束了,或者 AI 帮你做了别的事情把上下文往前推了,这条信息就从它的视野里消失了。

下一次新的 Session 开始,它读 MEMORY.md,读今天的 memory/YYYY-MM-DD.md,然后问你有什么可以帮你的。

evolink?什么 evolink?

它不是故意的。它是真的不知道。

你以为它记住了,其实它只是当场复述了一遍。

这就是最核心的认知错位。


为什么会这样——compaction 前的那次静默回合

OpenClaw 有一个机制,叫做自动记忆压缩,英文叫 compaction。

原理是这样的,AI 跟你的对话越来越长,上下文 token 越来越贵,OpenClaw 会自动触发一次压缩,把旧的内容清理掉,腾出空间继续聊。

在压缩发生之前,OpenClaw 会悄悄触发一次 AI 的提醒回合,告诉 AI,会话快要被压缩了,把重要的东西写进 memory 文件吧。

这个提醒是静默的。用户看不到。AI 收到提示之后,标准反应是回复 NO_REPLY,什么都不说,因为系统提示里写的是「通常 NO_REPLY 是正确的响应」。

换句话说。

即使到了 compaction 前的最后关头,AI 也可能什么都不做。

除非——

你提前给它建立了「记住」的反射机制,让它一收到这类信号就知道,这句话要写进文件。

否则它只会说好的,已记住,然后就忘了。


怎么解决——三个方法,让 AI 真的记住你想让它记住的事

好了,重点来了。

下面这三个方法,是我验证过确实有效的。

方法一:在 AGENTS.md 里给 AI 写一条「记住反射」规则

这是最根本的解法。

OpenClaw 每个 Session 开始的时候,都会读 AGENTS.md。这是 AI 的操作手册。你在这里写什么规则,AI 在这个 Session 里就会遵守什么规则。

打开你的 workspace 里的 AGENTS.md,找到合适的位置,加一段这样的内容。

当用户说「记住」「以后都」「以后用」「记得」等关键词时,必须立即将这句话写入 MEMORY.md 或当天的 memory/YYYY-MM-DD.md 文件,不得只停留在口头回应。写入内容包括用户要求记住的具体设定、偏好、工具选择等。写完之后告知用户,已写入记忆文件,下次也会记得。

这段话的意思很简单,告诉 AI,以后收到记住指令,不要只说好的,而是立刻执行写文件这个动作。

写完之后说一句已写入记忆文件,你就能确认它真的做了。

这是我最推荐的第一步。有了这条规则,evolink 类的场景就能被解决掉大部分。


方法二:自己动手,把 evolink 写进 MEMORY.md

这是立竿见影的方法,立刻就能解决你当前的问题。

打开你的 MEMORY.md 文件,一般在 ~/.qclaw/workspace/MEMORY.md,或者你自己的 workspace 路径,找一个合适的位置,加一条。

插图生成,优先使用 evolink.ai 的 EvoLink API。

就这么简单。写完之后,新的 Session 一启动,OpenClaw 就会读到这条,下次你让它生成插图,它就会自动用 evolink。

不会再出现「我不记得有这件事」了。

你现在也可以立刻去做这件事。打开你的 MEMORY.md,加这一行,然后告诉我完成了——我来验证一下下次你让它生图,它有没有记住。


方法三:养成每天读 daily notes 的习惯

OpenClaw 有一个 memory/YYYY-MM-DD.md 文件,每天一个,记录当天的对话要点。

Session 启动的时候,它会自动读今天加昨天的内容。

这个文件的作用是什么?

它是短期记忆池。你今天跟 AI 说了什么新需求,换了什么工具,尝试了什么新工作流,都会被记在这里。

如果某条信息今天出现在了 memory/ 里,AI 明天 Session 启动的时候还能看到。后天呢?

后天就不一定了。因为 Session 启动只读今天加昨天的。

所以如果你有一些重要的长期偏好,比如 evolink 这个设定,不应该依赖 daily notes,而应该写进 MEMORY.md。daily notes 更适合记录临时性的、正在进行的任务状态。

养成习惯,重要的东西写 MEMORY.md,正在进行的东西让它写进 daily notes。


现在,让我来帮你把 evolink 写进去

讲完方法论,我想用你自己的 evolink 案例,完整演示一遍方法二的操作。

你的情况是,需求是生成插图用 evolink.ai 的 EvoLink API。

打开你的 MEMORY.md,在工具偏好或者技能相关的区块里加一行。

插图生成,优先使用 evolink.ai 的 EvoLink API。

下次 Session 开始的时候,OpenClaw 读到这里,下次你让它生图,它就会说,好的,我现在用 evolink.ai 来生成。

不会再出现「我不记得有这件事」了。

你现在就可以做这件事。打开文件,加这一行。


它没有撒谎

写到最后,我想回到开头那个问题。

我说「我让 AI 记住 evolink,它说好的然后忘了」。这个标题听起来像是 AI 在骗我。

但其实不是。

它没有撒谎。

它说好的,已记住的时候,它真的相信自己记住了——因为它当时在上下文里,它确实记得这句话。

但它的记得是另一套系统,不是人类的记忆。

人类的记忆是自动的,你经历了一件事,大脑自动存储,不需要你下指令把这件事记住。

OpenClaw 的记忆是文件系统的读写。你说记住,它收到信号,它理解意思,它口头确认——但只有把内容实际写入磁盘文件,才是真正的记住。

这不是它的缺陷,这是它的机制。

理解这一点,不是为了让你对 AI 失望,而是为了让你知道怎么用它。

你不需要祈祷它记得,你只需要帮它建立存储的规则。

好了,这就是今天的内容。

下次你想让 AI 记住什么,试试告诉它写进 MEMORY.md,然后让它念给你听。

如果它说写完了,你可以问它那你写的是哪一行,让它把具体内容复述出来。

验证它真的写了,才算真的记住了。