博主头像
Wood Chen

万事如意

  • 累计撰写 284 篇文章
  • 累计创建 238 个标签
  • 累计收到 20 条评论

目 录CONTENT

放弃 memory-lancedb,回到 OpenClaw 官方记忆链路:一次高成本实测后的选择

2026-03-08 · 2 评论 · 0 点赞 · 1180 阅读 · 0 字

前几天我折腾了一轮 OpenClaw 的记忆系统,起因很简单:我是在抖音上看别人推荐,才去装 memory-lancedb 插件的。 视频里吹得很猛,讲得像是装上之后记忆能力直接起飞,什么长期记忆、智能召回、越用越懂你,听起来特别像那么回事。

我当时也确实被说动了,觉得官方默认那套可能偏保守,memory-lancedb 也许才是更强的“进阶方案”。 结果真正用下来之后,我的结论很干脆:根本不好用。

这里不是“试了几轮就下判断”。 我是实打实用了好几天,而且强度不低:

- 主力模型是 gpt-5.4 和 gpt-5.2-codex - 平均每天大概 90 美元 token 成本 - 总量已经跑到了 七八亿 tokens

这种使用强度下,很多东西其实藏不住。 好不好用,不用听谁吹,跑几天就知道了。

memory-lancedb 最大的问题,不是不能跑,而是它在真实使用里远没有宣传得那么神。 手动 memory_store、memory_recall 都能通,表面上看功能齐全,但一到自动召回,问题就来了:乱召回、带偏上下文、把一堆不该出现的东西塞进当前对话。

我一开始怀疑过 embedding、怀疑过向量维度、也怀疑过索引是不是坏了。后来一路查下来,问题其实挺直接:

1. memory-lancedb 更像一个轻量插件,召回逻辑很简单 2. 我把不少 memory 文档直接灌进了向量库,候选池一下子变脏了 3. 它能查到东西,但经常查到的是“不该现在出现的东西”

最直观的感受就是: 你问一个当前问题,它给你翻出旧日志、联系人碎片、论坛账号,甚至是排障过程里的技术细节。系统看起来很勤快,但实际是在污染上下文。

后面我也不是没补救。我做过一轮排查和修补:

- 关掉 memorySearch - 把 memory 插槽切到 memory-lancedb - 调小文档分块 - 重灌文档到 LanceDB - 调整 autoRecall 注入条数

这些动作不是完全没用,短时间内确实缓了一点。 但问题始终没有真正解决。越往后我越确定:我是在拿一个适合“手动长期记忆”的插件,硬扛官方主记忆系统的活。

再往后我去看 OpenClaw 本地文档和内置实现,方向就清楚了。官方路线其实一直写得很明白:

- memory-core 才是默认 memory 插件 - 主工具是 memory_search 和 memory_get - 默认 backend 是 builtin - QMD 是实验性的 sidecar,不是默认必选项

官方文档里那句话我觉得很重要:除非你明确要运行 QMD,否则保持 builtin。

我后来就是按这个思路回切的:

- 恢复 agents.defaults.memorySearch.enabled = true - 把 plugins.slots.memory 改成 memory-core - 禁用 memory-lancedb - 重启 gateway - 重新检查 memory 状态

切回之后,系统一下子顺了很多。 openclaw status 里能直接看到:

- plugin memory-core - FTS ready - vector ready - memory files 已接管

再做检索测试,虽然还谈不上特别聪明,但至少回到了一个正常系统该有的样子。 查用户偏好,会先命中 entities/wood.md 和 opinions.md;查联系人,也会优先落到实体页和用户页。尾部还是会有一点噪音,但已经不是之前那种“什么都往上冒”的状态了。

这轮折腾下来,我的判断很简单。

1. memory-lancedb 适合做轻量插件,不适合顶替官方主记忆链路

如果你只是想手动存一些偏好、事实、决定,它能用。 但如果你想让它长期承担自动召回,又把很多文档直接往里灌,基本迟早失控。

2. 官方默认路线没有想象中弱

我一开始也有点先入为主,总觉得 builtin 不够强,QMD 才像“完整版”。后来实际跑下来发现不是这么回事。 memory-core + memorySearch + builtin 本身就是一条完整路线,而且明显更稳、更省心。

3. 真正拖后腿的,不只是引擎,还有 memory 文件本身

切回官方路线后,我继续看索引结果,发现另一个现实问题:同一事实散落在多个文件里重复出现。

比如一个联系人信息,可能同时出现在:

- daily 日志 - world.md - entities/*.md - users/*.md

这样一来,就算官方 memory 再稳,召回时也容易把重复事实一起带出来。

所以后面我又做了一轮很小的整理,不大改结构,只收掉最明显的重复项和不该长期保留的内容,比如:

- 把联系人详情收口到实体页 / 用户页 - 把 public 长期记忆里的明文账号密码去掉 - 把 daily 里已经沉淀过的长期事实弱化掉

这一步反而很关键。因为记忆系统再强,源头文件乱,结果照样会乱。

4. 这类问题,只有高强度用几天之后才会彻底暴露

这次让我更确定的一点是:记忆系统不能看演示视频,更不能只看“能不能跑通”。

小规模测试时,很多方案都像是可用的。 但当你真的连续用几天、每天烧掉几十美元 token、总量跑到几亿 token 之后,很多视频里放大的“优点”很快就会褪色,真正的问题反而会越来越明显。

memory-lancedb 在我这里就是这样。 拿来做 Demo,它挺像那么回事。 放进高强度日常使用,噪音和上下文污染会越来越烦。

5. 我现在的选择很简单:先回官方默认链路

至少在当前阶段,我不会继续折腾 QMD,也不会再把 memory-lancedb 拉回来当主系统。

后面的原则就是:

- 主记忆:memory-core - backend:builtin - memory 文件继续分层、去重、收口 - daily 主要记当天,长期事实尽量沉淀到固定文件

这样不花哨,但稳。

最后说一句。

如果你也在折腾 OpenClaw 记忆,而且已经开始觉得“是不是该换插件、换后端、换 embedding 才能救”,我会建议你先停一下,先确认两件事:

1. 你是不是已经偏离了官方默认链路 2. 你的 memory 文件本身是不是已经写乱了

很多时候,问题不在模型有多强,而在路径走偏了。

  • 2

评论区