乐于分享
好东西不私藏

OpenClaw记忆系统:让AI真正"记住"你的秘密

OpenClaw记忆系统:让AI真正"记住"你的秘密

如果AI每次对话都像得了健忘症,那它永远成不了你的得力助手。OpenClaw的记忆系统解决了这个核心痛点——让AI拥有类似人类的记忆能力,而不是每次都从零开始。

前言:为什么AI需要记忆?

想象一下,你跟一个朋友聊天,每次见面他都忘记你是谁、你们聊过什么、你的喜好是什么。这样的"友谊"很难维持。但遗憾的是,这正是当前大多数AI助手的现状:

  • 上下文有限:ChatGPT的上下文窗口再大,也会在对话结束后清空
  • 没有持久记忆:无法在多次对话间保留重要信息
  • 缺乏个性化:每次都要重新介绍你的背景和需求
  • 无法学习成长:AI无法从历史互动中学习和适应

OpenClaw的记忆系统正是为解决这些问题而生。它让AI能够:

  1. 1. 记住重要信息:在多次对话间持久保存关键事实
  2. 2. 学习你的偏好:了解你的工作习惯、技术偏好、常用命令
  3. 3. 建立上下文连续性:让每次对话都建立在上次基础上
  4. 4. 保护隐私:记忆完全由你掌控,存储在本地

这篇文章将深入剖析OpenClaw记忆系统的设计理念、工作原理和实战配置,让你真正掌握让AI"记住"你的秘密。

一、记忆系统的设计哲学:从"健忘"到"睿智"

OpenClaw的记忆系统设计遵循三个核心原则:

1.1 人类记忆的数字化映射

OpenClaw的灵感来源于人类记忆的工作方式:

# 人类记忆 vs OpenClaw记忆
短期记忆:工作记忆,持续几分钟
 → memory/YYYY-MM-DD.md(每日日志)
长期记忆:持久存储,终身保留
 → MEMORY.md(精选长期记忆)
语义记忆:概念和知识
 → 向量记忆搜索
情景记忆:具体经历
 → 会话日志索引

这种映射确保了记忆系统的自然性和实用性,而不是简单的技术堆砌。

1.2 安全与隐私优先

OpenClaw在记忆设计上做出了关键的安全决策:

  • 本地优先:所有记忆默认存储在本地磁盘
  • 明文存储:使用Markdown格式,人类可读,AI可处理
  • 粒度控制:可以精确控制哪些会话加载哪些记忆
  • 沙箱隔离:高风险技能在隔离环境中运行,无法访问记忆

1.3 实用主义的工程实现

记忆系统不是为了炫技,而是为了解决实际问题:

  • 实时可用:记忆搜索响应在毫秒级
  • 资源高效:向量索引对CPU/内存使用进行优化
  • 故障恢复:索引损坏时可以自动重建
  • 渐进增强:没有复杂配置也能工作,逐步优化体验

二、MEMORY.md工作机制:AI的"长期记忆"

MEMORY.md是OpenClaw记忆系统的核心,它是AI的"长期记忆库"。

2.1 文件结构与加载规则

~/.openclaw/workspace/
├── MEMORY.md              # 长期记忆(仅主会话加载)
├── memory/
│   ├── 2026-03-27.md     # 今日日志
│   ├── 2026-03-26.md     # 昨日日志
│   └── ...               # 历史日志
└── ...                   # 其他工作空间文件

加载规则的关键设计

  1. 1. 主会话专用MEMORY.md仅在私人一对一对话中加载,绝不泄露到群聊
  2. 2. 双日志系统:每次会话自动读取今天和昨天的日志文件
  3. 3. 追加写入:每日日志采用追加模式,保留完整历史
  4. 4. 人工精选MEMORY.md需要手动维护,确保质量而非数量

2.2 什么应该写入MEMORY.md?

不是所有信息都值得长期记忆。以下是写入原则:

应该写入的

  • • 用户的个人偏好(技术栈、常用工具、工作习惯)
  • • 重要的项目决策和设计选择
  • • 反复出现的需求和工作流
  • • 用户纠正的错误和学习到的经验
  • • 长期有效的配置参数

不应该写入的

  • • 敏感的个人信息(密码、密钥、隐私数据)
  • • 临时性的会话上下文
  • • 一次性的请求和回复
  • • 情绪化的表达和无关闲聊

2.3 自动记忆刷新机制

OpenClaw有一个巧妙的设计:在会话压缩前自动触发记忆刷新

// 默认配置
agents: {
  defaults: {
    compaction: {
      memoryFlush: {
        enabled: true,
        softThresholdTokens: 4000,
        systemPrompt: "Session nearing compaction. Store durable memories now.",
        prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store.",
      }
    }
  }
}

工作原理

  1. 1. 时机检测:当会话接近上下文窗口上限时(剩余约4000token),触发记忆刷新
  2. 2. 静默执行:在后台提醒AI写入持久记忆,用户无感知
  3. 3. 防丢机制:确保重要信息在上下文被压缩前保存到磁盘
  4. 4. 智能判断:AI决定哪些信息值得持久化

这种机制解决了"忘记保存"的问题,让记忆系统真正可靠。

三、短期记忆 vs 长期记忆:精妙的平衡艺术

OpenClaw的记忆系统不是一个单一的存储,而是一个分层的体系。

3.1 短期记忆:memory/YYYY-MM-DD.md

# 2026-03-27.md

## 上午

-
 用户询问了OpenClaw的安装问题,推荐了Docker方式
-
 用户的技术栈偏好:React前端 + Golang后端
-
 用户提到了一个项目 deadline:4月15日

## 下午  

-
 帮助用户配置了企业微信集成
-
 用户纠正:更喜欢Markdown格式而非YAML
-
 约定了明天继续讨论OpenClaw生态

短期记忆的特点

  • 细节丰富:记录具体的对话内容和上下文
  • 时间序列:按时间顺序记录,便于追溯
  • 自动管理:每天自动创建新文件,旧文件存档
  • 快速访问:只加载最近两天的文件,减少开销

3.2 长期记忆:MEMORY.md

# MEMORY.md - 长期记忆

## 用户偏好

-
 技术栈:前端(React, TypeScript),后端(Golang, Rust)
-
 开发环境:VS Code,使用Dark主题
-
 文档偏好:Markdown > YAML,中文 > 英文
-
 关注领域:AI应用、开源工具、效率提升

## 项目相关

-
 当前项目:OpenClaw系列文章(30天计划)
-
 重要日期:每周三发布新文章
-
 内容风格:实战导向,避免纯理论

## 学习与纠正

-
 2026-03-25:OpenClaw配置使用JSON5格式,不是YAML
-
 2026-03-26:封面图必须使用NotoSansCJK字体
-
 2026-03-26:文章结尾不再使用固定模板

长期记忆的特点

  • 精心整理:人工筛选和总结,非原始日志
  • 结构清晰:按主题分类,便于查找
  • 价值密集:每一条都是重要信息
  • 定期维护:需要主动更新和清理

3.3 记忆生命周期管理

# 记忆的完整生命周期
信息产生
 → 短期记忆(当日日志) → 筛选提炼 → 长期记忆(MEMORY.md) → 定期回顾 → 清理过时
      ↑
                                    ↑                        ↑
实时记录
                                 主动维护                保持新鲜

这个过程中,OpenClaw提供自动化支持,但最终的控制权在用户手中。

四、向量记忆搜索:让AI"想起"相关的一切

如果记忆只是存储在文件里,那和记事本没什么区别。OpenClaw真正的威力在于向量记忆搜索

4.1 向量搜索的工作原理

# 简化版向量搜索流程
1.
 文本分块:将Markdown文件分割成400token的块(80token重叠)
2.
 向量化:使用嵌入模型将文本转换为高维向量
3.
 存储索引:向量存入SQLite + sqlite-vec扩展
4.
 查询处理:将用户查询也向量化,计算余弦相似度
5.
 结果返回:返回最相关的文本片段及其来源

关键技术优势

  • 语义理解:不仅仅是关键词匹配,而是理解意思
  • 快速响应:sqlite-vec提供毫秒级搜索
  • 增量更新:文件变化时自动更新索引
  • 多模型支持:支持OpenAI、Gemini、本地模型

4.2 混合搜索:BM25 + 向量的完美结合

OpenClaw的混合搜索结合了两种技术的优点:

// 混合搜索配置
agents: {
  defaults: {
    memorySearch: {
      query: {
        hybrid: {
          enabled: true,      // 启用混合搜索
          vectorWeight: 0.7,  // 向量权重70%
          textWeight: 0.3,    // 文本权重30%
          candidateMultiplier: 4
        }
      }
    }
  }
}

为什么需要混合搜索?

       
                                           
搜索类型擅长场景不擅长场景
向量搜索"安装OpenClaw遇到的问题" → 能找到相关的问题描述精确代码符号、错误ID
BM25全文搜索sqlite-vec → 精确匹配这个术语"向量数据库" → 可能找不到相关讨论
       
     

混合搜索的效果

  • 向量部分:处理语义相似性,找到概念相关的内容
  • BM25部分:处理精确匹配,找到特定术语和代码
  • 加权合并:综合两个分数,返回最相关的结果

4.3 记忆搜索的配置实战

// 完整的记忆搜索配置示例
agents: {
  defaults: {
    memorySearch: {
      // 基础配置
      enabled: true,
      
      // 提供商配置
      provider: "openai",  // 或 "gemini", "local"
      model: "text-embedding-3-small",
      
      // 远程API配置  
      remote: {
        apiKey: "${OPENAI_API_KEY}",
        batch: { enabled: true, concurrency: 2 }
      },
      
      // 本地模型配置(备选)
      local: {
        modelPath: "hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf"
      },
      
      // 搜索配置
      query: {
        hybrid: {
          enabled: true,
          vectorWeight: 0.7,
          textWeight: 0.3
        }
      },
      
      // 额外记忆路径
      extraPaths: [
        "../team-docs",                    // 团队文档目录
        "/srv/shared-notes/overview.md"    // 共享笔记文件
      ],
      
      // 缓存配置
      cache: {
        enabled: true,
        maxEntries: 50000
      },
      
      // 回退机制
      fallback: "openai"
    }
  }
}

配置说明

  1. 1.
  2. 提供商选择
    • openai:性能最好,成本适中(批处理更便宜)
    • gemini:Google生态集成,价格有竞争力
    • local:完全离线,隐私最高,性能较低
  3. 2.
  4. 批处理优势
    • • OpenAI批处理API比实时调用便宜50-80%
    • • 大型索引任务可以节省大量成本
    • • 后台异步执行,不阻塞主线程
  5. 3.
  6. 缓存机制
    • • 嵌入结果缓存到SQLite
    • • 避免重复计算相同文本
    • • 特别适合频繁更新的会话日志

五、隐私与安全:记忆系统的信任基石

记忆系统处理的是最敏感的信息,OpenClaw在安全设计上毫不妥协。

5.1 多层次的安全防护

1. 物理隔离

# 记忆文件的默认权限
-rw-r--r--  1 user user   MEMORY.md    # 仅用户可写
drwxr-xr-x  2 user user   memory/      # 仅用户可访问

2. 会话隔离

  • 主会话:可以读写MEMORY.md和所有记忆文件
  • 群组会话:无法加载MEMORY.md,保护隐私
  • 子代理会话:继承父会话的workspace,但可以进一步限制

3. 沙箱执行

// 高风险技能在沙箱中运行
skills: {
  entries: {
    "file-operations": {
      enabled: true,
      sandbox: true,      // 在沙箱中运行
      workspaceAccess: "ro"  // 只读访问工作空间
    }
  }
}

4. 内存安全

  • • 记忆搜索结果只返回片段,不是完整文件
  • • 搜索工具有严格的访问控制
  • • 向量索引不包含原始文本,只包含嵌入

5.2 隐私设计原则

OpenClaw遵循严格的隐私设计原则:

  1. 1. 本地优先:默认所有数据都在本地
  2. 2. 明确同意:远程嵌入需要显式配置API密钥
  3. 3. 数据最小化:只索引必要的文件,不扫描整个磁盘
  4. 4. 透明可控:用户可以随时查看、修改、删除记忆
  5. 5. 安全默认值:默认配置就是安全的,需要主动开放权限

5.3 企业级安全考量

对于企业部署,OpenClaw提供额外保护:

// 企业级记忆配置
agents: {
  defaults: {
    memorySearch: {
      // 禁用远程嵌入,确保数据不出境
      provider: "local",
      fallback: "none",
      
      // 限制记忆范围
      extraPaths: [],  // 不添加额外路径
      
      // 禁用会话索引
      experimental: { sessionMemory: false },
      
      // 严格的访问控制
      store: {
        path: "/secure/location/{agentId}.sqlite",
        permissions: 0o600  // 仅所有者可读写
      }
    },
    
    // 工作空间访问控制
    workspaceAccess: "rw",  // 或 "ro", "none"
    
    // 插件权限控制
    plugins: {
      slots: {
        memory: "memory-core"  // 只允许核心记忆插件
      }
    }
  }
}

六、实战配置:从零搭建你的记忆系统

理论说再多不如动手实践。让我们一步步配置一个完整的记忆系统。

6.1 基础配置检查

首先,检查当前记忆系统的状态:

# 查看记忆状态
openclaw memory status

# 详细诊断

openclaw memory status --deep

# 输出示例:

# ✅ 记忆搜索已启用

# ✅ 提供商: openai (text-embedding-3-small)

# ✅ 存储: /home/user/.openclaw/memory/main.sqlite

# ✅ 索引文件: 42个文件, 1568个块

# ✅ 最近同步: 2026-03-27T08:30:00Z

# ✅ 混合搜索: 已启用 (向量70% + 文本30%)

如果记忆搜索未启用,检查配置:

# 查看相关配置
openclaw config get agents.defaults.memorySearch

# 启用记忆搜索

openclaw config set agents.defaults.memorySearch.enabled true

6.2 配置嵌入提供商

根据你的需求选择合适的提供商:

方案A:使用OpenAI(性能最佳)

# 设置OpenAI API密钥
export
 OPENAI_API_KEY="sk-..."
# 或写入配置文件

openclaw config set agents.defaults.memorySearch.provider openai
openclaw config set agents.defaults.memorySearch.model "text-embedding-3-small"

方案B:使用本地模型(完全离线)

# 启用本地模式
openclaw config set agents.defaults.memorySearch.provider local

# 自动下载嵌入模型(约0.6GB)

openclaw memory status --deep  # 首次运行会自动触发下载

# 或手动指定模型路径

openclaw config set agents.defaults.memorySearch.local.modelPath \
  "hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf"

方案C:使用Gemini

# 设置Gemini API密钥
export
 GEMINI_API_KEY="..."
openclaw config set agents.defaults.memorySearch.provider gemini
openclaw config set agents.defaults.memorySearch.model "gemini-embedding-001"

6.3 初始索引构建

# 运行首次完整索引
openclaw memory index --verbose

# 观察输出:

# 🔍 扫描记忆文件...

# 📝 找到 3 个文件:MEMORY.md, memory/2026-03-27.md, memory/2026-03-26.md

# 🧠 使用 openai/text-embedding-3-small 生成嵌入...

# ⚡ 批处理模式:提交 1568 个块,2个并发作业

# 💾 存储到 SQLite (sqlite-vec)...

# ✅ 索引完成:1568 个块,耗时 45.2 秒

6.4 测试记忆搜索

# 测试语义搜索
openclaw memory search "用户的技术偏好"

# 测试精确搜索

openclaw memory search "React TypeScript"

# 测试混合搜索(自动启用)

openclaw memory search "OpenClaw配置参数 JSON5"

# 搜索结果示例:

# 分数 | 来源 | 内容片段

# 0.92 | MEMORY.md:15-20 | 用户偏好:前端使用React和TypeScript...

# 0.87 | memory/2026-03-26.md:45-50 | 昨天讨论过React项目配置...

# 0.75 | MEMORY.md:32-38 | 技术栈选择:优先考虑TypeScript类型安全...

6.5 记忆维护最佳实践

每日习惯

  1. 1. 查看当日的memory/YYYY-MM-DD.md,确保重要信息被记录
  2. 2. 如果有需要长期记忆的内容,手动更新到MEMORY.md
  3. 3. 删除过时或错误的记录

每周维护

  1. 1. 清理一周前的日志文件(可归档或删除)
  2. 2. 回顾MEMORY.md,更新过时信息
  3. 3. 运行记忆索引完整性检查:openclaw memory status --deep --index

每月优化

  1. 1. 评估记忆搜索的效果,调整混合搜索权重
  2. 2. 考虑添加额外的记忆路径(团队文档、项目笔记等)
  3. 3. 备份记忆数据库和原始文件

七、高级技巧与故障排查

7.1 性能优化技巧

问题:记忆搜索速度慢

// 解决方案:启用sqlite-vec向量加速
agents: {
  defaults: {
    memorySearch: {
      store: {
        vector: {
          enabled: true,  // 默认已启用
          extensionPath: "/usr/lib/sqlite-vec"  // 如有自定义路径
        }
      }
    }
  }
}

问题:索引占用磁盘空间大

# 清理旧索引
rm
 ~/.openclaw/memory/*.sqlite
# 重新索引(会更小)

openclaw memory index

问题:API调用成本高

// 启用批处理和缓存
agents: {
  defaults: {
    memorySearch: {
      remote: {
        batch: { enabled: true },  // 批处理更便宜
      },
      cache: {
        enabled: true,  // 缓存避免重复计算
        maxEntries: 50000
      }
    }
  }
}

7.2 常见故障排查

症状:记忆搜索返回空结果

# 诊断步骤
openclaw memory status --deep  # 检查状态
openclaw memory index --verbose  # 重新索引
openclaw config get agents.defaults.memorySearch  # 检查配置

症状:嵌入模型加载失败

# 本地模型问题
openclaw config set agents.defaults.memorySearch.fallback openai  # 临时回退
pnpm rebuild node-llama-cpp  # 重建本地模型支持

症状:混合搜索不可用

# 检查SQLite FTS5支持
sqlite3 :memory: 'SELECT sqlite_compileoption_used("ENABLE_FTS5");'
# 返回1表示支持,0表示不支持

7.3 扩展记忆系统

集成团队知识库

// 添加团队文档到记忆搜索
agents: {
  defaults: {
    memorySearch: {
      extraPaths: [
        "/shared/team-wiki",
        "/projects/docs/architecture.md"
      ]
    }
  }
}

启用会话记忆搜索(实验性):

// 索引会话历史,实现跨会话记忆
agents: {
  defaults: {
    memorySearch: {
      experimental: { sessionMemory: true },
      sources: ["memory", "sessions"],
      sync: {
        sessions: {
          deltaBytes: 100000,   // 每100KB触发索引
          deltaMessages: 50     // 每50条消息触发索引
        }
      }
    }
  }
}

八、记忆系统的哲学思考

8.1 记忆与智能的关系

OpenClaw的记忆系统提出了一个深刻的问题:什么是真正的AI智能?

没有记忆的AI就像一本百科全书——知识丰富但无法建立联系。有了记忆,AI开始展现类似人类的特质:

  • 连续性:能够参考过去的对话和决策
  • 个性化:了解特定用户的偏好和习惯
  • 学习能力:从错误中学习,避免重复犯错
  • 上下文感知:在不同情境下调整行为

8.2 开源记忆系统的意义

OpenClaw选择开源其记忆系统,具有重要战略意义:

  1. 1. 透明可信:用户可以完全了解记忆如何工作,没有黑箱
  2. 2. 社区改进:全球开发者可以共同优化记忆算法
  3. 3. 避免锁定:记忆数据使用开放格式,可迁移到其他系统
  4. 4. 安全审查:代码公开接受安全专家审计

8.3 未来的发展方向

基于当前架构,记忆系统可能向以下方向演进:

更智能的记忆管理

  • • 自动识别重要信息,减少手动维护
  • • 基于重要性的记忆衰减机制
  • • 跨用户记忆模式的学习和推荐

更丰富的记忆类型

  • • 多模态记忆(图像、语音的向量化)
  • • 结构化记忆(数据库、知识图谱集成)
  • • 时间序列记忆(趋势分析、预测)

更紧密的生态集成

  • • 与第三方笔记工具(Obsidian、Notion)双向同步
  • • 与日历、邮件、任务系统的智能关联
  • • 企业知识库的自动化索引和更新

总结:让AI真正成为你的伙伴

OpenClaw的记忆系统不是一项炫技的功能,而是AI助手实用化的关键突破。它解决了传统AI的"健忘症"问题,让AI能够:

  1. 1. 记住重要信息:不再需要重复交代背景
  2. 2. 学习你的习惯:提供越来越精准的帮助
  3. 3. 保护你的隐私:记忆完全由你掌控
  4. 4. 持续成长进化:随着使用时间增长而变得更智能

记忆系统的配置看似复杂,但OpenClaw提供了合理的默认值和渐进式配置路径。你可以从最简单的本地记忆开始,逐步增加向量搜索、混合搜索、团队集成等高级功能。

真正的挑战不在于技术配置,而在于思维转变——开始把AI当作一个有记忆的伙伴,而不是每次都要重新介绍自己的陌生人。当你开始认真维护MEMORY.md,当AI开始引用几天前的对话,当复杂的配置只需要说"像上次那样设置",你会真正体会到记忆系统的价值。

记忆是智能的基础,也是信任的基石。OpenClaw通过开源的、透明的、用户可控的记忆系统,为AI助手的未来指明了一条可行之路——不是替代人类,而是成为人类能力的有益延伸。