Install
openclaw skills install @thcjp/memory-distiller记忆蒸馏器是面向 AI Agent 日志的智能压缩系统,针对日志膨胀、关键信息丢失、压缩后难回溯、 不同内容需不同策略四大痛点而设计。核心能力包括:分类型差异化压缩策略(事件/教训/待办/成长四类不同粒度)、 压缩溯源链(每个摘要条目保留原始段落定位标记,可一键回溯)、混合提取引擎(关键词匹配+兜底提取+混合模式)、 压缩质量评估器(压缩比/信息保留率/可读性/溯源覆盖率四维指标)、古文压缩四原则、多语言混合处理. 借鉴古文压缩哲学,把冗长原始日志蒸馏为高密度结构化摘要,实现 4-8 倍压缩比且零关键事件损失. 适用于 Agent 每日日志归档、长会话上下文压缩、项目复盘提炼、决策推理蒸馏等场景.
openclaw skills install @thcjp/memory-distiller面向 AI Agent 日志的智能压缩系统,分类型差异化压缩,含溯源链与质量评估.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 记忆蒸馏器处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 记忆蒸馏器分类型差异化压缩 | 不支持 | 支持 |
| 记忆蒸馏器含溯源链与质量评估 | 不支持 | 支持 |
| 记忆蒸馏器8倍压缩 | 不支持 | 支持 |
| 多租户管理与权限分配 | 不支持 | 支持 |
| 操作审计与合规日志 | 不支持 | 支持 |
针对四类内容采用不同压缩粒度,避免一刀切导致的信息丢失或冗余保留.
| 内容类型 | 压缩策略 | 保留要素 | 压缩示例 |
|---|---|---|---|
| 事件 | 中度压缩 | 时间、地点、参与者、结果 | "07-18 与客户 A 确认需求范围,含 3 个模块" |
| 教训 | 轻度压缩 | 教训、触发条件、规避方法 | "WebSocket 重连间隔应指数退避,固定间隔会触发限流" |
| 待办 | 高度压缩 | 任务、优先级、截止时间 | "🔴 07-20 前完成 API 联调" |
| 成长 | 中度压缩 | 改进点、前后对比、效果 | "把构建从 webpack 换成 vite,构建时间 60s 到 8s" |
压缩优先级:待办 > 事件 > 成长 > 教训(待办压缩最狠,教训保留最细). 处理: 解析分类型差异化压缩策略的输入参数,执行核心处理逻辑,返回结构化结果和执行状态.
每个摘要条目保留原始段落定位标记,支持从摘要一键回溯到原始日志细节.
[溯源: {文件路径}#{章节标题}-L{行号}]溯源回溯流程:
摘要条目:"WebSocket 重连间隔应指数退避"
溯源标记:[溯源: memory/2026-07-18.md#教训段落-L42]
# ...
回溯步骤:
1. 读取摘要中的溯源标记
2. 定位到原始文件 memory/2026-07-18.md
3. 跳转到第 42 行附近
4. 读取完整上下文
处理: 解析压缩溯源链的输入参数,执行核心处理逻辑,返回结构化结果和执行状态.
三步提取策略,确保零数据丢失.
| 步骤 | 策略 | 说明 |
|---|---|---|
| 第一步 | 关键词匹配 | 扫描标题识别 40+ 中英文模式(重大进展/breakthrough/教训/insight/待办/todo/进化/evolution 等) |
| 第二步 | 兜底提取 | 关键词不匹配时(如 ## 08:44 站会),自动提取每节顶部条目,确保零数据丢失 |
| 第三步 | 混合模式 | 多日合并文件中匹配章节用关键词提取,未匹配章节用兜底提取,两者共存 |
每次压缩后输出质量报告,四维指标量化压缩效果.
--quality-report 标志node (请参考skill目录中的脚本文件) memory/2026-07-18.md --quality-report| 指标 | 计算方法 | 及格线 |
|---|---|---|
| 压缩比 | 原始词数 / 压缩后词数 | 大于等于 4 倍 |
| 信息保留率 | 关键事件保留数 / 总关键事件数 | 大于等于 95% |
| 可读性评分 | 结构化程度(标题/列表/层级) | 大于等于 0.8 |
| 溯源覆盖率 | 含溯源标记的条目 / 总条目 | 等于 100% |
质量不达标处理:压缩比低于 4 检查大段重复;保留率低于 95% 检查兜底提取;可读性低于 0.8 增加层级结构.
借鉴古典中文写作的压缩智慧,结构化提炼而非简单缩短.
| 原则 | 含义 | 压缩示例 |
|---|---|---|
| 去重复 | 提过一次就够 | 不在 3 个章节重复"WebSocket 重连" |
| 留转折 | 只记变化点 | "从 nginx 切到 Node.js WSS" 优于 5 段调试过程 |
| 去过程 | 结果优于过程 | "失败 3 次后用 X 解决" 优于 3 段失败描述 |
| 留白 | 让读者推断 | 层级列表暗示关系,无需连接词 |
处理: 解析古文压缩四原则的输入参数,执行核心处理逻辑,返回结构化结果和执行状态.
中英文混杂日志的智能处理策略.
检测:按段落识别主要语言
- 中文段落:应用中文关键词集(重大进展、教训、待办...)
- 英文段落:应用英文关键词集(breakthrough、lesson、todo...)
- 混合段落:两套关键词集都尝试
# ...
压缩:
- 中文内容:古文压缩四原则
- 英文内容:标准摘要 + 关键句提取
- 输出语言:与原始段落语言一致
在三层记忆系统(身份层 SOUL.md / 精选记忆 MEMORY.md / 原始日志 memory/YYYY-MM-DD.md)之间执行第三层到第二层的蒸馏转换.
node (请参考skill目录中的脚本文件) memory/2026-07-18.md /tmp/compressed.md确保 Agent 每日日志以 Markdown 格式存储在 memory/YYYY-MM-DD.md 文件中,标题使用 ## YYYY-MM-DD 或 ## HH:MM 事件名 格式.
运行蒸馏脚本处理目标日志文件,可选择输出质量评估报告.
node (请参考skill目录中的脚本文件) memory/2026-07-18.md /tmp/compressed.md --quality-report
检查四维质量指标是否达标:压缩比大于等于 4 倍、信息保留率大于等于 95%、可读性大于等于 0.8、溯源覆盖率等于 100%。不达标时按提示调整.
将蒸馏后的摘要追加到 MEMORY.md,并更新维护时间戳.
cat /tmp/compressed.md >> MEMORY.md
date +%s > .last-memory-maintenance
原始日志移到 memory/archive/ 保留,不删除,确保溯源链可回溯.
mv memory/2026-07-18.md memory/archive/
| 错误类型 | 原因 | 处理方式 |
|---|---|---|
| 摘要缺失关键事件 | 关键词模式未覆盖日志中的事件表述,兜底提取未生效 | 检查兜底提取是否启用,确认日志标题格式符合识别模式,必要时补充关键词模式 |
| 溯源标记丢失 | 输出格式被手动修改或模板被覆盖 | 严格按输出格式模板生成摘要,溯源标记格式为 [溯源: {文件路径}#{章节标题}-L{行号}] |
| 压缩比低于 4 倍 | 日志本身已高度结构化,或大段重复未去除 | 检查是否有大段重复内容未应用去重原则,高度结构化日志属正常现象 |
| 信息保留率低于 95% | 兜底提取未覆盖所有章节,或关键词匹配遗漏 | 确认兜底提取对所有未匹配章节生效,检查日志是否有无标题段落 |
| 多日合并文件处理错乱 | 日期分隔符格式不统一(如混用 ## 2026-07-18 和 ` |
) | 标准化日期分隔符为 ## YYYY-MM-DD` 格式后重新蒸馏 || 中文日志压缩效果差 | 中文关键词集未正确加载或日志编码异常 | 确认日志为 UTF-8 编码,检查中文关键词模式是否匹配日志表述风格 | | 超长单段落处理异常 | 单段超过 500 词无换行 | 脚本按句子切分提取关键句,若失败则手动分段后重新处理 | | 可读性评分低于 0.8 | 输出摘要缺乏层级结构,全部为平铺列表 | 增加标题层级与嵌套列表,按事件/教训/待办/成长分组呈现 |
用户当天产生了 2800 词的开发日志,需要压缩归档并验证质量.
用户:"今天的日志太长了,帮我压缩归档,要保证不丢关键信息"
# ...
输入文件:memory/2026-07-18.md(2,800 词)
# ...
执行:
1. 运行:node (请参考skill目录中的脚本文件) memory/2026-07-18.md /tmp/compressed.md --quality-report
2. 混合提取引擎扫描:
- 关键词匹配:识别"重大进展""教训""待办""进化"等模式
- 兜底提取:未匹配的 ## 09:30 站会 等时间标题章节
- 混合模式:两部分共存
3. 分类型差异化压缩:
- 事件(中度压缩):保留时间、参与者、结果
- 教训(轻度压缩):保留触发条件、规避方法
- 待办(高度压缩):保留任务、优先级、截止时间
- 成长(中度压缩):保留改进点、前后对比
4. 生成溯源标记:每个条目附 [溯源: memory/2026-07-18.md#章节-L行号]
5. 输出质量报告
# ...
输出文件:/tmp/compressed.md(420 词,压缩比 6.67 倍)
# ...
质量报告:
压缩比:6.67 倍(及格线 4 倍)✓
信息保留率:98%(及格线 95%)✓
可读性评分:0.92(及格线 0.8)✓
溯源覆盖率:100%(及格线 100%)✓
# ...
输出内容结构:
## 2026-07-18 关键经验
### 关键事件
- **完成支付模块联调**
- 对接支付宝与微信支付 API
- PostgreSQL数据库事务回滚测试通过
- [溯源: memory/2026-07-18.md#支付模块联调-L15]
### 核心教训
- WebSocket 重连间隔应指数退避,固定间隔触发限流
- [溯源: memory/2026-07-18.md#教训段落-L42]
### 待办/未完成
- 🔴 07-20 前完成订单模块测试
- [溯源: memory/2026-07-18.md#待办事项-L58]
### 成长记录
- 把构建从 webpack 换成 vite,构建时间 60s 到 8s
- [溯源: memory/2026-07-18.md#构建优化-L67]
# ...
后续操作:
cat /tmp/compressed.md >> MEMORY.md
mv memory/2026-07-18.md memory/archive/
用户一个会话聊了 50 轮,上下文即将超限,需要压缩早期轮次保留关键信息.
用户:"这个会话聊了 50 轮,上下文快爆了,帮我压缩"
# ...
执行:
1. 提取会话历史为日志格式(memory/2026-07-18-session.md)
2. 运行蒸馏器压缩:
node (请参考skill目录中的脚本文件) memory/2026-07-18-session.md /tmp/session-compressed.md
3. 分类型压缩:
- 决策类内容(事件策略):保留决策内容与原因
- 教训类内容(教训策略):保留问题与规避方法
- 待办类内容(待办策略):保留任务与优先级
4. 保留最近 5 轮原文 + 早期 45 轮蒸馏摘要
5. 重新加载压缩后上下文
# ...
结果:
原始上下文:约 12,000 token(50 轮)
压缩后上下文:约 3,500 token(5 轮原文 + 45 轮摘要)
压缩比:约 3.4 倍
溯源链:所有摘要条目可回溯到原始会话记录
用户一周未维护记忆,7 天日志累积约 17500 词,需要批量蒸馏并生成跨日关联.
用户:"把这周的日志都蒸馏了,要能回溯"
# ...
执行:
1. 批量处理 7 天日志:
for file in memory/2026-07-{12..18}.md; do
[ -f "$file" ] && node (请参考skill目录中的脚本文件) "$file" "/tmp/$(basename $file)" --quality-report
done
2. 每天单独蒸馏(保留日期维度与溯源链)
3. 逐个审查质量报告
4. 依次追加到 MEMORY.md
5. 原始日志批量归档到 memory/archive/
# ...
结果:
原始总量:约 17,500 词
蒸馏后总量:约 2,800 词
整体压缩比:6.25 倍
溯源覆盖率:100%
所有摘要条目可通过溯源标记回溯到 memory/archive/ 中的原始日志
每个摘要条目都含溯源标记 [溯源: {文件路径}#{章节标题}-L{行号}],按标记回溯到原始日志即可。原始日志建议归档到 memory/archive/ 而非删除,确保溯源链始终可回溯。回溯流程:读取摘要中的溯源标记 → 定位到归档文件 → 跳转到指定行号附近 → 读取完整上下文.
混合提取引擎有三重保障:第一步关键词匹配提取 40+ 中英文模式;第二步未匹配时兜底提取章节顶部条目;第三步多日文件用混合模式。质量评估器检查信息保留率大于等于 95%,达不到会告警。分类型差异化压缩确保教训类内容轻度压缩(保留最细),待办类内容高度压缩(只留任务与优先级).
典型 4-8 倍,取决于原始日志的冗余度与内容类型分布。重复内容多则压缩比高(可达 8 倍),结构化日志压缩比相对低(约 4 倍)。日均 2500 词的日志通常蒸馏到 400 词左右。质量评估器会报告实际压缩比,低于 4 倍时会提示检查大段重复.
避免一刀切导致的问题。待办只需任务与优先级,高度压缩不影响理解;教训需要触发条件与规避方法,过度压缩会丢失关键细节。四类内容四套压缩规则,在信息保留与体积控制之间取得最优平衡。压缩优先级为待办 > 事件 > 成长 > 教训,教训保留最细.
压缩比衡量体积缩减程度(及格线 4 倍);信息保留率衡量关键事件是否遗漏(及格线 95%);可读性评分衡量结构化程度(及格线 0.8,看标题/列表/层级是否充分);溯源覆盖率衡量回溯能力(及格线 100%,所有条目必须含溯源标记)。四项全达标才算合格蒸馏.
MEMORY.md 也需要定期治理。建议:超过 5000 词时把早期内容二次压缩到 SOUL.md(身份层);按月归档 MEMORY.md 到 memory/archive/;仅保留近 30 天摘要在 MEMORY.md 中。配合心跳任务每 2-3 天执行一次蒸馏可控制增长速度.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Node.js | 运行时 | 必需 | Node.js 官网安装,版本 16+ |
| memory-compress.js | 脚本 | 必需 | 随技能提供 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
本技能基于本地 Node.js 脚本处理日志文件,无需额外 API Key。蒸馏逻辑由脚本本地执行,不调用外部 API.
## YYYY-MM-DD 格式,否则可能处理错乱
以下是记忆蒸馏器的YYYY-MM-DD` 格式,否则可能处理错乱说明,包含具体配置与使用方式.