乐于分享
好东西不私藏

小龙虾总失忆?你可能仅用了OpenClaw memory 30%的能力!

小龙虾总失忆?你可能仅用了OpenClaw memory 30%的能力!

OpenClaw 记忆系统基于一个简单而强大的哲学:写文件即记忆。没有隐藏状态,没有黑盒存储——模型只能记住写入磁盘的内容。所有记忆以纯 Markdown 文件形式存储在 Agent Workspace 中,可审计、可编辑、可追溯。

小提示:如果你只关注为啥失忆的原因,请直接食用第4节。

总体架构和流转如下图


1. 总览

OpenClaw 的记忆系统建立在以下核心原则上:


2. 核心三层记忆文件

OpenClaw 的记忆体系由三层文件构成,各司其职:

记忆文件

类型

加载时机

说明

MEMORY.md

长期记忆

DM 会话启动

精炼、持久的事实、偏好、决策。不是原始日志,是经过整理和提炼的”精华”。类似人类的长期记忆。

memory/YYYY-MM-DD.md

每日笔记

今天+昨天自动

详细的日常观察、会话摘要、原始上下文。类似日记或工作笔记。被 memory_search 索引。

DREAMS.md

梦境日志

按需读取

Dreaming 系统生成的梦境摘要和回顾。供人类审阅 Agent 的”梦”。


3. 记忆工具

Agent 通过两个核心工具与记忆系统交互:

两个工具均由memory plugin 提供,默认使用 memory-core 插件。


4. 记忆搜索机制

4.1 混合搜索架构:两条通路

OpenClaw 的记忆搜索设计了一个双引擎架构——当配置了 embedding provider 时,memory_search 会同时启用两条检索通路:

4.2 现实:很多人其实只用了一条通路

大多数人配置 OpenClaw 时:

  • ✅ 会配 API key、选模型

  • ✅ 会设飞书、微信等通道

  • ❌ 几乎不会主动配置 embedding provider

而 embedding 的配置是零感知的——不报错、不警告、系统照样跑。你只是感觉”记忆好像不太好用”,但说不清为什么。

OpenClaw 文档提到:

OpenClaw auto-detects your embedding provider from available API keys. If you have an OpenAI, Gemini, Voyage, or Mistral key configured, memory search is enabled automatically.

所以如果你碰巧配了 OpenAI/Gemini/Voyage/Mistral 的 key,向量搜索就自动开了。 但如果你只配了 vLLM 或本地模型,就需要手动配置 embedding。

4.3 缺失向量索引的真实代价

一句话结论:没有向量搜索,记忆召回质量会损失约 50%-70% 的”自然回忆”能力。(重要的事情说3遍)

少了向量搜索,等于从”理解你问什么”退化到”只能精准匹配关键词”。

真实场景对比

你的提问

笔记里写的

有向量?

无向量?

“上次面试怎么样”

“凯哥有个技术面试”

✅ 命中

❌ 关键词无交集,查不到

“那个配置问题解决了没”

“DNS 解析故障已修复”

✅ 命中

❌ 查不到

“gateway host 是什么”

“运行 OpenClaw 的机器”

✅ 命中

❌ 查不到

“查一下 DEEPSEEK_API_KEY”

“DEEPSEEK_API_KEY 环境变量”

✅ 命中

✅ 也命中(精确匹配)

影响程度分级

4.4 支持的 Embedding Provider

Provider

说明

Bedrock

AWS Bedrock 托管的 embedding 服务

Gemini

Google Gemini 文本嵌入

GitHub Copilot

GitHub Copilot 集成嵌入

Local (GGUF)

本地 GGUF 模型,约 0.6 GB,完全离线运行

Mistral

Mistral AI 嵌入服务

Ollama

通过 Ollama 运行的本地嵌入模型

OpenAI

OpenAI text-embedding 系列

Voyage

Voyage AI 高质量嵌入

OpenClaw 会自动从已配置的 API key 检测 embedding provider,无需手动指定。

4.5 质量优化

机制

说明

时间衰减

旧笔记逐渐降低排名权重,半衰期 30 天;MEMORY.md 等常青文件永不衰减

MMR 多样性

当多条笔记覆盖相同主题时,减少冗余结果,确保搜索结果多样化

4.6 配置建议

5. 记忆后端引擎

OpenClaw 支持多种记忆后端引擎,可根据需求选择:

引擎

特性

Builtin(默认)

SQLite 后端,存储在 \`~/.openclaw/memory/<agentId>.sqlite\`。提供 FTS5 关键词搜索、向量搜索、混合搜索、CJK 支持。无需额外依赖,开箱即用。

QMD

本地优先搜索侧车,结合 BM25、向量搜索、reranking。支持索引 workspace 外的目录、索引会话记录。安装: \`npm install -g @tobilu/qmd\`

Honcho

AI 原生跨会话记忆,提供用户建模、会话持久化、多 agent 感知。以插件形式安装。

LanceDB

本地嵌入支持,OpenAI 兼容 embeddings。适合需要高性能向量检索的场景。


6. Dreaming 系统(梦境记忆整合)

Dreaming 是 memory-core 中的后台记忆整合系统。默认禁用

6.1 三个阶段

阶段

名称

职责

是否写入 MEMORY.md

Light

浅睡

分类和暂存近期短期记忆信号

Deep

深睡

评分并晋升持久候选项到 MEMORY.md

REM

快速眼动

提取主题和反思信号

6.2 Deep 排名信号(六项加权)

晋升到 MEMORY.md 需要候选项通过多维度评分:

信号

权重

含义

Frequency

0.24

条目积累的短期信号数

Relevance

0.30

条目检索质量平均值

Query diversity

0.15

触发条目的不同查询 / 天数上下文

Recency

0.15

时间衰减新鲜度

Consolidation

0.10

多日重复强度

Conceptual richness

0.06

概念标签密度

Grounded Backfill

可以回放历史 memory/YYYY-MM-DD.md 笔记,生成结构化的回顾输出到 DREAMS.md。适用于初始化或追赶记忆整合的场景。


7. Memory Flush(自动记忆保存)

在 compaction(上下文压缩)之前,OpenClaw 会自动运行一个静默回合,提醒 agent 将重要上下文保存到记忆文件。默认开启


8. Active Memory(主动记忆注入)

可选的 plugin-owned 阻塞记忆子 agent,在主要回复之前运行。

工作原理

与被动搜索不同,Active Memory 不依赖主 agent 决定何时搜索记忆——它主动搜索相关记忆并注入到会话中。


9. Commitments(推断的承诺)

短期的后续记忆。当你提到”明天的面试”,OpenClaw 可能会记住”面试后回访”。

特性

Commitments

Cron 定时任务

触发方式

自动推断

手动设置

生命周期

短期、事件驱动

固定周期

来源

对话中的承诺和待办

用户明确指令

示例

“面试后回访”

“每周一 9:00 检查日历”


10. Memory Wiki(知识库层)

将持久记忆编译成带有确定性页面结构、结构化主张和证据、矛盾追踪、生成仪表板的知识库。

特性


11. CLI 工具

OpenClaw 提供了完整的命令行工具来管理记忆:

命令

说明

openclaw memory status

检查索引状态和 embedding provider 配置

openclaw memory search “query”

从命令行执行记忆搜索

openclaw memory index –force

强制重建记忆索引

openclaw memory promote

预览 Dreaming 晋升候选项

openclaw memory promote –apply

应用晋升,将候选项写入 MEMORY.md



总结

OpenClaw 的记忆系统是一个多层次、多维度的记忆框架。从底层的文件存储,到中层的语义搜索和后端引擎,再到上层的 Dreaming 整合和 Active Memory 注入,每一层都在解决 Agent 跨会话记忆的某个核心问题。理解这个体系,就能更好地理解 OpenClaw 是如何”记住”事物的。