OpenClaw 记忆系统实战:Token 压缩与自我反思机制
在使用 OpenClaw 的过程中,常会遇到两个典型痛点:一是会话过长导致 Token 爆满,模型逐渐遗忘上下文;二是每次重启后知识归零,缺乏沉淀。能否让 AI 像人一样管理记忆,实现'三省吾身'?经过实践,这套方案已跑通。
一、Token 自动压缩策略
默认情况下,OpenClaw 的 auto-compaction 往往在 context window 接近满载时才触发,此时对话质量已开始下降,响应速度也会变慢。我们需要更主动的策略。
配置调整
在 ~/.openclaw/openclaw.json 中增加以下配置,设定在剩余 30% Token(即使用率 70%)时强制介入:
compaction: {
mode: "safeguard",
reserveTokensFloor: 38400, // 保留至少 38400 tokens
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 分钟检查一次状态,超过阈值会主动提醒用户:
heartbeat: {
every: "30m",
prompt: "Read HEARTBEAT.md if it exists..."
}
二、双层记忆体系:快 + 深
为了兼顾响应速度与知识深度,我们设计了短期与长期结合的记忆架构。
架构设计
┌─────────────────────────────────────────────────┐
│ 用户查询 │
└─────────────────────┬───────────────────────────┘
▼
┌─────────────────────────────────────────────────┐
│ QMD(短期记忆) │
│ • 本地 BM25 关键词搜索 │
│ • 毫秒级响应 │
│ • 工作区文件索引 │
└─────────────────────┬───────────────────────────┘
│ 无结果/需语义理解
▼
┌─────────────────────────────────────────────────┐
│ Mem0(长期记忆) │
│ • 云端语义向量搜索 │
│ • 跨会话知识沉淀 │
│ • 重要决策、经验教训 │
└─────────────────────────────────────────────────┘
QMD 安装与使用
首先确保安装了 Bun 环境,然后全局安装 QMD 工具:
# 安装 Bun(如果未安装)
powershell -c "irm bun.sh/install.ps1|iex"
bun install -g qmd

