简短答案
OpenClaw 忘记之前的运行是因为每个会话默认只加载今天和昨天的日常笔记以及 MEMORY.md,任何更早的内容都必须明确搜索。没有结构化的运行历史,代理无法说出“我两周前尝试过这种方法,但失败了。”一个持久的记忆层将每个过去的运行转化为代理自动重用的可查询记录。
为什么 OpenClaw 会忘记之前的运行
OpenClaw 的 记忆文档 清楚地解释了加载模型:今天和昨天的笔记会自动加载,而 MEMORY.md 会在每个 DM 会话开始时加载。任何更早的内容存储在磁盘上,但不会被提取到提示中,除非代理请求它。
三个设计选择使得之前的运行无法进入工作记忆:
1. 默认加载窗口为两天。 三天前、上周或上个月的笔记存在于文件系统中,但不在活动提示中。代理只有在记得调用 memory_search 并使用正确的查询时才能看到它们。
2. 运行不是结构化实体。 OpenClaw 按日期存储日常笔记,而不是按任务或运行 ID。没有“给我显示十月份的第 47 次运行”的查找。要重建过去的运行,代理必须拼凑日期范围,并希望正确的关键词浮现。
3. memory_search 是语义的,而不是历史的。 结合向量相似性和关键词匹配的混合搜索在配置了嵌入提供者时会浮现相关的过去笔记。它擅长“找出关于 JSONB 性能的任何内容。”但在“列出每个涉及该客户数据的运行”方面较弱。
结果是:OpenClaw 在孤立的每个会话中记忆良好,但连接不佳。每个新运行都是相对独立的,并未受到之前所有内容的影响。
当 OpenClaw 忘记之前的运行时你会失去什么
之前运行的损失是阻止代理随着时间变得更聪明的失败模式:
- 重复错误。 上个月的失败方法在这个月被重新尝试,因为代理没有自动回忆起哪些死胡同已经浪费了时间。
- 浪费探索。 在早期运行中发现的解决方案没有被重用。代理重新推导出相同的方法,支付了相同的推理费用。
- 没有跨运行模式识别。 只有在许多运行中才能显现的趋势(这种任务总是因为这个原因失败)从未浮现,因为没有单个会话能看到超过两天的历史片段。
Mem0 的 2026 年 AI 代理记忆状态 报告将跨运行学习识别为生产代理堆栈中最大的未解决问题。OpenClaw 的透明文件基础记忆诚实地反映了这一差距。它并没有弥补这一差距。
OpenClaw 的内置解决方法
该项目提供了部分解决运行历史的工具。
MEMORY.md 作为长期存储。 持久的事实、偏好和决策存储在 MEMORY.md 中,并在每个会话中加载。适用于稳定知识。并不设计为持有过去运行的结构化目录。
在笔记目录中进行 memory_search。 配置了嵌入提供者后,代理可以搜索每个过去的日常笔记。恢复质量取决于代理是否想到搜索以及是否想起了正确的关键词。
梦日记 (DREAMS.md)。 可选文件,用于梦境摘要和历史回填。适用于人工审核。不是程序化的运行索引。
这些功能使 OpenClaw 成为市场上更透明的代理记忆系统之一。它们仍然依赖于代理记得回顾,以及过去的运行可以通过自由文本搜索找到。
OpenClaw 的内置记忆不足之处
结构性问题在于 OpenClaw 将历史存储为按日期组织的文件,而不是按任务组织的运行。代理无法迭代、过滤或聚合运行级别的概念。跨运行学习需要文件基础记忆所不具备的结构。
对于个人使用,这是可以接受的。对于每个任务都是具有可测量结果的离散单元的生产代理堆栈,你需要一个将运行视为一流记录的系统。
MemoryLake 如何修复 OpenClaw 忘记之前的运行
MemoryLake 在 OpenClaw 的 Markdown 文件旁边添加了一个运行感知的记忆层。每个运行都有一个结构化记录,代理可以查询、比较和学习。
- 结构化运行历史。 每个 OpenClaw 运行被存储为一个事件记忆,包含开始时间、结束时间、任务描述、结果和完整的步骤跟踪,位于一个项目中。代理可以通过一次调用询问“给我显示最近五次类似任务的运行及其结束情况”。
- 代理记忆的 Git 风格版本控制。 每个运行都是项目记忆树上的一个分支。你可以比较运行之间的变化,将成功的运行重放作为新运行的起点,或在最近的更改破坏行为时回滚。
- 跨运行反思。 在许多运行中出现的模式(哪些方法有效,哪些失败,哪些输入预测失败)成为反思记忆,代理在每个新会话开始时读取。相同的记忆在通过 REST、MCP 或 Python SDK 连接的任何代理中都能工作。
MemoryLake 在 LoCoMo 长上下文基准测试中得分 94.03%,是截至 2026 年的最高已发布结果,具有毫秒级检索和 AES-256 端到端加密。
在 3 个步骤中将 MemoryLake 连接到 OpenClaw
- 创建项目并加载上下文。 登录 MemoryLake,打开项目管理,点击创建项目,并将其命名为“OpenClaw — 运行历史”。通过文档驱动导入过去的 MEMORY.md 文件和日常笔记,以为项目提供现有知识。添加运行模式(任务类型、输入、结果)在记忆选项卡中,以便未来的运行能够一致记录。
- 生成 MCP 服务器端点。 打开项目中的 MCP 服务器选项卡,点击添加 MCP 服务器,命名为“OpenClaw 运行”,然后点击生成。MemoryLake 返回一个 API 密钥 ID、密钥和端点 URL。立即复制密钥,它只显示一次。
- 连接 OpenClaw。 在 OpenClaw 的工具或服务器配置中将 MemoryLake 添加为 MCP 兼容的记忆提供者,或从自定义技能调用 REST API,在运行开始时打开一个新的事件记忆,并在运行结束时关闭它。如果你并行运行多个 OpenClaw 代理,Python SDK 支持集群级记忆操作。