---

slug: "memory-distiller-v2"
name: "memory-distiller-v2"
version: 1.0.1
displayName: "记忆蒸馏器"
summary: "解决日志膨胀、关键信息丢失、压缩后难回溯的分层记忆蒸馏器。记忆蒸馏器是面向 AI Agent 日志的智能压缩系统，针对"日志日均膨胀 2500 词、压缩后关键信息丢失、压缩结果难以回溯细节、"
license: "Proprietary"
description: |-
  记忆蒸馏器是面向 AI Agent 日志的智能压缩系统，针对"日志日均膨胀 2500 词、压缩后关键信息丢失、压缩结果难以回溯细节、不同内容需不同压缩策略"四大高频痛点而设计。它借鉴古文压缩哲学（去重复、留转折、去过程、留白），把冗长的原始日志蒸馏为高密度结构化摘要，实现 4-8 倍压缩比且零关键事件损失
tags: 智能,memory,node,请参考,目录中的,脚本文件
tools:
  - read
  - exec
  - write
  - glob
  - grep
homepage: ""
category: "Agents"

---

# 记忆蒸馏器（Memory Distiller）

面向 AI Agent 日志的**智能压缩系统**，借鉴古文压缩哲学，把冗长原始日志蒸馏为高密度结构化摘要，4-8 倍压缩比且零关键事件损失.
## 设计动机：四大高频痛点

| 痛点 | 典型表现 | 本技能对策 |
|---|----|-----|
| 日志膨胀快 | 日均 2500 词，MEMORY.md 一周破万字 | 定期蒸馏，4-8 倍压缩比 |
| 关键信息丢失 | 压缩后忘了"为什么做这个决策" | 分类型差异化压缩，事件/教训/待办分别处理 |
| 压缩后难回溯 | 想看细节但原始日志已删 | 溯源链：摘要保留原始段落定位标记 |
| 不同内容需不同策略 | 待办和教训用同一压缩逻辑，要么过细要么过粗 | 四类内容四套压缩规则 |

## 压缩哲学：古文压缩四原则

源自古典中文写作的压缩智慧：

| 原则 | 含义 | 示例 |
|:-----|:-----|:-----|
| 去重复 | 提过一次就够 | 不在 3 个章节重复"WebSocket 重连" |
| 留转折 | 只记变化点 | "从 nginx 切到 Node.js WSS" 优于 5 段调试过程 |
| 去过程 | 结果优于过程 | "失败 3 次后用 X 解决" 优于 3 段失败描述 |
| 留白 | 让读者推断 | 层级列表暗示关系，无需连接词 |

**压缩效果示例**：
## 输入格式
| 参数名 | 类型 | 必填 | 说明 |
|---:|---:|---:|---:|
| input | string | 是 | 记忆蒸馏器处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |

```text
压缩前：2,500 词原始日志
压缩后：400 词结构化洞察
压缩比：6.25 倍
```

## 三层记忆架构

```text
┌────────────────────────────────────────────────┐
│           三层记忆系统                          │
├────────────────────────────────────────────────┤
│                                                │
│  第一层：身份层（SOUL.md）                      │
│          超压缩、稳定不变                       │
│          "你是谁、什么重要"                     │
│                                                │
│  第二层：精选记忆（MEMORY.md）  ◄──┐           │
│          4:1 压缩摘要              │           │
│          关键事件+教训+待办        │           │
│                                    │           │
│  第三层：原始日志（memory/YYYY-MM-DD.md）       │
│          完整细节、全部内容     ───┘           │
│          约 2,500 词/天                         │
│                                                │
│  记忆蒸馏器：第三层 ──► 第二层                  │
└────────────────────────────────────────────────┘
```

## 使用流程

1. 阅读## 核心能力章节了解skill功能
2. 按## 依赖说明配置环境
3. 执行所需能力对应的命令
4. 参考## 错误处理章节处理异常
5. 查看## FAQ解答常见疑问

### 单文件压缩

```bash
node （请参考skill目录中的脚本文件） memory/2026-07-18.md
# ...
# 指定输出文件
node （请参考skill目录中的脚本文件） memory/2026-07-18.md /tmp/compressed.md
# ...
# 压缩后追加到精选记忆
node （请参考skill目录中的脚本文件） memory/2026-07-18.md /tmp/today.md
cat /tmp/today.md >> MEMORY.md
```

### 批量压缩多日

```bash
for file in memory/2026-07-{11..18}.md; do
    [ -f "$file" ] && node （请参考skill目录中的脚本文件） "$file" "/tmp/$(basename $file)"
done
```

#
## 快速开始

1. 确认运行环境满足依赖说明中的要求
2. 在AI Agent对话中调用本技能,提供必要的输入参数
3. 检查输出结果,根据需要进行后续处理

> 详细的输入输出格式请参考下方章节说明。

## 混合提取引擎

### Step 1：关键词匹配

扫描标题与内容，识别 40+ 中英文模式：

| 类别 | 中文模式 | 英文模式 |
|:---:|:---:|:---:|
| 事件 | 重大进展、突破、里程碑、决策 | breakthrough、milestone、decision |
| 教训 | 教训、反思、启示、经验 | insight、takeaway、lesson |
| 成长 | 进化、提升、改进、优化 | evolution、improvement |
| 待办 | 待办、🔴、🟡、下一步 | todo、next step、action item |

### Step 2：兜底提取（零数据丢失）

当关键词不匹配时（如基于时间的标题 `## 08:44 站会`），自动提取每个章节的顶部条目。**确保永不丢数据**.
### Step 3：混合模式

多日合并文件时，匹配章节用关键词提取，未匹配章节用兜底提取，两者共存.
## 分类型差异化压缩策略

针对四类内容采用不同压缩粒度：

| 内容类型 | 压缩策略 | 保留要素 | 示例 |
|:------|------:|:------|:------|
| 事件 | 中度压缩 | 时间、地点、参与者、结果 | "07-18 与客户 A 确认需求范围，含 3 个模块" |
| 教训 | 轻度压缩 | 教训、触发条件、规避方法 | "WebSocket 重连间隔应指数退避，固定间隔会触发限流" |
| 待办 | 高度压缩 | 任务、优先级、截止时间 | "🔴 07-20 前完成 API 联调" |
| 成长 | 中度压缩 | 改进点、前后对比、效果 | "把构建从 webpack 换成 vite，构建时间 60s→8s" |

**压缩优先级**：待办 > 事件 > 成长 > 教训（待办压缩最狠，教训保留最细）

## 输出格式

工具输出为结构化格式，包含执行状态、结果数据与执行日志。具体格式请参考下方示例.
## 2026-07-18 关键经验
# ...
### 关键事件
- **事件标题**
  - 细节 1
  - 细节 2
  - [溯源: memory/2026-07-18.md#事件标题]
# ...
### 核心教训
- 教训内容
  - [溯源: memory/2026-07-18.md#教训段落]
# ...
### 待办/未完成
- 🔴 紧急项
- 🟡 重要项
# ...
### 成长记录
- 改进点与效果
```

## 压缩溯源链

每个摘要条目保留原始段落定位标记，支持回溯：

```text
摘要条目：
  "WebSocket 重连间隔应指数退避"
# ...
溯源标记：
  [溯源: memory/2026-07-18.md#教训段落-L42]
# ...
回溯流程：
  1. 读取摘要中的溯源标记
  2. 定位到原始文件 memory/2026-07-18.md
  3. 跳转到第 42 行附近
  4. 读取完整上下文
```

**溯源标记格式**：`[溯源: {文件路径}#{章节标题}-L{行号}]`

## 压缩质量评估器

每次压缩后输出质量报告：

| 指标 | 计算方法 | 及格线 |
|---:|:---|---:|
| 压缩比 | 原始词数 / 压缩后词数 | >= 4 倍 |
| 信息保留率 | 关键事件保留数 / 总关键事件数 | >= 95% |
| 可读性评分 | 结构化程度（标题/列表/层级） | >= 0.8 |
| 溯源覆盖率 | 含溯源标记的条目 / 总条目 | = 100% |

**质量不达标处理**：
- 压缩比 < 4：检查是否有大段重复未去除
- 保留率 < 95%：检查兜底提取是否生效
- 可读性 < 0.8：增加层级与标题结构

## 边界情况处理

| 场景 | 行为 |
|:------:|--------|
| 空文件 | 优雅跳过，输出空摘要 |
| BOM 编码 | 自动检测并剥离 |
| 非 UTF-8 | 警告并继续处理可识别部分 |
| 输出目录缺失 | 自动创建 |
| 无 Markdown 结构 | 友好提示，尝试按段落提取 |
| 多日合并文件 | 混合策略，所有日期均保留 |
| 中英文混合 | 按段落识别语言，应用对应关键词集 |
| 超长单段落 | 按句子切分，提取关键句 |

## 心跳集成

集成到 Agent 维护周期：

```markdown
## 记忆维护（每 2-3 天）
1. 运行：node （请参考skill目录中的脚本文件） memory/YYYY-MM-DD.md /tmp/compressed.md
2. 审查压缩结果准确性
3. 追加：cat /tmp/compressed.md >> MEMORY.md
4. 标记维护时间：date +%s > .last-memory-maintenance
5. （可选）归档原始日志：mv memory/YYYY-MM-DD.md memory/archive/
```

## CLI 用法

```text
node （请参考skill目录中的脚本文件） <日志文件> [输出文件]
node （请参考skill目录中的脚本文件） --help
node （请参考skill目录中的脚本文件） --batch memory/2026-07-{11..18}.md
node （请参考skill目录中的脚本文件） --quality-report  # 输出质量评估
```

## 示例

### 场景一：每日日志归档

```text
用户："今天的日志太长了，帮我压缩归档"
# ...
流程：
1. 运行 memory-compress.js 处理今日日志
2. 输出压缩摘要（含溯源链）
3. 审查摘要准确性
4. 追加到 MEMORY.md
5. 原始日志移到 memory/archive/
```

### 场景二：周度批量压缩

```text
用户："把这周的日志都压缩了"
# ...
流程：
1. 批量处理 7 天日志
2. 每天单独压缩（保留日期维度）
3. 生成周度汇总（跨日事件关联）
4. 输出质量报告
5. 追加到 MEMORY.md，原始日志归档
```

### 场景三：长会话上下文压缩

```text
用户："这个会话聊了 50 轮，上下文快爆了"
# ...
流程：
1. 提取会话历史为日志格式
2. 运行蒸馏器压缩
3. 保留最近 5 轮原文 + 早期轮次摘要
4. 重新加载压缩后上下文
5. 继续会话
```

## 多语言混合处理

中英文混杂日志的处理策略：

```text
检测：按段落识别主要语言
  - 中文段落：应用中文关键词集（重大进展、教训、待办...）
  - 英文段落：应用英文关键词集（breakthrough、lesson、todo...）
  - 混合段落：两套关键词集都尝试
# ...
压缩：
  - 中文内容：古文压缩四原则
  - 英文内容：标准摘要 + 关键句提取
  - 输出语言：与原始段落语言一致
```

## FAQ

**Q1：压缩后想看原始细节怎么办？**
A：每个摘要条目都含溯源标记 `[溯源: 文件路径#章节-L行号]`，按标记回溯到原始日志即可。原始日志建议归档而非删除.
**Q2：压缩会不会丢掉重要信息？**
A：混合提取引擎有三重保障：(1) 关键词匹配提取；(2) 未匹配时兜底提取章节顶部条目；(3) 质量评估器检查信息保留率 >= 95%。达不到会告警.
**Q3：压缩比能到多少？**
A：典型 4-8 倍，取决于原始日志的冗余度。重复内容多则压缩比高，结构化日志压缩比相对低.
**Q4：支持哪些日志格式？**
A：Markdown 格式最佳。纯文本也能处理（按段落切分）。不支持二进制格式.
**Q5：压缩后 MEMORY.md 越来越大怎么办？**
A：MEMORY.md 也需要定期治理。建议：(1) 超过 5000 词时把早期内容二次压缩到 SOUL.md；(2) 按月归档 MEMORY.md 到 memory/archive/；(3) 仅保留近 30 天摘要在 MEMORY.md.
## 故障排查

| 症状 | 可能原因 | 解决方案 |
|----|:--:|---:|
| 压缩比为 1（没压缩） | 日志本身已高度结构化 | 正常现象，或调整压缩策略为激进模式 |
| 摘要缺关键事件 | 关键词未覆盖 | 检查兜底提取是否生效，补充关键词模式 |
| 溯源标记丢失 | 输出格式被修改 | 严格按输出格式模板生成 |
| 多日合并处理出错 | 日期分隔符不统一 | 标准化日期分隔符为 `## YYYY-MM-DD` |
| 中文日志压缩效果差 | 未识别中文关键词 | 确认中文关键词集已加载 |

## 依赖说明

### 运行环境
- **Agent 平台**：支持 SKILL.md 的任意 AI Agent（Claude Code / Cursor / Codex / Gemini CLI 等）
- **操作系统**：Windows / macOS / Linux
- **运行时**：Node.js（运行压缩脚本）

### 依赖详情

| 依赖项 | 类型 | 是否必需 | 获取方式 |
|----|----|----|----|
| Node.js | 运行时 | 必需 | https://nodejs.org 安装 |
| memory-compress.js | 脚本 | 必需 | 随技能提供 |

### API Key 配置
- 本技能基于本地脚本处理，**无需任何 API Key**

### 可用性分类
- **分类**：MD+EXEC（Markdown 指令驱动，需 exec 执行 Node.js 脚本）
- **说明**：基于 Markdown 的 AI Skill，通过自然语言指令驱动 Agent 运行压缩脚本并处理结果

## 核心能力

### 记忆蒸馏器是面向 AI Agent 日志
记忆蒸馏器是面向 AI Agent 日志的智能压缩系统，针对"日志日均膨胀 2500 词、压缩后关键信息丢失、压缩结果难以回溯细节、不同内容需不同压缩策略"四大高频痛点而设计

**输入**: 用户提供记忆蒸馏器是面向 AI Agent 日志所需的指令和必要参数.
**处理**: 解析记忆蒸馏器是面向 AI Agent 日志的输入参数,完成核心逻辑,返回结构化响应.
**输出**: 返回记忆蒸馏器是面向 AI Agent 日志的响应数据,包含状态码、结果和日志.
- 执行此能力时使用`input_params`参数,支持创建/查询/导出操作

### 它借鉴古文压缩哲学（去重复、留转折、去过
它借鉴古文压缩哲学（去重复、留转折、去过程、留白），把冗长的原始日志蒸馏为高密度结构化摘要，实现 4-8 倍压缩比且零关键事件损失

**输入**: 用户提供它借鉴古文压缩哲学（去重复、留转折、去过所需的指令和必要参数.
**处理**: 解析它借鉴古文压缩哲学（去重复、留转折、去过的输入参数,完成核心逻辑,返回结构化响应.
**输出**: 返回它借鉴古文压缩哲学（去重复、留转折、去过的响应数据,包含状态码、结果和日志.
- 执行此能力时使用`input_params`参数,支持创建/查询/导出操作

### 适用场景
适用场景：Agent 每日日志归档、长会话上下文压缩、项目复盘提炼、决策推理蒸馏、多日日志批量归档、记忆维护心跳任务

**输入**: 用户提供适用场景所需的指令和必要参数.
**处理**: 解析适用场景的输入参数,完成核心逻辑,返回结构化响应.
**输出**: 返回适用场景的响应数据,包含状态码、结果和日志.
- 执行此能力时使用`input_params`参数,支持创建/查询/导出操作

### 差异化
差异化：相比仅做"摘要变短"的浅层压缩，本技能新增 (1) 分类型差异化压缩策略，针对事件/教训/待办/成长四类内容采用不同压缩粒度

**输入**: 用户提供差异化所需的指令和必要参数.
**处理**: 解析差异化的输入参数,完成核心逻辑,返回结构化响应.
**输出**: 返回差异化的响应数据,包含状态码、结果和日志.
- 执行此能力时使用`input_params`参数,支持创建/查询/导出操作

### (2) 压缩溯源链
(2) 压缩溯源链，每个摘要条目保留原始段落定位标记，可一键回溯

**输入**: 用户提供(2) 压缩溯源链所需的指令和必要参数.
**处理**: 解析(2) 压缩溯源链的输入参数,完成核心逻辑,返回结构化响应.
**输出**: 返回(2) 压缩溯源链的响应数据,包含状态码、结果和日志.
- 执行此能力时使用`input_params`参数,支持创建/查询/导出操作

**技术参数**：使用`input_params`和`output_format`参数控制执行行为,支持`json`/`text`/`csv`输出格式.
**能力覆盖范围**：本skill的核心能力覆盖以下场景关键词：解决日志膨胀、压缩后难回溯的分、层记忆蒸馏器等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
## 适用场景(补充)

```text
用户："今天的日志太长了，帮我压缩归档"
# ...
流程：
1. 运行 memory-compress.js 处理今日日志
2. 输出压缩摘要（含溯源链）
3. 审查摘要准确性
4. 追加到 MEMORY.md
5. 原始日志移到 memory/archive/
```

## 不适用场景

以下场景记忆蒸馏器不适合处理：

- 需要100%确定性的关键决策
- 医疗诊断
- 法律判决

## 触发条件

需要AI模型调用、智能对话、Agent编排、LLM应用时使用。不适用于非本工具能力范围的需求.
## 已知限制

- 需LLM支持,无LLM环境不可用
- 复杂业务场景建议结合人工经验判断
- 执行效率受模型能力与网络环境影响

## 常见问题

### Q1: 记忆蒸馏器支持哪些输入格式？
支持文本输入、文件上传和API调用三种方式.
### Q2: 使用记忆蒸馏器需要什么环境？
需要支持SKILL.md的AI Agent平台，详见依赖说明.
### Q3: 输出结果可以直接使用吗？
输出结果建议人工审核后使用，确保符合具体业务需求.
## 错误处理

- 降级策略: 异常时返回默认值, 确保流程不中断
- 执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令机制: 失败时自动执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令, 最多3次

| 错误场景 | 原因 | 处理方式 |
|:-----|:-----|:-----|
| LLM响应超时 | 网络延迟 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 输入格式错误 | 参数不匹配 | 对照使用流程章节检查输入格式 |
| 执行失败 | 环境不满足 | 对照依赖说明章节确认环境配置 |
## 案例展示

```json
{
  "input": "示例输入",
  "output": "处理结果"
}
```
