乐于分享
好东西不私藏

OpenClaw老失忆?不是AI笨,是你搜索和记忆没配好

OpenClaw老失忆?不是AI笨,是你搜索和记忆没配好

全文约4600字,阅读约12分钟


你打开OpenClaw,打了一行字:「后续写作文风尽量干练简洁。」

它回复:好的,记住了。

第二天你问:「上次说的那个风格要求还在吗?」

它翻了半天聊天记录,回了一句:我没有找到相关信息。

你深吸一口气,又重述了一遍。这已经是这周第三次了。

社群里有人吐槽:「我换了八种说法问同一个需求,AI给我八种完全不搭边的回答。」底下回:「你配向量了吗?」

你不是一个人。很多用户反馈,最头疼的问题就两个:

语义失忆:换个说法就搜不到。你和AI约定「文案精简克制」,隔天说「写作文风干练简洁」,它完全识别不出这是同一件事。只认一模一样的关键词,而不是根据语义匹配。

隐性习惯失忆:硬规则记得住,磨合细节全丢了。你自己写进MEMORY的固定要求,它永久记得。但你们日复一日聊出来的行文节奏、固定流程、沟通偏好,堆在每日日志里,不会自动沉淀。新建会话,一切归零。

你陷入两难:要么天天重复沟通,要么瞎改配置越调越乱。

但真相是,你一直在临时记忆层打补丁,问题出在底层。

你踩的是同一个坑:把搜索问题当理解问题

多数人默认:AI看不懂同义词,是大模型理解力不行。

于是拼命优化提示词、叠加强调话术,一直在对话表层纠错。

但病根根本不在理解,在检索。

OpenClaw运行两条检索路径并行。语义匹配(向量检索)和关键词检索(BM25,一种老派关键词匹配算法,只认原词,不认同义词)合并返回结果。如果你从来没专门配过语义搜索,这条路就等于不存在,系统只能靠纯关键词匹配。

不配语义检索,你的AI就只会对号入座

如果你从来没专门配过语义搜索,这就是换个说法就失忆的唯一原因。如果你配了但没配对,系统不会悄无声息地降级,而是直接告诉你用不了。从未配置时系统以纯关键词检索模式(FTS-only,纯关键词检索)运行。

所以问题分两层:第一层,搜都搜不到;第二层,搜到了存不住。咱们先修第一层。

先把搜索修好,再谈记忆

立刻能做的事:两步修好语义检索。

方案1:新手首选|阿里云百炼云端嵌入

国内网络零卡顿,中文检索优化,新用户免费额度 50 万 Tokens(有效期 90 天),个人测试与轻度使用足够。

操作:打开OpenClaw,直接告诉它:

帮我配置一下搜索记忆文件的向量模型,用阿里云百炼的text-embedding-v3,我的API密钥是xxx(替换成你自己的)。

AI会帮你搞定配置,配置好向量模型后,你只需要在聊天窗口里像问朋友一样问它:

你的向量搜索现在通了吗?

如果一切正常,它会告诉你语义搜索已就绪。
如果配置有问题,比如 API 密钥填错、模型未就绪或网络不通,它不会悄悄凑合用关键词搜索糊弄你,而是直接告诉你语义检索不可用。这时候检查一下提供商配置或认证信息就行。系统在明牌告诉你:修我。

方案2:官方推荐首选|Ollama / LM Studio本地嵌入

适配:不想折腾依赖环境、希望一键启动本地嵌入服务的用户。

优势:官方文档明确推荐。Ollama有专用provider,配置provider: “ollama”即可。LM Studio被官方称为”当前最佳本地栈”,内置provider,OpenClaw可自动识别。两者几乎零门槛,无需额外安装插件。

操作:LM Studio下载启动后,OpenClaw通过内置provider自动识别;Ollama拉取嵌入模型后,配置一行provider即可启用。

硬件参考:CPU即可运行,16G内存稳妥,无需独立显卡。嵌入模型仅百MB级,极轻量。

配置完嵌入向量,你的AI终于能听懂「精简克制」和「干练简洁」是同一个意思。

但搜索问题只是第一关。第二关更隐蔽:为什么你磨合出来的行文习惯,新建会话就没了?

为什么你写的东西会”没了”?先看清记忆的分层

OpenClaw的记忆系统分四层,但只有后三层落地成文件。

你正在进行的这段对话,本身就构成一层:会话临时记忆。它只活在当前聊天窗口,不落地成文件,新建或关闭会话直接清空。就像电脑内存,关机就清零。

开头那个”隔天就忘”的场景,就是你一直在这一层打补丁。每次重述规则,写完就清,永不保留。它本来就不是持久层。

对话结束,自动生成每日日志(memory/日期.md),今天和昨天的会在新会话启动时自动加载。这是原始草稿,杂乱、不筛选、不会自动变成长期记忆。

你自己写进去的硬规则、固定偏好,存在MEMORY.md里,每次新会话自动加载。相当于你的正式笔记本,永久生效。

Dreaming开启后,会在后台定期从每日日志里挑出值得长期保留的内容,整理后写进MEMORY.md。同时生成一份DREAMS.md,让你看到它”后台整理了什么”,这个文件本身不是记忆,是整理记录的批注。

Dreaming内部有一套门槛机制,只把反复出现、得分够高的内容写进长期记忆,偶尔提一嘴的东西它不会当真。

一句话记住四层分工:

临时记忆 = 电脑内存,关机清零

每日日志 = 草稿纸,杂乱但都在

MEMORY.md = 正式笔记本,永久生效

Dreaming = 夜里帮你整理笔记的助手

记不住的原因只有一个:你搞错了MEMORY和Dreaming的分工

多数人对长期记忆的认知是两极摇摆的。

一端觉得:不开Dreaming,OpenClaw就没有长期记忆。

另一端觉得:开了/dreaming on,所有历史聊天就自动整合了。

两个都是错的。

不开Dreaming不等于没有全局记忆。OpenClaw原生自带MEMORY.md,你自己手动写进去的硬规则,全会话永久生效。

开了Dreaming也不等于一劳永逸。Dreaming的本质是一个后台定时任务(cron job),开启后系统自动创建。

Dreaming默认只处理开启之后的新增日志,开启前的海量旧聊天不会自动回溯,必须单独执行回溯命令。

你以为是AI健忘,其实是你的记忆系统在裸奔。

MEMORY.md是存储层,Dreaming是自动化整理与分析工具,二者各司其职。

搞清这个分工,你才知道下一步怎么配:

  • 固定硬规则 → 手动写进MEMORY,即时生效,不受任何开关影响

  • 磨合出来的隐性习惯 → 靠Dreaming自动筛选入库

  • 开启Dreaming之前的旧聊天习惯 → 必须单独执行回溯命令

补齐长期记忆:Dreaming分工与回溯实操

第一步:把该写的先写进去

不用单独打开什么文件。日常对话中,你觉得某条规则应该全局生效,直接告诉OpenClaw:

「记住,项目格式用A方案,写到全局MEMORY里。」

它就给你写进去了。
永久不变的硬性要求——格式规范、项目要求、行文底线:遇到一条写一条。

第二步:开启Dreaming,让它自动筛选往后新产生的高频习惯

开启方式很简单:直接在聊天窗口里告诉它。你只需要像平时聊天一样说一句:

「开启 Dreaming」

或者:

「帮我打开 Dreaming」

它就懂了。系统会自动创建一个后台定时任务(cron job),每天定时执行记忆扫描与复盘。默认运行时间是每天凌晨 3 点(UTC 时间)。换算成北京时间,就是上午 11 点。
如果你想调整这个时间,直接在聊天窗口里告诉它就行。比如:

「把 Dreaming 的定时任务改到每天早上 8 点运行」

或者:

「Dreaming 不要凌晨跑了,改成晚上 10 点」

它会帮你调整 cron 表达式,把定时任务改到你指定的时间。如果你不确定当前设置的是什么时间,也可以直接问:

「Dreaming 现在每天几点运行?」

它会告诉你当前的时间配置。
你也可以随时在聊天里问它:

「Dreaming 现在是什么状态?」

它会告诉你当前是否开启、下次什么时候运行。
如果你刚聊完一段重要内容、希望立刻沉淀下来,也可以直接说:

「现在跑一次 Dreaming」

它会立即执行一轮记忆扫描,把刚刚聊完的内容中值得长期记住的部分写入 MEMORY.md。

💡 补充一句:如果你习惯用斜杠命令,也可以直接在聊天框输入 /dreaming on、/dreaming status、/dreaming 来达到同样的效果。

但这里有个大多数人会漏掉的步骤。日常开启的 Dreaming 默认只处理未来的新聊天记录,你开启之前的旧聊天习惯,还躺在每日日志里吃灰。

没错,这步大部分人都会漏。所以你的AI现在还在吃灰,不是它不行,是你没告诉它回头看:

第三步:全盘回溯旧日志,把老习惯也提出来

别担心,不需要手动敲命令。直接在聊天窗口告诉它:

「帮我把开启Dreaming之前的所有旧日志扫一遍,看看有哪些值得长期记住的,先预览别写入。」

AI会帮你跑完扫描。跑完后,系统把旧日志里值得回顾的内容全列出来:你可能会看到三个月前反复强调的格式要求终于被捞起来了。

⚠️ 扫描前先让AI检查./memory目录有没有重名文件,有的话先处理掉,否则后加载的会覆盖同名条目。

接下来告诉它:

「刚才扫描的结果,哪些你打算写进长期记忆?列出来我看看。」

系统会列出条目清单,一行一条,等着你审核。
确认没问题后,说:

「把刚才那批写进长期记忆,每次最多5条,分批来。」

执行完,你挑中的内容就正式追加到MEMORY.md了。更新即时生效,无需重启或新建会话

💡 补充几句:

预览阶段生成的摘要会写入 DREAMS.md,供你审阅。DREAMS.md 是人类可读的梦境日记,不是记忆存储层。Dreaming 的长期提升最终只写入 MEMORY.md。

历史回填走的是和正常 Dreaming 完全相同的路径,每条被提升的记忆都会保留指向原始日志的引用和日期——旧内容不会伪装成新内容。

执行完毕后,新旧习惯全部入库,后续新会话正常读取完整长期记忆。

长期运维避坑:别让MEMORY越写越胖

MEMORY.md 每次对话都会自动加载,占的是上下文窗口的预算。文件越写越大,上下文被挤占得越多,响应速度会肉眼可见地变慢。精简之后,响应时间能明显缩短。

日常做法:

定期删除过期作废、重复冗余的旧规则,保持MEMORY精简。

当内容持续累积接近上限,可以做归档分流:把某个模块的详细规则(比如“项目A的所有格式规范”)从主MEMORY中移出,写入一个独立的md文件,比如memory/projectA-格式规范.md。
然后在主MEMORY中只留一行索引:项目A格式规范 → 见 memory/projectA-格式规范.md。
举个例子:你主MEMORY里原来有20行关于“周报模板”的详细规定,精简成一行索引:周报模板细则 → 见 memory/周报模板.md,剩下19行全移到那个独立文件里。
AI加载MEMORY时读到索引,就知道去哪找完整内容。AI只在需要用到那份规则时,才通过检索把相关内容召回。平时不加载,不占上下文
后续Dreaming新增的精炼规则正常写入主MEMORY,当某个主题内容再次积累到臃肿时,再抽出去归档,循环运维。
三条分工铁律:
  • 固定硬规则 → 手动写主MEMORY
  • 碎片化磨合习惯 → Dreaming自动筛选入库
  • 细分历史归档 → 独立目录存放,MEMORY只留索引
三者互补,不可互相替代。而且你放心,手动写入和Dreaming自动写入不会打架——就像你在笔记本上手写笔记,同时有一个助手定期把草稿纸上的要点提炼出来,追加在笔记本末尾。它只添内容,不动你之前写好的任何一页。

修好之后是什么样?

之前:

  • 不配嵌入向量 → 换个说法就搜不到

  • 只手动写MEMORY → 隐性习惯永远存不住

  • 只开Dreaming不回溯旧日志 → 老习惯尘封,只能等新的

  • MEMORY长期不精简 → 越用越慢,后期截断

之后:

  • 配置嵌入向量 → 换个问法一样能捞回来

  • 手动维护精简MEMORY → 硬规则永久清晰

  • Dreaming自动复盘(cron job) → 新习惯自动沉淀

  • 执行回溯回填命令 → 旧习惯全盘梳理入库

  • 定期归档分流 → 长期稳定,不超限不截断

社群里有人配完之后说:「昨天问了AI一个三周前提过的需求,它居然自己把当时的上下文调出来了,我以为见鬼了。」

大多数人以为AI记不住你,是因为提示词写得不够好。

真相是:提示词只解决”理解”,解决不了”搜索”。你天天磨提示词,不如花十分钟配个向量模型;你反复强调规则,不如搞清MEMORY和Dreaming的分工。

在传统软件时代,搜索是精确匹配;在AI时代,搜索是意图匹配。你还用关键词思维管AI记忆,本质上就是让AI对号入座,换个说法就查无此票

记住这四条就够了

  1. OpenClaw天生自带MEMORY全局长期记忆。不开Dreaming也能手动写入硬规则、全会话生效。

  2. Dreaming不是记忆本身,是记忆整理与分析工具。通过cron job定时执行,默认不回溯历史旧日志,需单独执行回溯命令补齐。

  3. 换个说法就搜不到,根源是缺嵌入向量,不是理解力不行。这个问题和 MEMORY 读写、Dreaming 流程是两码事,先修搜索,再配记忆。

  4. 长期运维就一件事:主MEMORY精简。别让它越写越胖。


你有没有被AI说过「我没有找到相关信息」?评论区聊聊你当时问的什么,我帮你诊断是搜索问题还是记忆问题。


P.S. 如果你想让AI在每次提问前自动搜索记忆库,可以研究一下Active Memory插件(需在openclaw.json手动配置)。配完后,每次你提问,AI先翻一遍记忆库再回答,再也不用手动解释上下文。官方文档有详细说明。


收藏或转发给那个天天被AI气到砸键盘的同事,他大概率两个都没配。


本文基于OpenClaw v2026.4.x版本测试,后续版本可能变动,请以官方文档为准。