第 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"
}