框架-openclaw-4.进阶配置-记忆系统 memoryFlush

为什么 OpenClaw 聊着聊着 AI 会”失忆”?

这是搜索量很高的一个问题。原因是 OpenClaw 的**上下文压缩(compaction)**触发了。
每个模型都有上下文窗口限制(Claude 是 200K token)。当对话接近这个限制时,OpenClaw 会自动把旧对话压缩成摘要腾出空间——压缩过程中可能丢失细节。

OpenClaw memoryFlush 配置方法:压缩前自动保存关键信息

解决方案:开启 memoryFlush,在压缩触发之前,先让 AI 把重要信息写入文件。
在 openclaw.json 里加上:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"agents": {
"defaults": {
"compaction": {
"reserveTokensFloor": 20000,
"memoryFlush": {
"enabled": true,
"softThresholdTokens": 4000
}
}
}
}
}

参数说明:

参数 含义 推荐值
reserveTokensFloor 压缩后至少保留多少 token 的最近对话 20000
memoryFlush.enabled 是否开启压缩前自动保存 true
memoryFlush.softThresholdTokens 距离压缩多少 token 时触发保存 4000
💡 memoryFlush 静默执行,不打断对话。开了 verbose 模式(/verbose)可以看到 🧹 Auto-compaction complete 的提示。

OpenClaw memorySearch 精度优化:结构化日志大幅提升检索命中率

memorySearch 的底层是向量语义检索,结构化日志的命中率比非结构化日志高得多:
搜索词:”nginx 部署问题”
❌ 非结构化日志(命中率低):

1
今天折腾了一天,先搞了数据库迁移,然后部署了新版本,nginx 配置改了一下...

✅ 结构化日志(命中率高):

1
2
3
4
### [PROJECT:MyApp] nginx 反代配置
- **结论**: 用 nginx 反代部署成功
- **教训**: upstream 要用 127.0.0.1 不要用 localhost(IPv6 问题)
- **标签**: #nginx #deploy #myapp

用免费 SiliconFlow bge-m3 配置 OpenClaw memorySearch

国内用户最快上手的方案——SiliconFlow 提供的 bge-m3 向量模型完全免费:

1
2
3
4
5
6
7
8
9
10
11
{
"memorySearch": {
"enabled": true,
"provider": "openai",
"remote": {
"baseUrl": "https://api.siliconflow.cn/v1",
"apiKey": "你的 SiliconFlow API key"
},
"model": "BAAI/bge-m3"
}
}

为什么推荐 bge-m3? 完全免费、中英文双语支持好、向量维度 1024 精度和性能平衡好。
获取方式:去 siliconflow.cn 注册 → 控制台 → 创建 API key。

OpenClaw 自动记忆维护:防止过期日志干扰 memorySearch 结果

在 HEARTBEAT.md 里加上每周自动维护任务:

记忆维护(每周一次)

读取 memory/heartbeat-state.json,检查 lastMemoryMaintenance 字段。
如果距今 >= 7 天:

  1. 读最近 7 天的 memory/YYYY-MM-DD.md 日志
  2. 提炼有价值的信息到对应文件(projects.md / lessons.md)
  3. 压缩已完成一次性任务的日志为一行结论
  4. 删除过期信息
  5. 更新 heartbeat-state.jsonlastMemoryMaintenance 为今天创建 memory/heartbeat-state.json:
1
2
3
{
"lastMemoryMaintenance": "2026-01-01"
}
-------------本文结束感谢您的阅读-------------