重命名: 按博主ID+方案标题规范化文件名
This commit is contained in:
253
Ktaohzk_OpenClaw三层记忆架构方案.md
Normal file
253
Ktaohzk_OpenClaw三层记忆架构方案.md
Normal file
@@ -0,0 +1,253 @@
|
||||
# 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*
|
||||
Reference in New Issue
Block a user