Install
openclaw skills install @smliences/memory-tuneropenclaw skills install @smliences/memory-tunerMEMORY.md 只增不减会无限膨胀。OpenClaw 没有"多久没被读到就自动删"的机制(无 LRU/TTL;dreaming 只做晋升不做淘汰;且无 memory 工具级 hook 可挂)。本 skill 用自律埋点 + 定期统计 + 分级处置 + 容量淘汰实现按读取频率优化:
<!-- keep -->)→ 永不降级memory_search/memory_get 命中,还是 bootstrap 注入后我在回复中直接引用了它——按下面规则追加一条读取记录。agentTurn 提示词引用本 skill);也可在用户要求"优化记忆"时手动执行。⚠️ 不可把"bootstrap 全文注入"当作读取:MEMORY.md 每次会话都会整文件注入,无法区分条目,统计它没有意义。只统计主动检索命中与实际引用。
memory/.track/(如不存在则创建)memory/.track/YYYY-MM.md,每行一条:
YYYY-MM-DD | <条目key> | search|get|use
search = memory_search 命中该条目所在文件/主题get = memory_get 读取了所在行区间use = 回复中实际引用了该条目内容(最可靠信号,权重最高)search/get 两类埋点由配套插件 memory-tuner-observer(ClawHub 包 smliences/memory-tuner-observer,after_tool_call hook 拦截 memory_search/memory_get)自动记录,无需人工;use 仍由本 skill 规则手动记(插件无法判断模型是否真的引用了结果)。## 节名)或 bullet 加粗名(- **xxx**);拿不准就用节名。命中多条就各记一行。memory/archive/ 里的内容不埋点(已降级,不再追踪)。自带 scripts/memory-tuner.py(只读分析,不改文件):
python3 scripts/memory-tuner.py # 默认:分析 + 出报告(dry-run,lfu 策略)
python3 scripts/memory-tuner.py --policy lru # 淘汰候选按 lru(最久未读)排序
python3 scripts/memory-tuner.py --policy lfu # 淘汰候选按 lfu(引用最少)排序(默认)
python3 scripts/memory-tuner.py --mark # 额外在冷/冻条目上加 <!-- cold --> / <!-- frozen --> 注释
python3 scripts/memory-tuner.py --json # 机器可读输出
脚本支持 OPENCLAW_WORKSPACE 环境变量覆盖工作区根目录(默认 ~/.openclaw/workspace),便于多机/多用户使用。
## 为节,节内 - **加粗标题**(或 - bullet)为条目;尊重 <!-- keep -->(常青)、<!-- cold: 日期 -->、<!-- frozen: 日期 --> 标注。memory/.track/*.md 的行,按 key 模糊匹配(节名/加粗名包含匹配)。行数即引用次数,直接累计。hits(总引用次数)、hits_30d(30 天内引用次数)、hits_90d(90 天内引用次数)、last_hit(最后引用日期)、sources。| 档位 | 条件 | 建议动作 |
|---|---|---|
| hot | hits_30d ≥ 1 | 上移到本 section 顶部 |
| warm | 有引用记录但 30d 内无 | 保留不动 |
| cold | last_hit > 30d 且 hits_90d = 0,无 keep | 降级到 memory/archive/ |
| frozen | last_hit > 60d 且 hits_90d = 0,无 keep | 备份后清理(或合并进更概括条目) |
| untracked | 无任何引用记录 | 人工复核(区分刚写入 vs 过时内容),不自动处置 |
use 记 2 分、search/get 记 1 分参与排序(简单加权,不搞复杂模型)。MAX_ITEMS = 30(条目数上限)、MAX_BYTES = 8KB(体积上限),见脚本头,可调。<!-- keep --> 与 hot 永不进入候选。Markdown 报告:各条目热度表 + 各自建议动作 + 容量水位检查;结尾给一个"本次建议执行清单"(哪些上移、哪些归档、哪些清理、哪些是超水位淘汰候选)。
--mark 出报告,给用户过目(默认模式);untracked 条目人工扫一遍:明显刚写入/仍相关 → 不动;明显过时 → 按 cold 流程走。用户确认(或 automation 已授权自动档)后再执行。memory/archive/MEMORY-<YYYY-MM>.md(保留原文与来源日期),并在当日日记记一笔。use,日期=处置日),并把 <!-- cold --> 之类的标注清掉。<!-- keep --> 一票否决:不判冷不判冻、不进入淘汰候选(例:myblog 触发词、~/software 布局、安全约定)。用户批准后建一条 cron(建议 every 每周一 10:00,或 cron 0 10 * * 1 Asia/Shanghai),isolated agentTurn 提示词:运行 memory-tuner skill 的统计与处置流程(dry-run 报告模式,先不执行),产出后 announce 给用户决定是否执行。