OpenClaw 记忆系统实战:Token 压缩与双层记忆架构
在使用 OpenClaw 一段时间后,常遇到两个痛点:会话太长导致 Token 爆满而遗忘前文,以及每次重启都是白纸,知识无法沉淀。能不能让 AI 自己管理记忆,像人一样'三省吾身'?折腾之后,这套方案终于跑通了。
一、Token 自动压缩:70% 就动手
问题
OpenClaw 默认的 auto-compaction 往往在 context window 接近满载时才触发。这时候对话质量已经下降,响应变慢,属于被动救火。
解决方案
在 ~/.openclaw/openclaw.json 中调整配置,将阈值提前到 70%。
compaction: {
mode: "safeguard",
reserveTokensFloor: 38400, // 剩余 30% 时强制压缩
memoryFlush: {
enabled: true,
softThresholdTokens: 89600, // 70% 时先存储记忆
prompt: "Summarize the conversation history..."
}
}
触发顺序
| 阶段 | Token 使用率 | 行为 |
|---|---|---|
| 1 | 70% (89600 tokens) | memoryFlush 静默存储重要信息 |
| 2 | 70% 剩余 (38400 tokens) | auto-compaction 强制压缩 |
配合 Heartbeat 每 30 分钟检查,超过 70% 会主动提醒:
heartbeat: {
every: "30m",
prompt: "Read HEARTBEAT.md if it exists..."
}
二、双层记忆体系:快 + 深
架构设计
短期记忆负责毫秒级响应,长期记忆负责跨会话沉淀。
┌─────────────────────────────────────────────────┐
│ 用户查询 │
└─────────────────────┬───────────────────────────┘
▼
┌─────────────────────────────────────────────────┐
│ QMD(短期记忆) │
│ • 本地 BM25 关键词搜索 │
│ • 毫秒级响应 │
│ • 工作区文件索引 │
└─────────────────────┬───────────────────────────┘
│ 无结果/需语义理解
▼
┌─────────────────────────────────────────────────┐
│ Mem0(长期记忆) │
│ • 云端语义向量搜索 │
│ • 跨会话知识沉淀 │
│ • 重要决策、经验教训 │
└─────────────────────────────────────────────────┘
QMD 安装
# 安装 Bun(如果没装)
powershell -c "irm bun.sh/install.ps1|iex"
# 安装 QMD
bun install -g qmd
# 加入 PATH

