记忆蒸馏器
面向 AI Agent 日志的智能压缩系统,分类型差异化压缩,含溯源链与质量评估.
输入格式
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 记忆蒸馏器处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
付费版专享能力
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 记忆蒸馏器分类型差异化压缩 | 不支持 | 支持 |
| 记忆蒸馏器含溯源链与质量评估 | 不支持 | 支持 |
| 记忆蒸馏器8倍压缩 | 不支持 | 支持 |
| 多租户管理与权限分配 | 不支持 | 支持 |
| 操作审计与合规日志 | 不支持 | 支持 |
核心能力
1. 分类型差异化压缩策略
针对四类内容采用不同压缩粒度,避免一刀切导致的信息丢失或冗余保留.
- 参数:内容类型(事件/教训/待办/成长)、压缩策略
- 用法:自动识别日志内容类型并应用对应策略
- 输出:按类型分组的差异化压缩摘要
| 内容类型 | 压缩策略 | 保留要素 | 压缩示例 |
|---|---|---|---|
| 事件 | 中度压缩 | 时间、地点、参与者、结果 | "07-18 与客户 A 确认需求范围,含 3 个模块" |
| 教训 | 轻度压缩 | 教训、触发条件、规避方法 | "WebSocket 重连间隔应指数退避,固定间隔会触发限流" |
| 待办 | 高度压缩 | 任务、优先级、截止时间 | "🔴 07-20 前完成 API 联调" |
| 成长 | 中度压缩 | 改进点、前后对比、效果 | "把构建从 webpack 换成 vite,构建时间 60s 到 8s" |
压缩优先级:待办 > 事件 > 成长 > 教训(待办压缩最狠,教训保留最细). 处理: 解析分类型差异化压缩策略的输入参数,执行核心处理逻辑,返回结构化结果和执行状态.
2. 压缩溯源链
每个摘要条目保留原始段落定位标记,支持从摘要一键回溯到原始日志细节.
- 参数:溯源标记格式
[溯源: {文件路径}#{章节标题}-L{行号}] - 用法:压缩时自动生成溯源标记,回溯时按标记定位原始文件
- 输出:含溯源标记的摘要条目
溯源回溯流程:
摘要条目:"WebSocket 重连间隔应指数退避"
溯源标记:[溯源: memory/2026-07-18.md#教训段落-L42]
# ...
回溯步骤:
1. 读取摘要中的溯源标记
2. 定位到原始文件 memory/2026-07-18.md
3. 跳转到第 42 行附近
4. 读取完整上下文
处理: 解析压缩溯源链的输入参数,执行核心处理逻辑,返回结构化结果和执行状态.
3. 混合提取引擎
三步提取策略,确保零数据丢失.
- 参数:无额外参数,引擎自动选择策略
- 用法:自动扫描日志标题与内容
- 输出:提取后的关键信息条目
| 步骤 | 策略 | 说明 |
|---|---|---|
| 第一步 | 关键词匹配 | 扫描标题识别 40+ 中英文模式(重大进展/breakthrough/教训/insight/待办/todo/进化/evolution 等) |
| 第二步 | 兜底提取 | 关键词不匹配时(如 ## 08:44 站会),自动提取每节顶部条目,确保零数据丢失 |
| 第三步 | 混合模式 | 多日合并文件中匹配章节用关键词提取,未匹配章节用兜底提取,两者共存 |
4. 压缩质量评估器
每次压缩后输出质量报告,四维指标量化压缩效果.
- 参数:
--quality-report标志 - 用法:
node (请参考skill目录中的脚本文件) memory/2026-07-18.md --quality-report - 输出:质量评估报告
| 指标 | 计算方法 | 及格线 |
|---|---|---|
| 压缩比 | 原始词数 / 压缩后词数 | 大于等于 4 倍 |
| 信息保留率 | 关键事件保留数 / 总关键事件数 | 大于等于 95% |
| 可读性评分 | 结构化程度(标题/列表/层级) | 大于等于 0.8 |
| 溯源覆盖率 | 含溯源标记的条目 / 总条目 | 等于 100% |
质量不达标处理:压缩比低于 4 检查大段重复;保留率低于 95% 检查兜底提取;可读性低于 0.8 增加层级结构.
5. 古文压缩四原则
借鉴古典中文写作的压缩智慧,结构化提炼而非简单缩短.
- 参数:无,内置于压缩逻辑
- 用法:自动应用于所有压缩操作
- 输出:遵循四原则的结构化摘要
| 原则 | 含义 | 压缩示例 |
|---|---|---|
| 去重复 | 提过一次就够 | 不在 3 个章节重复"WebSocket 重连" |
| 留转折 | 只记变化点 | "从 nginx 切到 Node.js WSS" 优于 5 段调试过程 |
| 去过程 | 结果优于过程 | "失败 3 次后用 X 解决" 优于 3 段失败描述 |
| 留白 | 让读者推断 | 层级列表暗示关系,无需连接词 |
处理: 解析古文压缩四原则的输入参数,执行核心处理逻辑,返回结构化结果和执行状态.
6. 多语言混合处理
中英文混杂日志的智能处理策略.
- 参数:无,按段落自动检测
- 用法:自动识别段落语言并应用对应关键词集
- 输出:与原始段落语言一致的摘要
检测:按段落识别主要语言
- 中文段落:应用中文关键词集(重大进展、教训、待办...)
- 英文段落:应用英文关键词集(breakthrough、lesson、todo...)
- 混合段落:两套关键词集都尝试
# ...
压缩:
- 中文内容:古文压缩四原则
- 英文内容:标准摘要 + 关键句提取
- 输出语言:与原始段落语言一致
7. 三层记忆架构蒸馏
在三层记忆系统(身份层 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 和 ` |
7月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/ 中的原始日志
FAQ
Q1:压缩后想看原始细节怎么办?
每个摘要条目都含溯源标记 [溯源: {文件路径}#{章节标题}-L{行号}],按标记回溯到原始日志即可。原始日志建议归档到 memory/archive/ 而非删除,确保溯源链始终可回溯。回溯流程:读取摘要中的溯源标记 → 定位到归档文件 → 跳转到指定行号附近 → 读取完整上下文.
Q2:压缩会不会丢掉重要信息?
混合提取引擎有三重保障:第一步关键词匹配提取 40+ 中英文模式;第二步未匹配时兜底提取章节顶部条目;第三步多日文件用混合模式。质量评估器检查信息保留率大于等于 95%,达不到会告警。分类型差异化压缩确保教训类内容轻度压缩(保留最细),待办类内容高度压缩(只留任务与优先级).
Q3:压缩比能到多少?
典型 4-8 倍,取决于原始日志的冗余度与内容类型分布。重复内容多则压缩比高(可达 8 倍),结构化日志压缩比相对低(约 4 倍)。日均 2500 词的日志通常蒸馏到 400 词左右。质量评估器会报告实际压缩比,低于 4 倍时会提示检查大段重复.
Q4:分类型差异化压缩有什么好处?
避免一刀切导致的问题。待办只需任务与优先级,高度压缩不影响理解;教训需要触发条件与规避方法,过度压缩会丢失关键细节。四类内容四套压缩规则,在信息保留与体积控制之间取得最优平衡。压缩优先级为待办 > 事件 > 成长 > 教训,教训保留最细.
Q5:质量评估器的四个指标分别什么含义?
压缩比衡量体积缩减程度(及格线 4 倍);信息保留率衡量关键事件是否遗漏(及格线 95%);可读性评分衡量结构化程度(及格线 0.8,看标题/列表/层级是否充分);溯源覆盖率衡量回溯能力(及格线 100%,所有条目必须含溯源标记)。四项全达标才算合格蒸馏.
Q6:MEMORY.md 越来越大怎么办?
MEMORY.md 也需要定期治理。建议:超过 5000 词时把早期内容二次压缩到 SOUL.md(身份层);按月归档 MEMORY.md 到 memory/archive/;仅保留近 30 天摘要在 MEMORY.md 中。配合心跳任务每 2-3 天执行一次蒸馏可控制增长速度.
依赖说明
运行环境
- Agent 平台:支持 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
- 操作系统:Windows / macOS / Linux
- 运行时:Node.js 16+
依赖项
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Node.js | 运行时 | 必需 | Node.js 官网安装,版本 16+ |
| memory-compress.js | 脚本 | 必需 | 随技能提供 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
API Key 配置
本技能基于本地 Node.js 脚本处理日志文件,无需额外 API Key。蒸馏逻辑由脚本本地执行,不调用外部 API.
可用性分类
- 分类:MD+EXEC(Markdown 指令驱动,需 exec 执行 Node.js 脚本)
- 说明:基于 Markdown 的 AI Skill,通过自然语言指令驱动 Agent 运行蒸馏脚本并处理结果
已知限制
- 依赖 Node.js 运行时,无 Node.js 环境无法使用
- 蒸馏质量取决于原始日志的 Markdown 结构化程度,无结构纯文本压缩效果较差
- 溯源链依赖原始日志保留,若原始日志被删除则溯源标记失效
- 不支持二进制格式(.docx、.pdf),需预先转换为 Markdown
- 质量评估器的信息保留率基于关键事件识别,无法覆盖所有类型的信息丢失
- 多日合并文件的日期分隔符需统一为
## YYYY-MM-DD格式,否则可能处理错乱 以下是记忆蒸馏器的YYYY-MM-DD` 格式,否则可能处理错乱说明,包含具体配置与使用方式.
