本文与《核心配置文件:MEMORY.md》配套:侧重 openclaw.json 中的压缩前落盘(memoryFlush)与检索侧(memorySearch)调优,不涉及 workspace 内 Markdown 的写作规范时可先看 MEMORY 篇。
为什么会出现「失忆」
这是搜索量很高的一个问题。原因是 OpenClaw 的**上下文压缩(compaction)**触发了。
每个模型都有上下文窗口限制(Claude 是 200K token)。当对话接近这个限制时,OpenClaw 会自动把旧对话压缩成摘要腾出空间——压缩过程中可能丢失细节。
memoryFlush:压缩前保存关键信息
解决方案:开启 memoryFlush,在压缩触发之前,先让 AI 把重要信息写入文件。
在 openclaw.json 里加上:
1 | { |
参数说明
| 参数 | 含义 | 推荐值 |
|---|---|---|
| reserveTokensFloor | 压缩后至少保留多少 token 的最近对话 | 20000 |
| memoryFlush.enabled | 是否开启压缩前自动保存 | true |
| memoryFlush.softThresholdTokens | 距离压缩多少 token 时触发保存 | 4000 |
💡 memoryFlush 静默执行,不打断对话。开了 verbose 模式(/verbose)可以看到 🧹 Auto-compaction complete 的提示。 |
memorySearch:结构化笔记提高命中率
memorySearch 的底层是向量语义检索,结构化日志的命中率比非结构化日志高得多:
搜索词:”nginx 部署问题”
❌ 非结构化日志(命中率低):
1 | 今天折腾了一天,先搞了数据库迁移,然后部署了新版本,nginx 配置改了一下... |
✅ 结构化日志(命中率高):
1 | ### [PROJECT:MyApp] nginx 反代配置 |
SiliconFlow bge-m3 配置示例
国内用户较快上手的方案——SiliconFlow 提供的 bge-m3 向量模型完全免费:
1 | { |
为什么推荐 bge-m3? 完全免费、中英文双语支持好、向量维度 1024 精度和性能平衡好。
获取方式:去 siliconflow.cn 注册 → 控制台 → 创建 API key。
自动记忆维护(配合 HEARTBEAT)
在 HEARTBEAT.md 里加上每周自动维护任务,防止过期日志干扰 memorySearch 结果。
记忆维护(每周一次)
读取 memory/heartbeat-state.json,检查 lastMemoryMaintenance 字段。
如果距今 >= 7 天:
- 读最近 7 天的
memory/YYYY-MM-DD.md日志 - 提炼有价值的信息到对应文件(projects.md / lessons.md)
- 压缩已完成一次性任务的日志为一行结论
- 删除过期信息
- 更新
heartbeat-state.json的lastMemoryMaintenance为今天创建 memory/heartbeat-state.json:
1 | { |