Memory Archiver Skill - 记忆归档技能
版本: 10.3.0 (安全修复:execFile 杜绝命令注入)
创建日期: 2026-03-11
更新日期: 2026-04-14
作者: c32
📋 技能描述
二维记忆架构:时间分层 × 类型标签
- 时间分层: daily (每天) → weekly (每周) → long-term (长期/MEMORY.md)
- 类型标签: [episodic] 事件 / [semantic] 知识 / [procedural] 流程
- 存储: 每日记忆 + 每周记忆 + 长期精选记忆
- WAL 协议: Write-Ahead Log,写前日志防数据丢失
- 统一 Hook (message:received): 自动搜索 + 自动提取 + 会话笔记追踪(整合原 auto-memory-extract + session-notes)
🎯 功能清单
时间分层任务
| 任务 | 频率 | 说明 |
|---|
| 记忆及时写入 | 10 分钟 | 检查并写入重要信息到 daily 文件 |
| 记忆归档 - Daily 层 | 每天 23:00 | 提炼当天内容到 daily 文件 |
| 记忆总结 - Weekly 层 | 每周日 22:00 | 提炼 weekly 到 MEMORY.md 长期记忆 |
记忆巩固(原 auto-dream)
| 任务 | 频率 | 说明 |
|---|
| 记忆巩固 | 每 6 小时 | 闸门检查(24h/5新会话) → 老化清理 → 数量限制 → 索引更新 → 去重 |
| 老化清理 | 随巩固触发 | 标记并清理超过 30 天的记忆文件 |
| 数量限制 | 随巩固触发 | 每类型最多 50 条,超出清理最旧的 |
| 索引更新 | 随巩固触发 | 重建 MEMORY.md 底部记忆索引 |
| 去重 | 随巩固触发 | MEMORY.md 段落级去重(清理重复/无效内容) |
自动搜索 Hook(多维度增强)
| 功能 | 说明 |
|---|
| 消息类型检测 | 疑问/修复/规范/特征/配置/命令/技术 |
| 关键词提取 | 自动提取中英文关键词 |
| 维度 1: 关键词搜索 | 在 SESSION-STATE.md 缓存中搜索 |
| 维度 2: 类型标签搜索 | 按 [episodic]/[semantic]/[procedural] 标签搜索 |
| 维度 3: 时间维度搜索 | 今日→昨日→长期记忆,优先最近 |
| 维度 4: 组合搜索 | 多关键词 OR 关系,扩大匹配范围 |
| 上下文注入 | 合并所有维度结果注入 prompt |
自动记忆提取
| 功能 | 说明 |
|---|
| 记忆分类 | 基于关键词和模式自动分类为 user/feedback/project/reference |
| 自动去重 | MD5 hash + 模糊匹配,防止重复写入 |
| 索引更新 | 自动更新 MEMORY.md 底部记忆索引 |
会话笔记追踪
| 功能 | 说明 |
|---|
| 自动初始化 | 新会话自动创建笔记 |
| 会话归档 | 会话结束自动生成摘要并归档 |
📂 文件结构
skills/memory-archiver/
├── SKILL.md # 本文件
├── skill.json # 技能元数据
├── _meta.json # ClawHub 元数据
├── .clawhub/ # ClawHub 同步目录
│ └── origin.json # 来源信息
├── scripts/
│ ├── install.js # 安装脚本(含 hook 自动注册)
│ ├── auto-memory-search.js # 自动记忆搜索(被 hook 调用)
│ ├── memory-loader.js # 加载记忆到缓存
│ ├── memory-search.js # 搜索记忆
│ ├── memory-refresh.js # 智能刷新缓存
│ ├── memory-dedup.js # MEMORY.md 段落级去重
│ ├── memory-extract.js # 从对话提取记忆
│ ├── memory-classify.js # 关键词分类器
│ ├── memory-dedup-extract.js # 提取去重(MD5 hash)
│ ├── memory-aging.js # 记忆老化与数量限制检查
│ ├── dream-consolidate.js # 记忆巩固主程序(闸门+索引+编排,原 auto-dream)
│ ├── dream-lock.js # 文件锁(防止并发巩固)
│ ├── session-tracker.js # 会话笔记追踪
│ └── README.md # 脚本说明文档
├── hooks/ # Hook 源文件(安装时复制到 workspace/hooks/)
│ ├── handler.js # Hook 处理器(事件:message:received)
│ ├── HOOK.md # Hook 元数据
│ └── bootstrap-loader/ # 启动加载 Hook
│ ├── handler.js # Hook 处理器(事件:agent:bootstrap)
│ └── HOOK.md # Hook 元数据
└── prompts/ # 提示词
└── consolidation.md # 记忆巩固提示词
安装后的工作区文件
~/.openclaw/workspace/
├── MEMORY.md # 长期精选记忆
├── hooks/
│ └── memory-archiver-hook/ # Hook(由 install.js 自动部署)
│ ├── handler.js
│ └── HOOK.md
└── memory/
├── daily/ # 每日记忆
├── weekly/ # 每周记忆
├── auto/ # 自动分类记忆 (user/feedback/project/reference)
├── .dream-state.json # 巩固状态(自动维护)
└── .dream.lock # 巩固文件锁
🔧 安装
方法 1: 通过 ClawHub 安装(推荐 ⭐)
clawhub install memory-archiver
安装后自动执行:
- 创建
memory/daily/ 和 memory/weekly/ 目录
- 部署 hook 到
workspace/hooks/memory-archiver-hook/
- 执行
openclaw hooks install --link 注册 hook
- 自动添加 3 个 cron 任务
- 提示重启 gateway
方法 2: 本地技能目录(开发调试)
如果技能已在 ~/.openclaw/workspace/skills/memory-archiver/:
node ~/.openclaw/workspace/skills/memory-archiver/scripts/install.js
验证安装
openclaw hooks list
# 应看到 memory-archiver-hook (✓ ready)
openclaw cron list
# 应看到 3 个记忆相关任务
📝 记忆写入规范
三类记忆标签
| 标签 | 说明 | 例子 |
|---|
[episodic] | 事件/经历 | "用户今天完成了模板重设计" |
[semantic] | 知识/事实 | "用户喜欢 Tailwind CSS" |
[procedural] | 流程/方法 | "部署步骤:1. 构建 2. 上传 3. 重启" |
记录原则
✅ 应该记录:
- 关键决策和教训
- 新发现的有价值内容
- 技术栈使用经验
- 工作习惯调整
- 用户偏好
❌ 不应该记录:
- ❌ 重复的上下文 — 已有记录的内容不再重复
- ❌ 毫无意义的日常 — 无事发生就不记
- ❌ 重复的任务进度提示 — 避免刷屏
- ❌ 私密细节 — 保护隐私
- ❌ 短期易变想法 — 临时念头不持久
核心判断: 这条信息在未来回顾时是否有价值?
🔍 记忆搜索
自动加载(OpenClaw 启动时)
每次 OpenClaw 启动时,通过 agent:bootstrap Hook 自动加载记忆到缓存,无需手动触发。
加载内容:今日 + 昨日 + 最近 3 天 daily + MEMORY.md + 最近 weekly
交互式搜索
node ~/.openclaw/workspace/skills/memory-archiver/scripts/memory-search.js "搜索内容"
在对话中使用:
使用 grep 搜索
# 搜索所有记忆文件
grep -ri "CSS" ~/.openclaw/workspace/memory/
# 带上下文显示
grep -riC 3 "CSS" ~/.openclaw/workspace/memory/daily/*.md
📊 版本历史
| 版本 | 日期 | 变更 |
|---|
| 10.1 | 2026-04-14 | 全部 .sh 转为 .js: install/memory-search/memory-loader/memory-refresh/memory-dedup/dream-lock 全部纯 JS |
| 10.0 | 2026-04-14 | 整合 auto-memory-extract + session-notes: 统一 Hook (message:received) 包含搜索/提取/会话笔记三模块 |
| 9.0 | 2026-04-14 | 完全整合 auto-dream: dream-consolidate.js(闸门+索引+编排)、dream-lock.js(文件锁)、prompts/consolidation.md 全部迁入,auto-dream 技能移除 |
| 8.0 | 2026-04-13 | 整合 auto-dream 去重功能: memory-dedup.js 现在负责 MEMORY.md 段落去重,auto-dream 仅负责触发 |
| 7.0 | 2026-03-23 | Hook 安装自动化: skill.json 添加 postinstall 脚本,clawhub install 自动部署 hook + cron |
| 6.0 | 2026-03-20 | 整合 Auto Memory Search Hook: 将独立 Hook 合并到技能内 |
| 5.0 | 2026-03-20 | 三层精简架构: 移除 monthly/yearly 层,保留 daily/weekly/long-term |
| 4.0 | 2026-03-20 | 精简版: 移除向量搜索依赖,简化架构 |
| 3.0 | 2026-03-19 | 向量增强版:整合 Qdrant + Transformers.js |
| 2.0 | 2026-03-19 | 五层时间架构 (hourly/daily/weekly/monthly/yearly) |
| 1.0 | 2026-03-11 | 初始版本 |
🛠️ 维护命令
# 检查记忆文件总量
du -sh ~/.openclaw/workspace/memory/
# 查看每日记忆文件
ls -lh ~/.openclaw/workspace/memory/daily/
# 搜索记忆内容
grep -ri "CSS" ~/.openclaw/workspace/memory/
文档最后更新:2026-04-14