Install
$
openclaw plugins install clawhub:memory-keepermemory-keeper v8
OpenClaw ↔ DeepSeek 上下文代理 · 三级归档架构
平时 100% 缓存命中,大砍刀每 30-40 轮触发一次,每次只 miss 一轮。
架构
┌──────────┬──────────────────────┬─────────────────────────────┬────────────────────┐
│ System │ 活跃区 (15轮) │ 归档区 (30轮) │ 超级归档区 (>30轮) │
│ (稳定) │ 全量保留, tool≤5K字 │ u/a全量, tool截20字 │ 全部压缩到20字 │
└──────────┴──────────────────────┴─────────────────────────────┴────────────────────┘
↑ 平时原位压缩,不动前缀 → 100% 命中
↑ 归档 token > 80K 触发大砍刀 → miss 1 轮后秒恢复
- 活跃区 (15轮) — user/assistant 全量保留,tool 结果智能截断(≤5000 字)
- 归档区 (30轮) — user/assistant 全量保留(不截断!),tool 原位压缩到 20 字
- 超级归档区 — 大砍刀时批量压缩到 20 字(搭便车,反正该轮已 miss)
- 平时 100% 缓存命中 — 不修改任何已有消息位置,仅原位压缩 tool 内容
实测数据
✂️ 大砍刀 184K→211条, 剩 token≈30K
Round 1 cacheHit=22528 (39%) ← 挨刀,仅此一轮
Round 2 cacheHit=57472 (99.5%) ← 秒恢复
Round 5 cacheHit=63360 (99.95%)← 持续收敛
部署
Node.js ≥ 18
node memory-keeper.js
# 端口: http://127.0.0.1:18794/v1
OpenClaw 配置 (openclaw.json):
"models": {
"providers": {
"deepseek": {
"baseUrl": "http://127.0.0.1:18794/v1"
}
}
}
杀进程(铁律:按 PID,禁止 Stop-Process -Name node -Force):
# 找PID
Get-Process -Name node | Where-Object { (Get-WmiObject Win32_Process -Filter "ProcessId=$($_.Id)").CommandLine -match "memory-keeper" }
# 按PID杀
Stop-Process -Id <PID> -Force
配置 (memory-keeper.config.json)
| 参数 | 默认值 | 说明 |
|---|---|---|
port | 18794 | 监听端口 |
activeRounds | 15 | 活跃区保留轮数(全量保留) |
archiveMaxRounds | 30 | 归档区上限轮数(u/a 全量) |
superArchiveEnabled | true | 超级归档区开关 |
superArchiveTruncateChars | 20 | 超级归档区截断字数 |
trimTokenThreshold | 80000 | 大砍刀 token 阈值 |
trimArchiveKeepRounds | 15 | 大砍刀后归档区保留轮数 |
activeToolMaxChars | 5000 | 活跃区 tool 截断上限 |
大砍刀三档逻辑(针对归档区轮数):
| 归档区轮数 | 操作 |
|---|---|
| ≥ 15 轮 | 砍 15 轮 |
| 10-14 轮 | 砍 5 轮 |
| < 10 轮 | 不砍归档区,只砍超级归档区 |
v8 核心改进(vs v7)
| 问题 | v7 | v8 |
|---|---|---|
| 重启重置 | v5 检测误判,每次重启清空 | ✅ 移除 |
| OpenClaw 裁剪 | 跟着重置 internalBody | ✅ 独立维护 |
| 平时缓存命中 | 每轮截断破坏前缀 | ✅ 原位压缩,100% 命中 |
| 大砍刀频率 | 每 50 轮 | ✅ 每 30-40 轮,阈值 80K |
| 大砍刀恢复 | 砍完长期崩 | ✅ 第二轮恢复 99.5% |
| 去重 | 有时重复注入 | ✅ 检测跳过 |
日志
# 实时监控(含缓存命中率)
Get-Content "logs\memory-keeper-2026-06-22.log" -Tail 20 -Wait
# 关注指标
💰 ← cacheHit/cacheMiss 实时比
✂️ ← 大砍刀触发
📊 ← 内部状态(轮数、token 占比)
License
BUSL 1.1 → 2029 年转 Apache 2.0
