
openClaw 和 Claude Code 押注了同一个激进的理念:纯 Markdown 文件是 AI 智能体最好的记忆格式。然而,它们在文件的写入、检索和整合方式上却截然不同。openClaw 构建了一套完整的检索增强记忆系统,基于 SQLite 索引实现混合向量 + 关键词搜索;而 Claude Code 则依赖一套更简洁但高度结构化的层级体系,由用户编写的指令和智能体生成的笔记组成,完全没有向量数据库。最终形成了两种截然不同的哲学——openClaw 为大规模自主检索而优化,Claude Code 为开发者的可控性和可预测性而优化。
这个对比之所以重要,是因为记忆正是 AI 智能体跨会话可用性的瓶颈。一个会忘记先前决策、调试经验或用户偏好的智能体,只会让人不断重复劳动。两个系统都解决了这个问题,但面向不同的受众,做出了不同的权衡。
架构:检索引擎 vs. 结构化文件层级
openClaw 的记忆架构是一个双层系统。第一层是磁盘上的 Markdown 文件——MEMORY.md 存储长期事实,memory/YYYY-MM-DD.md 记录每日日志,sessions/YYYY-MM-DD-<slug>.md 保存对话记录。第二层是一个按智能体隔离的 SQLite 数据库,位于 ~/.openclaw/memory/<agentId>.sqlite,包含 FTS5 全文索引和通过 sqlite-vec 扩展实现的向量嵌入。该索引显式声明不是数据源头——它可以随时从文件重建。智能体通过两个暴露的工具搜索记忆——memory_search(语义混合搜索)和 memory_get(直接文件读取)——由 LLM 在对话中自主调用。
Claude Code 的架构从根本上更加简洁。没有搜索索引,没有向量数据库,没有嵌入管道。 记忆存储在四个基于文件的子系统中,按加载层级排列:
• CLAUDE.md 文件(用户编写的项目/个人/组织级指令)——会话开始时全量加载 • Auto memory(Claude 自动生成的笔记,位于 ~/.claude/projects/<project>/memory/)——会话开始时加载MEMORY.md索引(前 200 行或 25KB),主题文件按需读取• Rules(模块化指令文件,位于 .claude/rules/)——无条件规则在启动时加载,路径范围规则在打开匹配文件时加载• Skills(任务专用的 SKILL.md 文件,位于 .claude/skills/)——描述信息在启动时加载,完整内容仅在调用时注入
Claude Code 通过标准的文件工具直接从磁盘读取文件来检索记忆。没有相似度搜索——智能体要么已经在上下文窗口中拥有相关内容,要么根据 MEMORY.md 索引中已知的路径去读取特定文件。
记忆类型服务于不同的认知功能
openClaw 实现了一套受生物学启发的记忆分类体系。短暂/短期记忆存储在按日期命名的日志文件中,当天和前一天的笔记在每次会话时自动加载。长期记忆在 MEMORY.md 中存储经过整理的事实、偏好和决策,永久保留。会话记忆捕获完整的对话记录,可以在数周后被索引和检索。工作记忆就是当前的上下文窗口本身,在达到 token 限制时会被压缩。实验性的 Dreaming(做梦)系统增加了一个整合层,通过受睡眠阶段启发的三阶段过程,将强烈的短期信号提升为长期记忆。
Claude Code 的记忆类型更直接地映射到软件开发工作流。CLAUDE.md 充当声明式配置——项目架构、构建命令、编码规范。Auto memory 捕获 Claude 在工作中发现的运维知识——调试经验、构建怪癖、模块关系。Rules 提供按文件模式限定范围的条件指令(例如:仅在编辑 src/api/**/*.ts 时激活的 API 校验规则)。Skills 是程序性记忆——包含指令、示例和脚本的可复用任务模板,Claude 按需执行。
memory/YYYY-MM-DD.md | ||
MEMORY.md | MEMORY.mdCLAUDE.md(用户编写) | |
sessions/ | ||
存储格式惊人地相似,检索方式截然不同
两个系统都将记忆存储为纯 Markdown 文件,人类可以直接阅读、编辑,并用 git 进行版本管理。这在两个系统中都是刻意的设计选择——透明性优先于性能优化。
差异出现在检索环节。openClaw 构建了精密的混合搜索,结合 BM25 词法匹配(30% 权重)和向量余弦相似度(70% 权重),通过分数融合算法实现。它支持多种嵌入提供者并自动降级:首选通过 node-llama-cpp 的本地嵌入,其次是 OpenAI 的 text-embedding-3-small,再次是 Gemini 的 gemini-embedding-001。文件被切分为约 400 token 的片段,重叠 80 token,使用 SHA-256 哈希去重,增量索引。对 10K 片段的搜索延迟低于 100ms。
Claude Code 完全没有搜索基础设施。它依赖两种机制:(1)在会话启动时将关键文件预加载到上下文窗口;(2)当它从 MEMORY.md 索引中知道路径时,按需读取特定文件。这意味着 Claude Code 的回忆能力取决于其索引文件——如果某条信息没有在 MEMORY.md 或已加载的 CLAUDE.md 中被引用,智能体就找不到它,除非恰好去查看了正确的目录。代价是零配置成本、零基础设施,以及对智能体所知内容的完全可预测性。
两个系统都会"做梦",但触发方式不同
openClaw 的 Dreaming 系统作为可选的后台定时任务运行(默认:每日凌晨 3 点),包含三个以生物学命名的阶段。浅睡眠(Light Sleep) 摄取近期每日日志并使用 Jaccard 相似度去重。快速眼动(REM) 分析概念频率,识别候选真理,标记未被近期对话强化的陈旧 MEMORY.md 条目。深度睡眠(Deep Sleep) 基于六个加权信号进行多因子评分——相关性(0.30)、频率(0.24)、查询多样性(0.15)、时效性(0.15)、整合度(0.10)和概念丰富度(0.06)——设有三个阈值门控(最低分数 0.8、最低召回次数 3、最低独立查询数 3)。只有通过所有门控的条目才会被提升到 MEMORY.md。该系统在 openClaw 4.5(2026 年 4 月)中从测试版升级为正式版。
Claude Code 的 Auto Dream 在满足两个条件时触发:距上次整合约 24 小时且累积约 5 个以上会话。它执行四阶段流程:定向(Orient,映射记忆目录)、采集信号(Gather Signal,从近期会话记录中提取修正和决策)、整合(Consolidate,合并发现、解决矛盾、将相对日期转为绝对日期)、裁剪与索引(Prune & Index,将 MEMORY.md 重建到 200 行以内)。已观测到一次整合处理了 913 个会话,耗时约 8-9 分钟。Auto Dream 只写入记忆文件,从不修改源代码,并使用锁文件防止并发运行。
作用域和共享模型反映了不同的使用场景
openClaw 的记忆按智能体隔离。每个 agent ID 拥有独立的 SQLite 数据库和工作空间目录。多智能体工作流保持严格隔离。记忆文件默认存储在 ~/.openclaw/workspace/,MEMORY.md 仅在私聊/DM 会话中加载(不在群组上下文中),以保护敏感信息。系统支持可插拔后端——默认的基于 SQLite 的核心、QMD(本地 BM25 + 向量 + LLM 重排序侧车)和 Honcho(基于云的跨会话记忆)。
Claude Code 使用四层作用域层级:托管策略(组织范围,由 IT 强制执行,不可排除)、用户级(~/.claude/CLAUDE.md 和 ~/.claude/rules/)、项目级(.claude/CLAUDE.md、.claude/rules/、.claude/skills/)和本地覆盖(CLAUDE.local.md,被 gitignore)。Auto memory 按 git 仓库隔离,但是机器本地的——同一项目的不同开发者维护各自独立的 auto memory 存储。CLAUDE.md 文件从工作目录向上遍历目录树,拼接所有发现的文件而非覆盖。
~/.openclaw/workspace/MEMORY.md | ~/.claude/CLAUDE.md~/.claude/rules/ | |
自定义和控制权体现不同的哲学
openClaw 主要通过直接文件编辑和 CLI 命令赋予用户控制权。用户可以在任何文本编辑器中编辑 MEMORY.md,从命令行运行 openclaw memory search,强制重建索引,或用 openclaw memory promote 预览做梦提升结果。可插拔后端系统允许替换整个记忆引擎——从内置的 SQLite 系统到 QMD 的本地重排序引擎,或 Mem0、Cognee、Supermemory 等第三方方案。智能体本身也可以使用标准文件工具自主写入记忆文件。
Claude Code 提供更细粒度的控制面。用户可以通过 /memory 命令、环境变量或设置 JSON 来切换 auto memory。claudeMdExcludes 设置允许在 monorepo 中跳过不相关的 CLAUDE.md 文件。路径范围规则使用 glob 模式来条件性激活指令。Skills 支持 YAML frontmatter 字段来控制调用权限(disable-model-invocation、user-invocable)、允许的工具、模型选择和投入级别。/init 命令通过分析代码库自动生成初始 CLAUDE.md。--bare 标志可以剥离所有记忆系统,用于脚本化场景。
根本权衡:检索能力 vs. 简洁性
openClaw 的记忆系统在自主检索方面更强大。一个拥有来自数月会话的 10,000 个索引片段的智能体,可以在 100ms 内通过语义搜索找到三周前的一条调试经验——即使它不记得确切的文件名。BM25 + 向量的混合方法既能处理精确的 token 匹配(错误代码、函数名),也能处理概念相似性(改述的问题)。代价是基础设施复杂度——SQLite 数据库、嵌入提供者、分块管道和索引维护。
Claude Code 的记忆系统更可预测、对开发者更友好。每一条记忆都有清晰的位置、清晰的作者(用户或 Claude)和清晰的加载规则。没有黑盒检索评分——如果某些东西在上下文中,你完全清楚原因。路径范围规则和技能调用系统提供了细粒度控制,决定什么知识在什么时候激活。代价是有限的回忆容量:没有搜索索引,Claude Code 只能记住启动时放入上下文窗口的内容,加上它通过文件名知道去查找的内容。
延伸讨论:当这两套记忆系统遇上运营后台
上述对比聚焦于架构和能力。但一个自然的追问是:如果把这类 AI 智能体(尤其是 openClaw + MCP 的组合)用于互联网产品的运营后台——让运营同学通过自然语言对话来完成日常配置——是否合适?
答案涉及两个层面的错配:一是非确定性系统做确定性操作的风险,二是个性化记忆在标准化流程中的价值缺失。
非确定性系统做确定性操作:方向性矛盾
运营后台配置的本质是精确、可审计、可回滚的状态变更——"把 A 活动的折扣从 8 折改成 7 折","给 B 渠道开放 C 功能的白名单"。这类操作要求 100% 的确定性:同样的意图必须产生同样的结果。
而 openClaw + LLM 调用 MCP 的链路天然是非确定性的。运营同学说"把首页 banner 换成春季活动的",LLM 需要理解"春季活动"指哪个、"首页 banner"对应哪个配置项、参数格式是什么。任何一个环节的理解偏差,都直接作用于线上生产环境。传统后台里一个表单 + 确认按钮能解决的事,引入 LLM 反而增加了出错的可能性和排查的复杂度。
具体而言,这套方案在运营场景下暴露出几个关键缺陷:
权限和审批缺失。 运营后台通常有严格的 RBAC(角色权限控制)和审批流——比如改价格需要主管审批,改首页需要内容审核。openClaw 没有内置审批工作流,MCP 工具一旦被调用就直接执行了,没有"预览→确认→执行"的中间态。
审计追踪不充分。 出了线上事故,需要精确知道"谁在什么时间改了什么配置、改之前是什么值"。openClaw 的会话日志是为 AI 记忆设计的,不是为合规审计设计的。自然语言指令 → LLM 理解 → MCP 调用这条链路,审计时很难还原真实意图和实际操作之间的映射关系。
错误的代价不对称。 开发者用 openClaw 写错一段代码,可以跑测试发现、git revert 回滚。运营配置错误往往直接影响线上用户——错误的价格、错误的推荐策略、错误的权限开放,可能在几分钟内造成实际损失。LLM 的幻觉和误解在这个场景下代价极高。
用户体验倒退。 运营同学的日常是高频、重复、批量的配置操作。一个设计良好的表单界面——下拉选择、日期选择器、批量导入、实时预览——在效率和准确性上远优于用自然语言描述意图再等 LLM 解析。openClaw 的终端交互界面对非技术运营人员也不友好。
个性化记忆在标准化操作中的价值悖论
退一步讲,即使我们解决了上述确定性和安全性问题,openClaw 的核心卖点——个性化的、越用越懂你的记忆系统——在运营场景中也面临一个根本性的价值问题。
运营操作的知识是组织级的,不是个人级的。 "怎么配一个满减活动"、"上架一个 SKU 需要填哪些字段"、"审核不通过的驳回话术模板"——这些知识属于业务流程和操作规范,应该沉淀在组织的 SOP 文档里,而不是某个运营同学和 AI 之间的私人记忆中。openClaw 的记忆按个人(per-agent)隔离。张三和 AI 聊了十次积累下来的记忆,李四完全看不到。但张三摸索出来的操作经验——"配优惠券的时候要注意先设预算上限再设发放规则,否则会报错"——对李四同样有价值。个性化记忆在这里不仅没帮忙,反而造成了知识孤岛。
记忆的边际价值递减得很快。 一个运营同学配活动,前两三次可能需要摸索,但很快就会形成肌肉记忆。操作路径是固定的:选活动类型 → 填参数 → 预览 → 提审 → 上线。AI 记住"你上次配的是满 200 减 30"对下次配"满 300 减 50"几乎没有帮助,因为每次活动的参数本来就不同,而操作流程本来就相同。
真正需要记住的不是历史操作,而是业务规则。 运营场景中有价值的"记忆"其实是约束条件——"这个品类的最低折扣不能低于 7 折"、"大促期间优惠不可叠加"、"这个渠道的用户不能看到 XX 类商品"。但这些不应该存在 AI 的记忆里,而应该硬编码在系统的校验逻辑中。靠 AI 记住业务规则来防止误操作,远不如在表单提交时直接做校验可靠。
个性化记忆甚至可能有害。 假设运营 A 之前一直在配某个业务线的活动,openClaw 记住了 A 的偏好和常用参数。但业务规则在上周更新了,A 不知道。如果 AI 基于旧记忆自动填充或建议参数,反而会误导 A 沿用过时的配置。标准化操作需要的是当前最新的规则,不是历史个人习惯。
什么场景下的运营工作可以引入 AI
这并不意味着运营后台完全不能用 AI,而是应该换一种方式和定位。
AI 作为辅助,而非主操作界面。 在运营后台的 UI 中嵌入 AI 助手,帮助运营同学理解数据("这个活动的转化率和上期比怎么样?")、生成配置建议("根据历史数据,建议这个品类的折扣设在 X"),但最终的配置变更仍然通过传统表单提交,经过校验和审批流。
AI 用于只读查询,不用于写操作。 让运营同学通过自然语言查数据、拉报表是相对安全的——查询结果错了最多浪费时间,不会影响线上。但写操作(创建、修改、删除配置)应该走严格的 UI 流程。
如果确实要用 MCP,加一层防护。 在 MCP server 端实现强制的参数校验、变更预览、人工确认步骤和自动回滚机制,而不是依赖 LLM 的准确性。本质上是把 MCP 当做一个有严格约束的 API 网关,而非一个自由调用的工具箱。
记忆应该是组织级、声明式、嵌入流程的。 如果一定要引入某种"记忆"能力,它应该是所有运营同学共享同一套操作规范和业务规则(对应 Claude Code 中"managed policy"的思路),由业务负责人统一维护更新(声明式而非积累式),以表单默认值、输入提示、校验规则等形式直接嵌入 UI(嵌入流程而非独立存在)。
场景适配的本质判断
回到开头的架构对比,可以更清晰地看到两套系统各自的最佳战场:
openClaw 的记忆架构适合长期运行的个人 AI 助手,它们积累数月的上下文,需要在数千次交互中实现自主检索——其混合搜索、可插拔后端和受生物学启发的整合机制为这一场景提供了出色的支持。Claude Code 的记忆架构适合面向开发者的编码会话,可预测性、团队共享和条件性指令加载比原始检索广度更为重要——其四层层级、路径范围规则和技能系统体现了对软件开发工作流的深刻理解。而运营后台这类追求标准化、确定性、可审计的场景,两者的记忆系统都不是最优解——真正需要的是嵌入业务流程的组织级规则引擎,而非越用越懂你的个性化 AI 记忆。
最引人注目的共同见解是:两个系统都选择了 Markdown 文件作为数据源头,而非向量数据库,将人类可读性和 git 兼容性置于检索性能之上——这是一个设计赌注:你能读懂和编辑的记忆,比你只能搜索的记忆更有价值。而运营场景的启示则更进一步:不是所有工作都能从 AI 的"越用越懂你"中受益。标准化操作的价值恰恰在于它不因人而异、不因次而异。给一个追求标准化的流程加上个性化记忆,方向就反了。
夜雨聆风