Context Clear
/install context-clear
Context Clear — 记忆整理与上下文清空
纯文件系统的 SRS(间隔重复)记忆管理方案 + OpenClaw 插件。核心目标:在 token 成本和信息保留之间做自动平衡。
存储结构
~/.openclaw/memory_fs/
├── hot/ (\x3C 3h) 原始完整 ← 自动注入 session
├── warm/ (3h~7d) 原始完整
├── gist/ (7d~30d) 摘要+标签 ← warm/ 保留同名原始文件
└── forgotten/ (≥14d 无检索) 等待物理删除
~/.openclaw/refcount.json ← 引用计数 + 检索记录
记忆粒度
各层能提供的信息量不同 — 检索时据此判断结果的可信度:
| 层 | 时间窗 | 粒度 | 内容形式 | 检索置信度 |
|---|---|---|---|---|
| hot/ | \x3C 3h | 🔴 原始完整 | 对话原文、工具输出、checkpoint 全文 | 高 — 可精确引用原文 |
| warm/ | 3h~7d | 🟠 原始完整 | 同上,未被压缩 | 高 — 同 hot |
| gist/ | 7d~30d | 🟡 摘要标签 | `#标题\ | |
| 标签: xxx\ | ||||
| 摘要` | 中 — 定位话题,细节可回 warm/ 看同名原件 | |||
| forgotten/ | ≥14d 无检索 | 🔵 遗忘中 | 原始/摘要格式 | 极低 — 即将物理删除 |
设计原则: 记忆质感随时间自然衰减。近 3h 的事可精确复述,3h7d 可回顾细节,7d30d 仅能回忆话题方向。warm/ 始终保留原始文件(gist 是它的摘要副本),检索命中 gist 时可按文件名回 warm/ 读原文。
生命周期
创建
│
├─3h→ hot/ (原始完整,自动注入 session)
│
├─7d→ warm/ (原始完整)
│ │
│ ├── copy → gist/ (摘要副本,keep warm 原件)
│ │
│ └── 14d 无检索 → forgotten/
│ │
│ └── 30d → 物理删除
│
检索命中(任一层)
│
└── 轮动回 hot/ (forgotten 回 warm/)
正向衰减(organize.py 三步)
| 步骤 | 职责 | 判据 |
|---|---|---|
| 1. mtime 分层 | hot→warm(move),warm→gist(copy,warm 保留原件) | 文件 mtime |
| 2. 遗忘检查 | warm/gist→forgotten | refcount 最后检索时间距今 >14d |
| 3. 清理 | forgotten 中 >30d → 物理删除 | mtime,跳过 user_marked |
逆向轮动(检索命中 → 回热层)
| 来源 | 动作 | 原因 |
|---|---|---|
| hot/ | 不动 | 已在最热层 |
| warm/ | mv 回 hot/ + touch | 被回查 = 仍相关 |
| gist/ | mv 摘要文件回 hot/;warm 原件同回 hot/ | 完整信息双份带回 |
| forgotten/ | mv 回 warm/ + 标记 user_marked | 被检索 = 仍需要,从 warm 重新走衰减 |
组件
| 组件 | 功能 |
|---|---|
organize.py |
三步职责:mtime 分层(warm→gist copy)→ 14d 遗忘检查 → forgotten 清理 |
promote.py |
读取 refcount.json,筛选晋升候选,输出 promote_report.md |
插件 /refresh |
触发 organize → promote → session reset |
晋升机制
晋升条件(满足任一)
| 条件 | 门槛 |
|---|---|
| 7天内引用 | ≥ 3 次 |
| 14天内引用 | ≥ 5 次 |
| 总引用 | ≥ 8 次 |
| 用户标记 | user_marked = true |
晋升后处理
子 session 读取 promote_report.md 分类搬运:
- Skill 类 →
skills/\x3Cskill>/docs/retrospect.md - 偏好/事实类 →
MEMORY.md - 需判定 → 留待人工分类
晋升后从 refcount 标记 promoted: true,不再重复提名。
逐层检索协议
触发条件
当前 session 上下文找不到答案时启动:
| 信号 | 表现 |
|---|---|
| 用户提之前讨论过的话题 | "我们上次是不是讨论过 XXX" |
| 用户问之前达成的共识 | "XX 的结论是什么" |
| 自我感知 | 我注意到信息不在当前上下文中 |
| 用户明示 | "之前说过""之前写过" |
检索顺序
hot/ → warm/ → gist/ → forgotten/ 找到即停
检索方法
# hot/warm — 原始内容,关键词 grep
grep -ril "关键词1\|关键词2" ~/.openclaw/memory_fs/hot/
grep -ril "关键词1\|关键词2" ~/.openclaw/memory_fs/warm/
# gist — 先按标签再按关键词
grep -ril "tag1\|tag2" ~/.openclaw/memory_fs/gist/
grep -ril "关键词" ~/.openclaw/memory_fs/gist/
# forgotten — 最低优先级
grep -ril "关键词" ~/.openclaw/memory_fs/forgotten/
关键词:从用户问题+上下文提炼 2-5 个核心词。匹配 >3 个时缩小重试。
命中处理
| 步骤 | 动作 |
|---|---|
| 1 | 读入匹配文件内容 |
| 2 | 轮动:按来源层执行逆向轮动(见上表) |
| 3 | 更新 refcount:total +1,timestamps 追加时间戳 |
| 4 | gist 层命中但摘要不够 → 去 warm/ 读同名原始文件(原件完好 ✓) |
匹配 >3 个文件 → 缩小关键词重试,不一次性读入。
未命中处理
memory_fs 中未找到关于 'XXX' 的记录。可能原因:
- 从未被记录过
- 已物理删除(进入 forgotten 后 30 天无调用自动清理)
- 关键词不对,换组词再试
引用计数联动
每次命中递增 refcount → 频繁被回查的信息自然达到晋升门槛 → 自动存入 MEMORY.md。
{
"warm/my-checkpoint.md": {
"total": 5,
"7d": 3,
"timestamps": [1748073600, 1748160000],
"user_marked": false,
"summarized": false,
"created": 1748000000
}
}
搜索决策树(速查)
当前上下文找不到信息?
→ hot/ → 命中?→ 读入,不轮动
→ warm/ → 命中?→ 读入,mv 回 hot/
→ gist/ → 命中?
→ 摘要够?→ 直接读,摘要文件 mv 回 hot/
→ 不够?→ warm/ 读同名原始文件,双份回 hot/
→ forgotten/ → 命中?
→ mv 回 warm/ + 标记 user_marked,提醒用户已找回历史记忆
→ 都没找到 → 如实告知
注意要点
- 始终优先搜 hot/(最近、最相关)
- 先读文件名确认相关,再读文件内容
- gist 摘要不够用时,warm/ 有同名原始文件可读 — organize.py 已从 move 改为 copy
- forgotten 命中后轮动回 warm/,从 warm 重新走衰减周期
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install context-clear - 安装完成后,直接呼叫该 Skill 的名称或使用
/context-clear触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Context Clear 是什么?
Memory management system with automated tiered storage (hot/warm/gist/forgotten), time-decay organization, promotion engine, layer-search protocol, and sessi... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 26 次。
如何安装 Context Clear?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install context-clear」即可一键安装,无需额外配置。
Context Clear 是免费的吗?
是的,Context Clear 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Context Clear 支持哪些平台?
Context Clear 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Context Clear?
由 slientRain-new(@slientrain-new)开发并维护,当前版本 v1.0.0。