基于文件化记忆 + 可扩展检索的混合架构,与 Claude Code 有本质区别。OpenClaw 采用了更像传统 RAG 的检索增强方案。
OpenClaw 的记忆系统与 Claude Code 最根本的区别:不是「把所有文件拼接到上下文」,而是「按需检索相关记忆」。
OpenClaw 的记忆和工作区配置完全基于文件系统。以下是典型的项目结构:
当用户发起请求时,OpenClaw 会经历以下检索流程,找到最相关的记忆片段:
将用户的自然语言查询转换为检索向量和关键词集合。同时提取实体、时间、意图等元信息。
在 .openclaw/memory/ 目录中对所有 Markdown 文件进行倒排索引匹配。找出包含精确关键词的记忆片段。
将查询向量与存储的 embedding 进行余弦相似度计算。找出语义上最相关但可能不包含精确关键词的记忆。
将 BM25 分数和向量相似度分数按权重合并。权重可配置,通常语义权重略高。融合后得到最终排序列表。
每条记忆有指数衰减的权重。decay_rate 通常设为 0.95^t(t = 天数)。同时考虑访问频率boost。
用交叉编码器对 Top-K 候选记忆重新评分,确保真正相关的内容排在最前面。输出最相关的 N 条记忆片段。
将检索到的记忆片段插入到 prompt 的专用区域。记忆是「片段级」注入,而非整文件注入。
两者记忆系统的核心差异:
OpenClaw 的记忆文件都包含 YAML front-matter 元数据,这是检索的基础:
--- type: user_preference created: 2025-11-15 updated: 2026-05-07 tags: [偏好, 编码风格, 工具] access_count: 24 --- # 用户偏好 ## 编码风格 - 喜欢使用 TypeScript - 代码格式偏好 Prettier - 注释风格:重要决策必须写注释 ## 技术栈 - 后端:Node.js + Express - 数据库:PostgreSQL - 测试:Jest ## 沟通偏好 - 喜欢先看架构图再动手 - 讨厌长篇大论的解释 - 期望代码提交附带变更说明
--- type: project_context created: 2025-10-20 updated: 2026-05-06 tags: [项目, 架构, 待办] access_count: 31 --- # 项目上下文 ## 项目概述 电商后端 API 服务,采用微服务架构。 ## 当前阶段 正在进行 支付模块重构,目标: - 解耦支付网关 - 添加支付幂等性 - 完善退款流程 ## 技术债务 - [ ] 旧订单服务无事务日志 - [ ] 缓存策略不一致 - [ ] 部分 API 缺少鉴权 ## 最近决策 - 2026-05-06: 决定使用 Temporal 做工作流编排 - 2026-04-28: 放弃 Kafka,改用 Redis Streams
Claude Code = 把所有记忆文件拼接到上下文(像发一叠纸质材料)
OpenClaw = 把记忆存到可检索知识库,按需查询(像用搜索引擎找资料)
OpenClaw 的方案更接近 RAG(检索增强生成),适合记忆量大或知识库丰富的场景。Claude Code 的方案更简单直接,适合中小型项目。
层记忆体系
Session → Project → User → Global
检索通道
BM25 + 向量 + Rerank
指数时间衰减
记忆自动老化