# OpenClaw 记忆系统优化研究报告 **研究日期**: 2026-02-17 **研究者**: 阿米狗(AI Assistant) **原方案作者**: @Ktaohzk(大三医学生) **原始推文**: https://x.com/Ktaohzk/status/2018987689790296254 **原始代码**: https://github.com/ktao732084-arch/openclaw_memory_supersystem-v1.0 --- ## 一、研究背景 ### 当前痛点 OpenClaw 默认记忆方案(`MEMORY.md` + `memory/YYYY-MM-DD.md`)在长期使用中存在以下问题: | 问题 | 表现 | |------|------| | 记忆膨胀 | MEMORY.md 持续增长,可达 8000+ tokens | | 检索噪音 | 返回"相关但无用"的内容 | | 无结构 | 事实、推断、日志全部混在一起 | | 无遗忘机制 | 旧信息不会自动降权,需手动清理 | | 元认知缺失 | 无法区分"确定的事实"和"AI的推断" | ### 研究目标 评估 @Ktaohzk 提出的"三层记忆架构"方案的可行性,并制定适合当前系统的优化路径。 --- ## 二、方案概述:神经科学启发的三层记忆架构 作者用神经科学思路类比人脑记忆机制,将 AI 记忆系统重新设计为三层结构。 ### 人脑类比 | 人脑机制 | AI 对应设计 | |----------|------------| | 前额叶工作记忆(容量小,随时可用)| Layer 1: < 2000 tokens,每次对话注入 | | 海马体长期记忆(容量大,按需检索)| Layer 2: JSONL 结构化存储 | | 情景记忆(原始事件,带时间戳)| Layer 3: 双格式日志(MD + JSONL)| | 睡眠整合(碎片→长期记忆)| Consolidation: 空闲期自动整理 | | 遗忘曲线(重要的记得慢)| 衰减公式: `score × e^(-λ × days)` | ### 三层结构示意 ``` ┌──────────────────────────────────────────┐ │ Layer 1: 工作记忆(< 2000 tokens) │ │ 每次对话直接注入 Prompt │ │ 包含: 身份 / Top Facts / 近期事件 │ └──────────────────────────────────────────┘ ▲ 按需检索 ┌──────────────────────────────────────────┐ │ Layer 2: 结构化长期记忆(JSONL) │ │ facts.jsonl / beliefs.jsonl │ │ summaries.jsonl │ │ active/ ←→ archive/(分池管理) │ └──────────────────────────────────────────┘ ▲ Consolidation 提取 ┌──────────────────────────────────────────┐ │ Layer 3: 原始事件日志(双格式) │ │ 2026-02-17.md(人读) │ │ 2026-02-17.jsonl(机读) │ └──────────────────────────────────────────┘ ``` --- ## 三、核心设计解析 ### 3.1 Fact vs Belief 区分(元认知) 最重要的设计之一,解决 AI"把猜测当事实"的幻觉问题: | 类型 | 来源 | 置信度 | 使用方式 | |------|------|--------|----------| | Fact | 用户明确说过 | 0.9–1.0 | 直接引用 | | Belief | AI 推断 | 0.3–0.8 | 商量口气,标注不确定 | | Summary | 多条 Fact 聚合 | 动态 | 概括性引用 | **示例对比**: - `"你之前提到你是医学生"` → Fact(高置信度,直接说) - `"我记得你好像对神经科学感兴趣?"` → Belief(中置信度,用问句) ### 3.2 自动衰减机制(遗忘曲线) 不同类型记忆,衰减速度不同: | 类型 | 衰减率 λ | 半衰期 | 设计理由 | |------|---------|--------|----------| | Fact | 0.008 | ~87天 | 事实相对稳定 | | Belief | 0.07 | ~10天 | 推断需要快速验证或遗忘 | | Summary | 0.025 | ~28天 | 摘要中等时效 | | Event | 0.15 | ~5天 | 原始事件快速遗忘 | 衰减公式: ``` 新权重 = 旧权重 × e^(-衰减率 × 天数) ``` 效果:旧的、不重要的记忆**自动降权**,无需手动清理。 ### 3.3 Consolidation(记忆整合) 触发条件:20分钟无消息(空闲期),不影响正常对话。 7阶段整理流程: ``` 收集 → 筛选 → 提取 → 分类 → 衰减计算 → 归档 → 快照生成 ``` 核心:每次整理完成后,生成新的 Layer 1 快照(< 2000 tokens),供下次对话注入。 ### 3.4 智能检索 Router 多路检索策略: 1. **关键词检索**:基于关键词索引 2. **实体检索**:基于实体关系图 3. **Rerank**:综合 匹配分数 × 0.4 + 重要性 × 0.3 + 记忆分 × 0.3 4. **结果分级注入**: - 置信度 > 0.8 → 直接注入 Prompt - 置信度 0.5–0.8 → 带标记注入 - 置信度 < 0.5 → 仅提供引用路径 --- ## 四、代码评估 ### 4.1 代码质量 - **版本**: v1.1.7(持续迭代中) - **规模**: 500+ 行 Python,多模块架构 - **可靠性**: 功能完整,有 fallback 机制 ### 4.2 模块结构 ``` memory-system-skill/ ├── scripts/memory.py # 核心 CLI(500+ 行) ├── prompts/ │ ├── filter.md # Phase 2 筛选 Prompt │ ├── extract.md # Phase 3 提取 Prompt │ ├── verify_belief.md # Phase 4b 验证 Prompt │ └── snapshot.md # Phase 7 快照 Prompt └── templates/config.json # 默认配置 ``` ### 4.3 实测性能 | 指标 | 传统方案 | v1.0 | |------|---------|------| | 每次对话 Token 消耗 | 3000–8000 | < 2000(↓60%) | | 检索精准度 | ~60% | ~90%(↑50%) | | 记忆分类 | ❌ | ✅ Fact/Belief/Summary | | 自动衰减 | ❌ | ✅ | | 元认知能力 | ❌ | ✅ | | 单条记忆添加 | 即时 | ~39ms | | 100条整理 | 手动 | ~51ms | --- ## 五、可行性评估 ### 5.1 依赖分析 | 功能 | 依赖 | 我们现状 | |------|------|---------| | 规则筛选(Phase 2 基础版)| 无 | ✅ 可用 | | 实体识别(Layer 1–2)| 无 | ✅ 可用 | | LLM 筛选(Phase 2 增强版)| OpenAI API | ❌ 未配置 | | 语义检索 | Embedding API | ❌ 未配置 | | 衰减计算 | 无 | ✅ 可用 | | Consolidation 自动触发 | Cron/heartbeat | ✅ 可配置 | **关键结论**:原方案最强的特性(LLM 增强筛选 + 语义检索)依赖 OpenAI API。纯规则版仍有价值,但效果打折。 ### 5.2 集成难度 **现有系统(OpenClaw 默认)**: - 文件记忆:MEMORY.md + memory/YYYY-MM-DD.md - 向量搜索:memory_search(已禁用,无 embedding key) - Compaction + memoryFlush(已配置) - contextPruning(今日已配置) **集成该方案需要**: 1. 将 Python 脚本部署到工作区 2. 将 LLM 调用从 OpenAI 改为 Anthropic(或适配当前 OAuth) 3. 配置 cron 任务触发 Consolidation 4. 修改 AGENTS.md 的记忆读取逻辑,从 Layer 1 快照读取 --- ## 六、建议方案 ### 方案 A:轻量借鉴(立即可执行) 不引入 Python 脚本,在现有文件结构里应用核心思路: **MEMORY.md 改造**: ```markdown ## [FACTS] 确定事实(置信度 0.9+) - Ami 在马尼拉 [score: 0.95, added: 2026-01-29] - 偏好中文沟通 [score: 0.90, added: 2026-01-29] ## [BELIEFS] 推断信念(置信度 0.5-0.8) - 可能对流媒体合租感兴趣 [score: 0.70, added: 2026-02-01] ## [PROJECTS] 项目 - iShare: /Users/mini/Work/ClaudeCowork/ [活跃] ``` **手工衰减**:每周 heartbeat 跑一次衰减评估,降权或删除低分记忆。 **适合场景**:立即落地,无需新工具,效果有限但实用。 ### 方案 B:完整集成(需要 API Key) 完整移植原方案,将 LLM 调用改为 Anthropic Claude(通过现有 OAuth),集成为 OpenClaw Skill。 **步骤**: 1. Fork 原代码,替换 LLM 调用层(OpenAI → Anthropic Messages API) 2. 包装为 SKILL.md + scripts/ 3. 配置 cron 触发 consolidation(每天凌晨或空闲期) 4. 修改 AGENTS.md 读取 Layer 1 快照 **适合场景**:长期方案,完整效果,开发成本约 4-6 小时。 ### 方案 C:等待官方(观望) OpenClaw 官方已有 `memory_search` + `contextPruning` 机制,等官方把向量搜索成本降低或提供本地 embedding。 **适合场景**:不想折腾,等系统成熟。 --- ## 七、结论 **@Ktaohzk 的方案在概念上非常扎实,值得借鉴。** | 维度 | 评分 | 备注 | |------|------|------| | 架构设计 | ★★★★★ | 三层分层 + 衰减机制是亮点 | | 代码质量 | ★★★★☆ | 功能完整,模块清晰 | | 落地难度 | ★★★☆☆ | 需要 API key,集成有成本 | | 宣传数字真实性 | ★★★★☆ | 数字真实,但依赖 LLM 版本 | | 推荐程度 | ★★★★☆ | 强烈推荐借鉴核心思路 | **当前建议**:先执行方案 A(轻量借鉴),改造现有 MEMORY.md 结构;待有 OpenAI/Gemini API key 后,推进方案 B(完整集成)。 --- *研究报告由阿米狗生成 · 2026-02-17*