--- name: memory-md-archive description: 归档和体积控制技能,用于管理 MEMORY.md 文件大小。支持三项内容的归档:事件流水(8天前)、重要事件(超过30条时按重要性)、学习事件(超过30条时按重要性)。当文件超过4KB时自动进行额外归档。 --- # memory-md-archive 技能 用于归档 MEMORY.md 中的旧内容,控制文件体积。 ## 归档规则 ### 1. 事件流水归档 **触发条件**:存在8天前或更久前的内容 **归档策略**: - 按日期判断,8天前的内容自动归档 - 归档位置:`memory/archive-daily/YYYY-MM.md`(每月一个新文件) - 归档格式保持原样 **示例**: ``` memory/archive-daily/ ├── 2026-02.md # 2026年2月的日常事件 ├── 2026-03.md # 2026年3月的日常事件 ``` ### 2. 重要事件归档 **触发条件**:累计超过30条 **归档策略**: - 按重要性评估,优先保留重要的 - 转移不那么重要的事件 - 归档位置:`memory/archive-major/YYYY-MM.md`(每月一个新文件) - **注意**:不是按时间,可能涉及多个归档文件 **重要性评估**: - 关键词权重:架构、决策、配置变更 = 高 - 描述长度:简短的可能重要性较低 - 关键词密度:关键词多的可能更重要 ### 3. 学习事件归档 **触发条件**:累计超过30条 **归档策略**: - 同重要事件规则 - 归档位置:`memory/archive-learning/YYYY-MM.md` ## 体积控制 **限制**:4KB (4096 字节) **超限处理**: 1. 首先执行上述三项归档 2. 如果仍然超限,从事件流水中抽离不重要的内容 3. 选择标准: - 日期最久的优先 - 关键词少的(描述简单的) - 不含重要关键词的 ## 文件定位 - **归档脚本**: `~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py` - **源文件**: `~/.openclaw/workspace/MEMORY.md` - **归档目录**: `~/.openclaw/workspace/memory/` - `archive-daily/` - 日常事件归档 - `archive-major/` - 重要事件归档 - `archive-learning/` - 学习事件归档 ## 使用方法 ### 手动执行归档 ```bash # 执行所有归档检查 python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py # 仅检查事件流水 python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py --daily-only # 仅检查重要事件 python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py --major-only # 仅检查学习事件 python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py --learning-only # 强制执行体积控制(即使未超限) python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py --force-size-control ``` ### 查看归档状态 ```bash # 查看当前 MEMORY.md 统计 python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py --stats # 查看归档目录结构 python3 ~/.openclaw/workspace/skills/memory-md-archive/scripts/archive.py --list-archives ``` ### Python 调用 ```python from skills.memory_md_archive.scripts.archive import archive_all, check_size # 执行完整归档 result = archive_all() print(f"归档完成:") print(f" - 日常事件归档: {result['daily_archived']} 条") print(f" - 重要事件归档: {result['major_archived']} 条") print(f" - 学习事件归档: {result['learning_archived']} 条") print(f" - 体积控制归档: {result['size_control_archived']} 条") print(f" - 当前文件大小: {result['current_size_kb']}KB") # 仅检查大小 size_status = check_size() if size_status['exceeded']: print(f"⚠️ 文件大小 {size_status['size_kb']}KB 超过限制") ``` ## 归档文件格式 ### 日常事件归档文件 (archive-daily/YYYY-MM.md) ```markdown # 日常事件归档 - 2026年2月 > 自动归档的日常事件记录 > 原文件: MEMORY.md > 归档时间: 2026-03-01 10:00 --- ## 2026-02-28 - 2026-02-28 10:30 | 测试脚本 | 开发,测试 - 2026-02-28 14:00 | 配置环境 | 配置,环境 ## 2026-02-27 - 2026-02-27 09:00 | 代码审查 | 代码,审查 ``` ### 重要事件归档文件 (archive-major/YYYY-MM.md) ```markdown # 重要事件归档 - 2026年2月 > 自动归档的重要事件记录 > 原文件: MEMORY.md > 归档时间: 2026-03-01 10:00 --- - 2026-02-15 10:00 | 升级依赖版本 | 依赖,升级 - 2026-02-10 14:00 | 调整配置文件 | 配置,调整 ``` ### 学习事件归档文件 (archive-learning/YYYY-MM.md) ```markdown # 学习事件归档 - 2026年2月 > 自动归档的学习记录 > 原文件: MEMORY.md > 归档时间: 2026-03-01 10:00 --- - 2026-02-20 11:30 | 学习Docker网络配置 | 学习,Docker,网络 - 2026-02-18 09:00 | 掌握Python装饰器 | 学习,Python,装饰器 ``` ## 最佳实践 1. **定期归档**: 建议每周执行一次归档检查 2. **手动触发**: 当 MEMORY.md 明显变大时手动执行 3. **备份重要事件**: 归档前确认重要事件已评估正确 4. **监控文件大小**: 定期检查文件大小趋势 ## 故障排查 ### 归档失败 - 检查 `memory/` 目录是否存在且可写 - 确认归档目录结构正确 ### 重要事件评估错误 - 手动检查归档文件,确认重要事件未被错误归档 - 调整重要性评估关键词权重 ### 文件仍然超限 - 确认体积控制逻辑已执行 - 手动删除非关键内容