手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!
大伙用 OpenClaw 时是不是常觉得它记性贼差?明明前天刚叮嘱过,昨天也提了,今天它又忘得一干二净。最气人的是,它每次还拍着胸脯保证:“放心,我记住了。”
这类事真不少见。之前有个哥们儿让他的 OpenClaw 盯着收件箱,给点归档建议,还特别交待:“没我发话,别乱动。”刚开始在小测试箱里表现得还挺像样,撑了几个礼拜。
可等真要把几千封邮件交托给它时,这家伙直接失控了,咔咔一通乱删,任凭主人在屏幕后边怎么喊停都不理会。
真相只有一个:聊天内容太多,上下文窗口被塞爆了。Agent 为了腾地方把历史记录给压缩了,那句“没我发话别乱动”只存在于聊天记录里,没存成文件,结果直接被后台当成垃圾清理掉了。
想搞清楚这小龙虾怎么老是“脑仁不够用”,咱们得先看看它那套双层记忆系统是怎么转的。
后面我还会分享维护者压箱底的调优秘籍,保准能治好你家小龙虾的“间歇性遗忘症”。
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!

二、记忆系统到底是怎么存的?

OpenClaw 把记性分成了两块:一种是记每天琐事的“每日日志”(动态记忆),另一种是板上钉钉的“长期记忆”(静态记忆)。

记忆类型 存储格式 存储路径 产生方式
静态记忆 Markdown ~/.openclaw/workspace/MEMORY.md 和 memory/*.md 手动写 + 自动攒
动态记忆 JSONL ~/.openclaw/agents/{agentId}/sessions/*.jsonl 自动录
这玩意儿其实特别像咱们人脑。
咱们平时记事也就记几个关键点。能想起来的通常是某个尴尬瞬间或者重大的事儿。
把这些零散的片段拼在一起,才算是有记忆。至于每天中午吃了啥、说了几句废话,日子久了肯定全忘了。
图片
所以说,这套系统在设计上算是把仿生学玩明白了。
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!
2.1. 聊天产生的动态记忆

你每次跟 Agent 说话,系统都会把内容直接塞进 JSONL 格式的日志文件里。这算是最原汁原味的记录,没经过任何加工。大概长这样:

{
  "type": "message",
  "message": {
    "role": "user",
    "content": "给爷整一个 Python 爬虫"
  }
}
{
  "type": "message",
  "message": {
    "role": "assistant",
    "content": "好嘞老板,这就给您写..."
  }
}
2.2. 静态记忆是怎么来的?

长期记忆主要存一些必须要死记硬背的东西,比如你性格怎么样、喜欢什么样的回答风格、项目里有哪些死规定。
这些内容主要靠三个法子攒起来:

  • 法子一:你自己动手写:你可以直接改那个 MEMORY.md 文件。比如写上:“叫我老板”、“说话简洁点”。
  • 法子二:重置会话自动转:当你输入 /new 开启新天新地时,系统会启动个钩子,把刚才聊天里的精华(默认选最后 15 条)提炼成 Markdown。它会根据聊的内容自己起名字,比如 bug-fix 什么的。
  • 法子三:快爆掉时自动写:如果上下文快把内存撑爆了,系统在压缩之前会强制让 Agent 反思一下:有什么必须要留下的?然后赶紧写进 memory/YYYY-MM-DD.md。
    | 特性 | MEMORY.md | memory/*.md |
    | :--------- | :----------------------------- | :--------------------- |
    | 干啥用的 | 核心中的核心 | 按日子排的账本 |
    | 存点啥 | 个人喜好、死规定、老规矩 | 具体聊了啥的摘要 |
    | 咋更新 | 主要是你自己改 | 系统自动记 |
    | 叫啥名 | 固定叫 MEMORY.md | 日期加上关键词 |
    | 谁更优先 | 都一样,看谁搜着更像 | 都一样,看谁搜着更像 |
    手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!
    静态记忆的关键就在“法子三”,也就是历史记录是怎么压缩的
    OpenClaw 的逻辑是让大模型自己去瘦身
    先筛选一遍,让 Agent 琢磨什么是**“值得长久保存的宝贝”
    然后用大模型做个
    有损摘要**。它一般只记**“决定了啥、还得干啥、啥没解决、有啥限制”。至于几点几分这种细枝末节,通常就给扔了。
    这是为了
    保全大局**。不把旧账压一压,上下文分分钟溢出。这不叫 bug,是系统效率和记忆完整性之间的博弈
    你要是有啥不能忘的硬核数据,最好直接命令它记到长期记忆里。
    这也得看模型够不够聪明。有时候我觉得重要的,它觉得是废话,然后就给弄丢了。
    但说实话,这已经是目前性价比最高的招儿了。

三、怎么把记下来的东西翻出来?

只要存了 Markdown 记忆文件,后台就会开工建索引,等用的时候好找。

3.1. 建索引

默认只有 Markdown 能被搜到,原始的 JSONL 日志是不进索引的。
系统会把文件切块,一方面搞向量化(搞语义理解),一方面搞关键词索引,全存在轻量级的 SQLite 数据库里,不用折腾什么 ES 或者大型向量库。

3.2. 记忆搜索

它找东西是混着找的,主要看两个分值:

  • 语义搜索:看意思接不接近。
  • 关键词搜索:看有没有一模一样的词。
    两边得分按 7:3 这么一掺和,分数要是没过 0.35 的门槛,系统就当没看见。
3.3. Agent 怎么查岗?

它手里有两个趁手的工具:

memory_search:模模糊糊搜

用来查 MEMORY.md 还有那些历史小本子,搜出一堆相关的片段,还会标出在哪一行、相关度有多高。

{
  "results": [
    {
      "path": "memory/2026-01-10.md",
      "snippet": "用户喜欢天蓝色...",
      "score": 0.85
    }
  ]
}
memory_get:定点清除

想看具体哪个文件哪几行?用这个。它会把原文完完整整搬出来。

3.4. 它什么时候会去搜?

Agent 被洗过脑了:只要涉及以前干过啥、以前怎么定的、日期、人名、你的偏好,必须先去搜 memory_search,然后再用 memory_get 细看。

3.5. 它也会主动记账

Agent 聪明的时候会觉得某事得记一笔,就会动用它的文件工具,把东西写进当天的 memory/YYYY-MM-DD.md 里。

3.6. 安全防线

为了防止它乱翻,memory_get 被锁死了,只能看 memory 文件夹、MEMORY.md 还有你在配置里指定的那些地方。
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!

四、这套招式的利弊

有了这套架构,AI 才算从“一锤子买卖的工具”变成了“能长久相处的搭子”。
它把记忆从拥挤的上下文里挪出来,搞成了持久化的知识库。这样它就能积攒经验、记住你的臭毛病、把聊过的话接上
这么搞不仅解决了上下文不够用的头疼事,还让 AI 越来越懂你。
当然,缺点也是有的。系统提示词占坑、工具定义占坑、压缩会有损耗,而且搜一次记忆也得花钱花时间。
但核心价值在那儿:让聊不到头的对话成为可能,而且老消息即便被压成干儿了,也能搜得回来。

五、怎么让它记性更好?

想让你的 OpenClaw 比别人的更机灵,照这三条改就行:

  1. 死命令写进文件,别只在聊天里说。记在 MEMORY.md 里的东西是雷打不动的,聊天里的指令随时可能被压没了。
  2. 看看“记忆刷新”开没开。OpenClaw 在大扫除(压缩)前有个自救机制,会把重要东西存一下,但很多人根本没留意过这功能有没有空间触发。
  3. 逼它去翻账本。在 AGENTS.md 里加条规矩:“干活前先搜记忆”。不搜的话,它全靠瞎猜。
    Agent 一旦“忘本”,准是掉进这三个坑里了:
    三种失效模式——从未存放(最常见)、压实丢失、修剪损坏
坑一:“压根儿就没记”
  • 情形:你只在聊天里随口一说,没存进文件。
  • 后果:一旦触发压缩或者重启,这话就跟没说过一样。这是最常见的翻车现场。
坑二:“压缩时把细节弄丢了”
  • 情形:聊太嗨了,触发了压缩。
  • 后果:摘要把你的要求精简了。Agent 以后就照着那个缩减版的指令干活,细节全丢。
坑三:“清理工具结果时误伤”
  • 情形:为了省内存,系统把之前的工具返回结果给删了。
  • 后果:Agent 会忘了之前工具查到了啥,虽然磁盘上还有记录,但它眼下看不见了。
对症下药:
5.1. 压缩和修剪不是一回事

很多人把这两个概念搞混了:
压缩操作会重写历史记录(有损、永久性),而修剪操作只会修剪工具处理结果(无损、临时性)。

压缩(重写历史)
  • • 把以前的事儿总结成一小段,不可逆,且会有损。
  • • 内存爆满时自动触发。
修剪(暂时清理)
  • • 只是把旧工具的废话暂时藏起来,不改磁盘文件。
  • • 主要是为了省点 Token。
    建议开启 cache-ttl 模式,每隔 5 分钟扫一次垃圾,保持上下文清爽。
{
  "agents": {
    "defaults": {
      "contextPruning": { "mode": "cache-ttl", "ttl": "5m" }
    }
  }
}
5.2. 看看它现在脑子里装了啥

想知道它现在能看见啥,输入 /context list 查查。

🧠 Context breakdown
...
Injected workspace files:
- AGENTS.md: OK
- TOOLS.md: TRUNCATED (有些内容被掐了)
...
重点看:
  • MEMORY.md 到底加进去没? 没显示就是没读到。
  • 文件是不是太长被掐头去尾了? 默认单文件 2 万字符,总共 15 万,超了就看不全。
5.3. 压缩的全过程

压缩生命周期图,展示了良好路径(首先执行冲洗操作)与不良路径(溢出恢复,最大损失)的对比。
最理想的情况: 在崩溃前先“刷新记忆”。Agent 悄悄把重要事存进磁盘,然后再压缩旧消息。
最糟的情况: 内存直接撑爆,API 报错了。这时候 OpenClaw 会强制“截肢”式压缩,啥刷新都顾不上了,丢的东西最多。

5.4. 压缩会弄坏啥?
保不住的:
  • • 聊天里的临时要求、纠正。
  • • 之前发过的图。
  • • 工具吐出的具体原始数据。
能留下的:

六、三层防线守住记忆

第一层:压缩前先存一波

把这个配置开起来,能在它失忆前拉它一把。

{
  "agents": {
    "defaults": {
      "compaction": {
        "reserveTokensFloor": 40000,
        "memoryFlush": {
          "enabled": true,
          "softThresholdTokens": 4000,
          "prompt": "快爆了,赶紧把重要的事写进 memory/YYYY-MM-DD.md"
        }
      }
    }
  }
}
第二层:人工干预

别光指望自动的。聊到关键地方,直接给它下令:
“把刚才定的规矩写进 MEMORY.md”。
或者用 /compact 命令。
/compact 指令的计时技巧——先进行压缩,然后再添加新指令以获得最大运行时间,而不是反过来。
高手的玩儿法:

  1. 叫它存好当前状态。
  2. 自己输入 /compact 强制大清扫。
  3. 给新指令。
    这样新指令就能在最干净的内存里待最久。
第三层:文件各司其职

工作区文件架构——引导文件在每个会话中加载,按需内存文件通过 memory_search 访问。
把文件分好类:

  • SOUL.md:它的人设。
  • AGENTS.md:它的干活规矩。
  • USER.md:你的底细。
  • MEMORY.md:万年不变的铁律。
  • 每日日志:当天的流水账。
    在 AGENTS.md 里写死:
    “干活前必搜记忆,学到新招儿必写进文件,发现我改它错了必把新规矩填进 MEMORY.md”。

七、检索

搜不到的记忆跟没有没区别。

工具怎么用
  • memory_search:全城大搜查,语义+关键词混着来。
  • memory_get:精准打击,直接看原文。
搜哪里?

一般用默认的就行,它会自己索引工作区。如果你想让它搜搜你的笔记库(比如 Obsidian),可以配置 extraPaths

"memorySearch": {
  "extraPaths": ["~/我的笔记/**/*.md"]
}

如果文件特别多(好几千个),那就得考虑上方案二:QMD 后端了。
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!

八、常见毛病自诊

  • 它总记不住我的习惯? 查查 MEMORY.md 加载没,没记在文件里它肯定忘。
  • 搜不出东西? 看看那文件到底在不在。
  • 隔了一夜啥都忘了? 会话每天凌晨 4 点会自动换 ID,除了文件,聊天记录全不带到新会话里。

九、推荐配置参考

这是最稳的本地搜索配置:

{
  "agents": {
    "defaults": {
      "compaction": {
        "reserveTokensFloor": 40000,
        "memoryFlush": { "enabled": true }
      },
      "memorySearch": {
        "enabled": true,
        "provider": "local",
        "query": { "hybrid": { "enabled": true } }
      },
      "contextPruning": { "mode": "cache-ttl", "ttl": "5m" }
    }
  }
}

手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定!

常用命令一览

命令 啥时候用
/context list 记不住事儿了先查这个
/compact 发大招前先清空内存空间
/new 聊成死结了,推倒重来
/verbose 看看它到底搜没搜记忆
玩久了你就明白:记忆不是 AI 自带的天赋,而是得靠咱们悉心调教的一套工程管理
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐