乐于分享
好东西不私藏

别再让 AI 乱记忆了:我把 OpenClaw 从重常驻改成检索优先

别再让 AI 乱记忆了:我把 OpenClaw 从重常驻改成检索优先

导读:这次我做的,不是继续给 AI 助手多塞一点记忆,而是把它的记忆系统重新做了一遍。核心不是“记更多”,而是重新分配:什么该默认常驻,什么该分层存放,什么该在需要时再检索。

这篇文章,是被一个真实项目重新点醒的

最近我看到一个挺有意思的项目:Milla Jovovich 参与做了一套 AI 记忆系统,叫 MemPalace

打动我的不是“明星做 AI”这件事,而是它背后的问题意识:不要让系统替你草率决定什么该记、什么不该记。

这和我这次改 OpenClaw 时,面对的是同一类问题。

我们做的当然不是 MemPalace 那套实现,也不是把 OpenClaw 改成“记忆宫殿”。但问题是一样的:

一个成熟的 AI 系统,不该靠把所有东西都常驻背在身上,来显得自己记性很好。

真正成熟的方向,应该是:

  • 有些东西长期常驻
  • 有些东西分层归档
  • 有些东西按需检索
  • 让系统知道什么该一直带着,什么该需要时再取

所以这次我做的,不是给 OpenClaw 再塞更多记忆。

而是反过来做了一次手术:

把它的记忆系统,从“重常驻、大仓库、混层堆积”,改造成“轻常驻、检索优先、分层归位”。

真正的问题,不只是聊天变长

很多人第一次碰到 context 变大,直觉都会落在聊天记录上:

  • 是不是聊太久了?
  • 是不是 `MEMORY.md` 写太多了?
  • 是不是多 `/new` 几次就好了?

但这次真往下拆,我发现问题没有这么表面。

把 context 顶起来的,往往不只是一轮对话,而是整套默认启动负担:

  • 系统提示本身
  • 工具 schema
  • available skills 列表
  • workspace 常驻注入文件
  • 没有分层、不断累积的“伪记忆”

也就是说,真正的问题不是“聊太久”,而是:

系统默认背了太多东西。

如果底层结构不改,`/new` 只能清掉聊天,清不掉真正的大包袱。

所以这次要改的,不是删记忆,而是重做结构

看到 context 大,很多人第一反应是删。

但删通常只能解决眼前,不解决结构:

  • 删狠了,系统失忆
  • 删轻了,context 还是胖
  • 删完之后,往往还会继续乱长回来

所以这次从一开始,我定的目标就不是“少一点内容”,而是:

把记忆从“大仓库常驻”改造成“轻常驻 + 检索优先 + 分层归位”。

翻成人话就是:

  • 长期硬规则,常驻
  • 稳定 workflow,沉成 topic
  • 排障过程和历史证据,沉到 raw
  • 当天发生的事,记进 daily
  • 真要回忆时,再按需取

动手之前,我先定了四个判断

这轮能收住,不是因为搬文件搬得勤,而是因为先把底层判断定清楚了。

1)先升级,再优化

先把 OpenClaw 升到较新的稳定版本,先确认主系统、备份链路、cron、插件都站稳。

原因很简单:底座不稳,后面的改造容易返工。

2)先打第一战场,不急着碰第二战场

这次先收最可控、收益最大的部分:

  • `MEMORY.md`
  • `AGENTS.md`
  • `TOOLS.md`
  • `memory/` 的分层结构

而不是一上来就去碰更深层的大头。

3)保守迁移,不打断启动链路

一开始没有把所有 daily 直接暴力搬走。

因为前面先问了一个更现实的问题:

session startup 的读取链路,会不会先被我自己搞断?

所以前期做法是:先建新目录,先写 topic 样板,先瘦常驻层,等结构和规则收住,再切 daily 主路径。

4)topic 优先,raw 补充,daily 定时间

不是所有历史都该常驻,也不是所有历史都该直接拿原文来回答。

更合理的顺序应该是:

1. 先查 `topic`

2. 再查 `raw`

3. 最后查 `daily`

这一个顺序一改,AI 的“记忆气质”就会完全不一样。

真正开工后,我做了三件关键的事

第一件:先把常驻层瘦下来

先收三份最关键的常驻文件:

  • `MEMORY.md`
  • `AGENTS.md`
  • `TOOLS.md`

重点不是简单删内容,而是改角色:

  • `MEMORY.md` 只保留长期规则、硬约束、稳定偏好、topic 路由
  • `AGENTS.md` 回到启动顺序、分层原则、安全边界、执行风格
  • `TOOLS.md` 只保留稳定目录、本机速查和高频路径规则

这一步做完以后,最直接的变化不是“好看了”,而是:

每个文件重新知道了自己该干什么。

第二件:把记忆正式拆成四层

这一步,才是整个系统的骨架。

我们把记忆明确拆成了四层:

  • 长期层:`MEMORY.md`
  • 决策层:`memory/topics/`
  • 证据层:`memory/raw/`
  • 日志层:`memory/daily/`

真正重要的,不是目录更工整了,而是:

每类信息终于有了明确语义。

以前的问题恰恰是:规则像日志,日志像专题,专题像仓库,仓库又被当成常驻层。系统当然会越用越乱。

第三件:把 `memory/` 根目录彻底清空

这是这轮改造里最有仪式感的一刀。

前面先做低风险归位:脚本移走、JSON 移走、导出报告移走、tmp 文件移走、一批典型 raw 先迁进 `memory/raw/`。

再往后继续推进:抽 topic、迁 raw、把根目录剩余 `.md` 全部分流进 `daily/` 和 `raw/`。

最终结果是:

`memory/` 根目录 `.md` 文件数 = 0。

这一刀不只是视觉上清爽,而是从结构、语义、运行口径三个层面,把系统真正收了回来。

最后的结果,不是完美,而是 9.9 分收口

如果只图好看,完全可以在结尾写一句“这套系统已经完美收工”。

但那不诚实。

更准确的说法是:

第一战场已经做到 9.9 分:结构层完成,运行口径完成,地毯式审计通过,正式进入维护态。

为什么不是 10 分?

因为还留着一点小尾巴:

  • 有些高价值 topic 还能继续补强
  • `topics` 未来还能做第二轮统一清洗
  • `archive` 目录还没真正启用

但这些已经不再是硬伤,只是后面还能继续抠的边角。

这次改造给我最大的启发

如果只用一句话总结,我会写:

记忆不是塞得越多越好,关键是默认带什么、按需取什么。

很多人做 memory,最后都会掉进两个坑:

  • 觉得“多存一点总没错”
  • 觉得“都带着最保险”

但越这么做,系统越容易变成:

  • 常驻越来越胖
  • 规则越来越混
  • 新旧信息越来越打架
  • 该记住的没记稳,不该常驻的反而一直背着

真正成熟的方向,反而是:

  • 把长期规则和高权重记忆提出来
  • 把 workflow 总结成 topic
  • 把历史过程沉到底层 raw
  • 把当天活动放进 daily
  • 让 retrieval 真正成为默认方式

这样系统才会越用越稳,而不是越用越重。

结论:这不是一次整理文件,而是一次给 AI 助手重做记忆结构的手术。它真正解决的是:如何让一个 AI 系统,不靠越来越重的硬背,也能长期保持稳定、清醒和可维护。