Install
openclaw skills install @thcjp/memory-compressopenclaw skills install @thcjp/memory-compress功能说明: 本技能涵盖 化工作流场景 等核心能力。
将冗长日志压缩为结构化摘要,4-8 倍压缩比,零关键事件损失.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 日志压缩器处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 日志压缩器将冗长日志压缩 | 不支持 | 支持 |
| 日志压缩器8倍压缩 | 不支持 | 支持 |
| 日志压缩器借鉴古文压缩 | 不支持 | 支持 |
| 多租户管理与权限分配 | 不支持 | 支持 |
| 操作审计与合规日志 | 不支持 | 支持 |
在三层记忆系统(身份层 SOUL.md / 精选记忆 MEMORY.md / 原始日志 memory/YYYY-MM-DD.md)之间执行第三层到第二层的压缩转换.
node (请参考skill目录中的脚本文件) memory/2026-07-18.md /tmp/compressed.md压缩效果:
压缩前:2,500 词原始日志
压缩后:400 词结构化洞察
压缩比:6.25 倍
三步提取策略,确保零数据丢失.
三步策略:
| 步骤 | 策略 | 说明 |
|---|---|---|
| 领先步 | 关键词匹配 | 扫描标题识别 40+ 中英文模式(重大进展/breakthrough/教训/insight/待办/已实现 等) |
| 第二步 | 兜底提取 | 关键词不匹配时(如时间标题 ## 08:44 站会),自动提取每节顶部条目 |
| 第三步 | 混合模式 | 多日文件中匹配章节用关键词提取,未匹配章节用兜底提取,两者共存 |
借鉴古典中文写作的压缩智慧,不是简单缩短而是结构化提炼.
| 原则 | 含义 | 压缩示例 |
|---|---|---|
| 去重复 | 提过一次就够 | 不在 3 个章节重复"WebSocket 重连" |
| 留转折 | 只记变化点 | "从 nginx 切到 Node.js WSS" 优于 5 段调试过程 |
| 去过程 | 结果优于过程 | "失败 3 次后用 X 解决" 优于 3 段失败描述 |
| 留白 | 让读者推断 | 层级列表暗示关系,无需连接词 |
支持一次性压缩多天日志文件.
for file in memory/2026-07-{11..18}.md; do
[ -f "$file" ] && node (请参考skill目录中的脚本文件) "$file" "/tmp/$(basename $file)"
done
集成到 Agent 维护周期,每 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
自动处理各种异常输入,不中断流程.
| 场景 | 处理行为 |
|---|---|
| 空文件 | 优雅跳过 |
| BOM 编码 | 自动检测并剥离 |
| 非 UTF-8 | 警告并继续处理可识别部分 |
| 输出目录缺失 | 自动创建 |
| 无 Markdown 结构 | 友好提示,尝试按段落提取 |
| 多日合并文件 | 混合策略,所有日期均保留 |
确保 Agent 每日日志以 Markdown 格式存储在 memory/YYYY-MM-DD.md 文件中,每个日志约 2500 词.
运行压缩脚本处理目标日志文件。单文件压缩直接指定输入路径;批量压缩使用通配符遍历多日文件.
node (请参考skill目录中的脚本文件) memory/2026-07-18.md /tmp/compressed.md
检查压缩摘要的准确性,确认关键事件、教训、待办均被保留,无重要信息丢失.
将压缩后的摘要追加到 MEMORY.md,并更新维护时间戳.
cat /tmp/compressed.md >> MEMORY.md
date +%s > .last-memory-maintenance
将已压缩的原始日志移动到归档目录,保持工作目录整洁.
mv memory/2026-07-18.md memory/archive/
用户当天产生了 2800 词的开发日志,需要压缩归档以控制 MEMORY.md 体积.
用户:"今天的日志太长了,帮我压缩归档"
# ...
输入文件:memory/2026-07-18.md(2,800 词)
# ...
执行:
1. 运行:node (请参考skill目录中的脚本文件) memory/2026-07-18.md /tmp/compressed.md
2. 脚本扫描标题,识别关键词:重大进展、教训、待办
3. 兜底提取未匹配章节(如 ## 09:30 站会)
4. 应用古文压缩四原则
5. 输出压缩摘要
# ...
输出文件:/tmp/compressed.md(420 词,压缩比 6.67 倍)
# ...
输出内容结构:
## 2026-07-18 关键经验
### 关键事件
- **完成支付模块联调**
- 对接支付宝与微信支付 API
- 数据库数据库事务回滚测试通过
### 核心教训
- WebSocket 重连间隔应指数退避,固定间隔触发限流
### 待办/未完成
- 🔴 07-20 前完成订单模块测试
- 🟡 优化支付回调性能
# ...
后续操作:
cat /tmp/compressed.md >> MEMORY.md
用户一周未维护记忆,7 天日志累积约 17500 词,需要批量压缩.
用户:"把这周的日志都压缩了"
# ...
执行:
1. 批量处理 7 天日志:
for file in memory/2026-07-{12..18}.md; do
[ -f "$file" ] && node (请参考skill目录中的脚本文件) "$file" "/tmp/$(basename $file)"
done
2. 每天单独压缩(保留日期维度)
3. 逐个审查压缩结果
4. 依次追加到 MEMORY.md:
for file in /tmp/2026-07-{12..18}.md; do
cat "$file" >> MEMORY.md
done
5. 原始日志批量归档:
mv memory/2026-07-{12..18}.md memory/archive/
# ...
结果:
原始总量:约 17,500 词
压缩后总量:约 2,800 词
整体压缩比:6.25 倍
MEMORY.md 增长:2,800 词(可控范围)
压缩后的摘要保留了关键信息,但原始细节需要回溯。建议压缩后将原始日志移动到 memory/archive/ 目录归档而非删除。需要回溯时,根据摘要中的日期定位到归档文件查看完整内容.
混合提取引擎有三重保障:领先步关键词匹配提取 40+ 中英文模式;第二步未匹配时兜底提取章节顶部条目;第三步多日文件用混合模式确保所有内容都被处理。设计原则是零数据丢失,关键事件全部保留.
典型 4-8 倍,取决于原始日志的冗余度。重复内容多则压缩比高(可达 8 倍),高度结构化的日志压缩比相对低(约 4 倍)。日均 2500 词的日志通常压缩到 400 词左右.
Markdown 格式优选,能识别标题层级与列表结构。纯文本也能处理(按段落切分提取关键句)。不支持二进制格式(如 .docx、.pdf),需先转换为 Markdown 或纯文本.
MEMORY.md 也需要定期治理。建议:超过 5000 词时把早期内容二次压缩到 SOUL.md(身份层);按月归档 MEMORY.md 到 memory/archive/;仅保留近 30 天摘要在 MEMORY.md 中。配合心跳任务每 2-3 天执行一次压缩可控制增长速度.
引擎按段落识别主要语言:中文段落应用中文关键词集(重大进展、教训、待办等),英文段落应用英文关键词集(breakthrough、lesson、已实现 等),混合段落两套关键词集都尝试。输出语言与原始段落语言一致.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Node.js | 运行时 | 必需 | Node.js 官网安装,版本 16+ |
| memory-compress.js | 脚本 | 必需 | 随技能提供 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
本技能基于本地 Node.js 脚本处理日志文件,无需额外 API Key。压缩逻辑由脚本本地执行,不调用外部 API.
## YYYY-MM-DD 格式,否则可能处理错乱
以下是日志压缩器的YYYY-MM-DD` 格式,否则可能处理错乱说明,包含具体配置与使用方式.| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| 日志泄露 | 高 | 对日志进行加密存储和传输 | 加密日志文件,验证加密算法的有效性 |
| 脚本执行安全 | 中 | 限制脚本执行权限,避免恶意脚本执行 | 设置 Node.js 脚本执行权限,定期检查脚本安全 |
| 数据完整性 | 中 | 定期备份日志文件,防止数据丢失 | 定期备份日志文件,验证备份文件的有效性 |
| 用户权限管理 | 中 | 限制用户访问日志压缩器功能,防止未授权访问 | 设置用户权限,定期检查用户权限设置 |
| 系统资源安全 | 低 | 监控系统资源使用情况,防止资源耗尽 | 监控系统资源使用情况,设置资源使用阈值 |
| 场景 | 效率提升量化分析 | 差异化对比 |
|---|---|---|
| 日志归档 | 压缩比 4-8 倍,减少存储需求 | 传统日志归档方法压缩比低,存储需求高 |
| 长会话上下文压缩 | 保留关键信息,提高信息检索效率 | 传统压缩方法可能丢失关键信息,降低检索效率 |
| 项目复盘提炼 | 精炼项目日志,快速获取项目关键信息 | 传统复盘方法耗时较长,信息获取效率低 |
| 记忆维护心跳任务 | 自动压缩日志,减轻人工负担 | 传统方法依赖人工压缩,效率低 |
| 多日合并文件处理 | 混合策略,确保所有内容被处理 | 传统方法可能遗漏部分内容,导致信息丢失 |
| 中英文混合日志处理 | 识别主要语言,提高处理效率 | 传统方法可能无法有效处理中英文混合日志 |
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
| 对比维度 | 日志压缩器 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 将冗长日志压缩为结构化摘要,4-8倍压缩比,借鉴古文压缩哲学实现零关键事件损失。 | 通用场景 | 通用场景 |
针对日志压缩器使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |