🧠 Memory Fusion Lite
基于 dztabel-happy/openclaw-memory-fusion 核心思想重构,保留最有价值的三部分,轻量集成到现有 Dreaming 系统。
核心价值
| 来自 memory-fusion | 在本 skill 中的实现方式 |
|---|
| Byte offset 增量扫描 | scan_sessions_incremental.py(原生脚本) |
| A′ 滚动7天区 | Dreaming L2 phase 自动写 MEMORY.md 末尾滚动区 |
| 防套娃三保险 | 扫描器忽略规则 + prompt 前缀 + 收敛验证 |
| 每周分类治理 | Weekly cron job 执行晋升/剪枝/归档 |
架构概览
session JSONL
│
├── Dreaming(每晚 3am)
│ └── DREAMS.md + memory/dreaming/
│
├── memory-fusion-lite L2(每天 23:30)
│ └── scan_sessions_incremental.py(增量)
│ → LLM 提炼 → MEMORY.md#A′ 滚动区(≤30条)
│
└── memory-fusion-lite L3(每周一 00:20)
└── LLM 扫描 A′ → 晋升1-2条 → weekly 归档
安装前检查
1. Dreaming 必须已启用
检查 plugins.entries.memory-core.config.dreaming.enabled === true
2. memory/_state/ 目录已创建
mkdir -p ~/.openclaw/workspace/memory/_state
3. memory/weekly/ 目录已创建
mkdir -p ~/.openclaw/workspace/memory/weekly
文件清单
核心脚本
scripts/scan_sessions_incremental.py — 增量扫描脚本(来自 memory-fusion 原始仓库,618行 Python3)
必读参考文档
references/a-prime-zone.md — A′ 滚动7天区格式规范与维护规则
references/anti-recursion.md — 防套娃三保险实现细节
references/weekly-governance.md — 每周分类治理流程
可选参考
references/diff-from-dreaming.md — 与 Dreaming 的分工边界说明
触发条件
自动触发(cron):
| 层级 | 名称 | cron 表达式 | 内容 |
|---|
| L2 | memory-fusion-lite daily | 30 23 * * *(Asia/Shanghai) | 增量扫描 → LLM 提炼 → A′ 区写入 |
| L3 | memory-fusion-lite weekly | 20 0 * * 1(Asia/Shanghai) | A′ 区分类治理 + 晋升 + 归档 |
手动触发:
/memory-fusion-lite daily — 立即执行 L2 daily
/memory-fusion-lite weekly — 立即执行 L3 weekly
/memory-fusion-lite status — 查看各层执行状态
L2 执行流程(增量扫描管道)
1. 运行脚本
python3 scripts/scan_sessions_incremental.py \
--openclaw-dir /root/.openclaw \
--agent main \
--format md \
--max-messages 50
2. 脚本输出(markdown)→
## session-xxxx
- U: user 消息
- A: assistant 最终回复(不含tool_calls)
3. LLM 提炼(忽略 cron/NO_REPLY/System 消息)
4. 写 MEMORY.md A′ 区
- 每天最多5条
- 总数超30条时删除最老条目
- 更新 "上次清理" 注释
A′ 滚动7天区(核心)
格式
在 MEMORY.md 末尾维护一个独立章节:
## 近期重要更新(自动,滚动7天)
<!-- A′ zone: auto-maintained by memory-fusion-lite -->
<!-- 规则:≤30条,每天最多新增5条,每周晋升1-2条到上方分类区 -->
<!-- 上次清理:2026-04-15 -->
## 2026-04-15
- **主题**:简短描述
维护规则
- 条目上限:≤30条,超出时删除最老的
- 每日新增:每天 L2 最多加5条
- 每周晋升:L3 把"已证实且长期有效"的条目晋升到 MEMORY.md 的主分类区
- 时间窗口:滚动7天
防套娃三保险
第一保险:prompt 前缀
所有 cron prompt 第一行必须是:
[cron:memory-daily] ... (L2)
[cron:memory-weekly] ... (L3)
第二保险:扫描器忽略规则
scan_sessions_incremental.py 自动忽略:
- 首条 user 消息以
[cron: 开头的 session(_classify_is_cron_session)
- 内容含
memory-daily ok / memory-weekly ok / NO_REPLY 的消息
tool / system role 的消息
第三保险:收敛验证
脚本统计 messages_emitted 和 messages_ignored,当 ignored >> emitted 时说明过滤器在正常工作。
状态文件
| 文件 | 内容 |
|---|
memory/_state/scan_sessions_incremental.json | 字节偏移游标(脚本自带) |
memory/_state/last-daily.json | L2 上次执行时间戳 |
memory/_state/last-weekly.json | L3 上次执行时间戳 + ISO week |
memory/_state/weekly-gate.json | 本周是否已执行 flag |
与 Dreaming 的分工
| Dreaming | memory-fusion-lite |
|---|
| 触发 | 每晚 3am | L2 23:30 / L3 周一 00:20 |
| 重点 | 语义理解 + 记忆整理 | 增量扫描 + 滚动更新 + 分类治理 |
| 输出 | DREAMS.md + phase reports | MEMORY.md A′ 区 + weekly 归档 |
| 扫描方式 | 全量 session | 增量(字节偏移游标) |
两者互补,不冲突。Dreaming 保留,本 skill 补强。
依赖
- Dreaming 已启用(
plugins.entries.memory-core.config.dreaming.enabled === true)
- Python3 环境(用于运行 scan_sessions_incremental.py)
- memory/ 目录存在且可写
- memory/_state/ 目录存在
- memory/weekly/ 目录存在
不包含的内容
以下 memory-fusion 功能未包含:
- 独立三层 cron 系统(与 Dreaming 重复)→ 复用 Dreaming cron 管道
- Telegram 通知面板(未配置)
- QMD embedding 变更(已有 Ollama)
升级
openclaw skills update memory-fusion-lite