第 4 章
记忆系统优化
🧠 问题一:长对话失忆 → 启用 memoryFlush
当对话接近上下文窗口上限时,OpenClaw 会触发 compaction 压缩旧对话。memoryFlush 在压缩前先让 AI 将重要信息写入文件,防止丢失。
{
"agents": {
"defaults": {
"compaction": {
"reserveTokensFloor": 20000,
"memoryFlush": {
"enabled": true,
"softThresholdTokens": 4000
}
}
}
}
}
softThresholdTokens: 4000:剩余空间低于 4000 tokens 时触发。
- 太小(< 1000):AI 没足够空间写入
- 太大(> 10000):触发过频
memoryFlush 静默执行,发送 /verbose 可查看触发日志(Auto-compaction complete)。
🔍 问题二:检索命中率低 → 优化 Embedding 模型
{
"memorySearch": {
"enabled": true,
"provider": "openai",
"remote": {
"baseUrl": "https://api.siliconflow.cn/v1",
"apiKey": "YOUR_API_KEY"
},
"model": "BAAI/bge-m3"
}
}
选择 bge-m3 的原因:
- SiliconFlow 提供免费额度
- 中英文混合支持良好
- 向量维度 1024,精度与速度平衡
memorySearch 工作流:
query → memory_search("关键词") → 返回文件路径+行号 → memory_get(path, from, lines) → 读取内容
两步设计:search 负责定位,get 负责读取,避免全量加载记忆文件。
🧹 问题三:记忆文件噪音积累 → 配置自动维护
在 workspace/HEARTBEAT.md 中添加:
## 记忆维护任务(每周执行)
检查 `memory/heartbeat-state.json` 中的 `lastMemoryMaintenance`。
距今超过 7 天时执行:
1. 读取最近 7 天日志
2. 提炼长期价值信息 → 归档到 projects.md / lessons.md
3. 压缩已完成的一次性任务为单行总结
4. 删除完全过期的临时信息
5. 更新 `lastMemoryMaintenance` 为当前日期
创建 workspace/memory/heartbeat-state.json:
{
"lastMemoryMaintenance": "2026-02-26"
}