Skip to content

OpenClaw 三层记忆系统详解

摘要: 深入解析 OpenClaw 的记忆架构,包括 LCM 上下文管理、lossless-claw 会话记忆、memory-lancedb-pro 长期记忆三层协作机制。


📚 目录


架构总览

OpenClaw 采用三层记忆架构,各自负责不同层面的信息管理:

┌─────────────────────────────────────────────────────────┐
│  用户对话                                                │
│   ↓                                                     │
│  ┌─────────────────────────────────────────────────┐   │
│  │ LCM (Lossless Context Management)               │   │
│  │ 作用:自动压缩旧对话,腾出上下文空间             │   │
│  │ 触发:上下文达到 80-90% 时自动                   │   │
│  │ 存储:会话内摘要(临时)                         │   │
│  └─────────────────────────────────────────────────┘   │
│   ↓                                                     │
│  ┌─────────────────────────────────────────────────┐   │
│  │ lossless-claw (插件)                            │   │
│  │ 作用:智能判断哪些内容值得保留                   │   │
│  │ 触发:对话进行中实时分析                         │   │
│  │ 存储:会话级记忆(临时 + 半持久)                 │   │
│  └─────────────────────────────────────────────────┘   │
│   ↓                                                     │
│  ┌─────────────────────────────────────────────────┐   │
│  │ memory-lancedb-pro (插件)                       │   │
│  │ 作用:长期记忆存储,跨会话检索                   │   │
│  │ 触发:smartExtraction 判断重要信息               │   │
│  │ 存储:LanceDB 向量数据库(持久化)                │   │
│  └─────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

1️⃣ LCM (Lossless Context Management) — 内置系统

维度说明
本质OpenClaw 内置的上下文管理机制(不是插件)
职责当对话历史太长时,自动压缩旧消息为摘要
触发上下文使用率达到 80-90% 时自动触发
存储会话内的摘要(session summary),对话结束后可能丢失
用户干预❌ 无需手动操作,全自动
类比像人类的"短期记忆整理" — 把刚才的对话压缩成要点

工作流程:

消息 1,2,3,4,5... → [上下文快满了] → LCM 自动压缩 → 摘要 (1-3) + 消息 4,5...

2️⃣ lossless-claw — 会话记忆插件

维度说明
本质OpenClaw 插件,增强会话级记忆管理
职责智能判断哪些对话内容值得保留,防止重要信息被 LCM 压缩掉
触发对话进行中实时分析
存储会话级记忆(比 LCM 更持久,但仍限于会话)
用户干预❌ 自动运行
类比像"会议记录员" — 标记哪些内容是重点,不能被摘要覆盖

3️⃣ memory-lancedb-pro — 长期记忆插件

维度说明
本质OpenClaw 插件,长期记忆存储系统
职责将重要信息持久化到 LanceDB 向量数据库,支持跨会话检索
触发smartExtraction 判断内容重要性 + autoCapture 自动写入
存储~/.openclaw/memory/lancedb-pro/(永久保存)
检索autoRecall 自动检索相关记忆注入当前对话
类比像人类的"长期记忆" — 记住你的偏好、重要决定、关键事实

核心配置

json
{
  "enabled": true,
  "config": {
    "embedding": {
      "provider": "openai-compatible",
      "baseURL": "http://localhost:11434/v1",
      "model": "nomic-embed-text",
      "dimensions": 768
    },
    "autoCapture": true,        // 自动写入
    "autoRecall": true,         // 自动检索
    "smartExtraction": true,    // AI 判断重要性
    "extractMinMessages": 2,    // 至少 2 条消息才提取
    "extractMaxChars": 8000     // 单次提取最多 8000 字符
  }
}

🔄 三者协作流程

用户:我今天决定用 gemma4:e4b 跑日常对话,26b 留给复杂任务


┌─────────────────────────────────────────┐
│ lossless-claw 检测到"重要决定"           │
│ → 标记这条消息不能被 LCM 随意压缩        │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│ memory-lancedb-pro smartExtraction 判断  │
│ → 这是"用户偏好/决策",值得长期记住      │
│ → autoCapture 触发 → 写入 LanceDB        │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│ LCM 继续管理上下文长度                   │
│ → 但不会压缩被 lossless-claw 标记的内容  │
└─────────────────────────────────────────┘

[下次对话]

┌─────────────────────────────────────────┐
│ memory-lancedb-pro autoRecall 自动检索   │
│ → 找到"用户偏好使用 gemma4:e4b"          │
│ → 注入当前对话上下文                     │
└─────────────────────────────────────────┘

📊 对比总结

特性LCMlossless-clawmemory-lancedb-pro
类型内置系统插件插件
存储时长会话内(临时)会话内(半持久)永久(跨会话)
触发方式上下文满自动实时分析smartExtraction
存储位置会话缓存会话缓存LanceDB 文件
检索能力✅ 向量检索
用户干预无需无需无需

💡 实践建议

适用场景

场景推荐配置
日常对话三层全开,自动运行
重要决策手动确认写入 LanceDB
敏感信息关闭 autoCapture,手动管理
长对话依赖 LCM 自动压缩

性能优化

  • 嵌入模型:使用本地 Ollama + nomic-embed-text(免费、离线)
  • 向量维度:768 维平衡精度与存储
  • 批量写入:设置 extractMinMessages: 2 减少碎片

📝 参考资料

官方文档

社区资源

相关技术


🔖 标签

#OpenClaw #Memory #LanceDB #AI-Agent #上下文管理 #向量数据库


最后更新: 2026-04-08
作者: Yi
许可: MIT

Made by Yi with OpenClaw