使用 OpenClaw 一段时间后,很多人会遇到一种很恼火的情况:明明已经在 MEMORY.md 写过规则,Agent 到了新对话还是忘记调用指定 Skill,或者只记得大概意思,却召回不到那条真正重要的指令。
例如,写歌词时忘记调用歌词 Skill,总结视频时跳过指定工具,下载内容前也不检查 Cookie。问题往往不是“完全没有记忆”,而是记忆召回不够精准。这也是从 memory-core 升级到 memory-lancedb-pro 的主要原因。

为什么 memory-core 容易“记得但想不起来”?
纯向量检索擅长找到语义相似内容,却不一定能优先命中强规则。比如搜索“删除操作必须使用 trash”,模型可能召回大量与删除文件相关的对话,却没有把真正的安全规则排在最前面。
当记忆数量越来越多,普通聊天、临时信息和重要规范混在一起,结果就会被噪音淹没。要解决这一问题,需要的不只是换一个向量数据库,而是一整套更精细的检索与生命周期管理。
四种 OpenClaw 记忆方案对比
| 特性 | memory-core | memory-wiki | memory-lancedb | memory-lancedb-pro |
|---|---|---|---|---|
| 存储 | SQLite | Wiki 格式 | LanceDB | LanceDB |
| 检索 | 纯向量 | 关键词+向量 | 纯向量 | 向量+BM25 混合 |
| 重排序 | 无 | 无 | 无 | Cross-Encoder |
| 智能提取 | 无 | 无 | 无 | LLM 六类分类 |
| 遗忘机制 | 无 | 无 | 无 | Weibull 衰减 |
| 多作用域 | 无 | 无 | 无 | agent/user/project |
| 管理工具 | 基础 | CLI | 基础 | 完整 CLI + MCP 工具 |
| 数据迁移 | 原生 | 需手动 | 可迁移 | 迁移与导入工具 |
选择 memory-lancedb-pro 的三个理由
1. 混合检索更适合规则与工作流
Pro 版可以同时执行向量搜索与 BM25 全文检索,再经过融合与 Cross-Encoder 重排序。向量负责理解语义,BM25 负责命中具体词语,重排序则重新判断哪些结果最符合当前查询。
找到表达方式不同但含义相近的记忆。
精确命中工具名、项目名、命令和强约束关键词。
对候选结果重新评分,把最相关内容推到前面。
原配置采用向量 70%、BM25 30% 的权重,可作为起点,但不是所有数据集的最佳答案。规则型记忆较多时,可以适当提高 BM25 权重;自然语言偏好较多时,则保留更高的向量权重。
2. 智能提取与记忆衰减
Pro 版可以借助 LLM 将重要信息归入六类:
- profiles:用户画像、技术栈与长期背景。
- preferences:代码风格、回复格式与个人习惯。
- entities:人物、地址、项目和具体对象。
- events:事故、决策和阶段性事件。
- cases:踩坑记录、解决方法与案例经验。
- patterns:常见问题、重复行为和工作流模式。
同时,Weibull 衰减模型会结合时间、访问频率和重要性调整记忆权重,让低价值噪音逐渐淡出。这里的“遗忘”通常是降低召回优先级,不应理解为未经确认就直接删除源文件。
3. 可控的数据导入与作用域
canonicalCorpus 可以索引 MEMORY.md 和 memory/**/*.md,并按需加入会话记录。多作用域则允许按照 Agent、用户和项目隔离记忆,避免不同客户或项目之间互相污染。
MEMORY.md 和 Markdown 记忆文件保留为可读、可备份的事实源,让 LanceDB 充当语义索引。数据库负责“找到”,文件负责“审计和恢复”。一键安装:先下载,再执行
项目提供社区维护的安装脚本。为了便于审查,不建议直接把远程脚本通过管道送进 Shell;先下载、查看,再执行:
curl -fsSL https://raw.githubusercontent.com/CortexReach/toolbox/main/memory-lancedb-pro-setup/setup-memory.sh -o setup-memory.sh
less setup-memory.sh
bash setup-memory.sh脚本会检测环境、选择 Embedding Provider、写入配置并重启 Gateway,可使用 Jina、SiliconFlow、OpenAI、Ollama 等方案。执行前仍应备份现有配置与记忆数据。
手动安装方式
当前项目文档优先推荐通过 OpenClaw CLI 安装测试版:
openclaw plugins install memory-lancedb-pro@beta如果需要跟踪仓库源码,也可以使用源文中的手动方式:
git clone https://github.com/CortexReach/memory-lancedb-pro.git ~/.openclaw/workspace/plugins/memory-lancedb-pro
cd ~/.openclaw/workspace/plugins/memory-lancedb-pro
npm install
npm run buildplugins.load.paths 必须填写插件的绝对路径。不要照抄他人的用户名路径,也不要在公开配置中明文保存 API Key。配置 openclaw.json
下面保留源配置的核心结构,并将密钥改为环境变量占位符。请根据自己的系统用户名、模型和服务商调整:
{
"plugins": {
"slots": {
"memory": "memory-lancedb-pro"
},
"load": {
"paths": ["/Users/你的用户名/.openclaw/workspace/plugins/memory-lancedb-pro"]
},
"entries": {
"memory-lancedb-pro": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai-compatible",
"model": "BAAI/bge-m3",
"apiKey": "${SILICONFLOW_API_KEY}",
"baseURL": "https://api.siliconflow.cn/v1",
"dimensions": 1024
},
"autoCapture": true,
"autoRecall": true,
"smartExtraction": true,
"extractMinMessages": 2,
"extractMaxChars": 8000,
"retrieval": {
"mode": "hybrid",
"vectorWeight": 0.7,
"bm25Weight": 0.3,
"rerank": "cross-encoder",
"rerankApiKey": "${SILICONFLOW_API_KEY}",
"rerankModel": "BAAI/bge-reranker-v2-m3",
"rerankEndpoint": "https://api.siliconflow.cn/v1/rerank"
},
"canonicalCorpus": {
"enabled": true,
"syncOnSearch": true,
"includeSessionTranscripts": true
},
"sessionMemory": {
"enabled": false
}
}
}
}
}
}配置中几个关键开关:
autoCapture:自动捕获值得长期保存的信息。autoRecall:回答前自动召回相关记忆。smartExtraction:使用 LLM 进行分类、合并和去重。canonicalCorpus.enabled:索引现有 Markdown 记忆文件。includeSessionTranscripts:把会话记录加入索引,数据量较大时应谨慎开启。sessionMemory.enabled: false:初期避免会话摘要污染长期检索。
从 memory-core 迁移前先做什么?
源环境从 memory-core 迁移了 4243 条记忆、涉及 387 个文件,并通过自定义脚本生成迁移清单。这个数字是个案,不代表每个人都能直接“一键迁移”。memory-core、memory-lancedb 与不同版本 Pro 的数据结构并不完全相同。
- 备份配置:保存当前
openclaw.json。 - 备份事实源:复制
MEMORY.md、memory/和现有数据库目录。 - 先开 canonicalCorpus:确认 Markdown 文件可以被索引和召回。
- 小批量导入:先迁移一部分数据,检查重复、乱码和作用域。
- 再切换 memory slot:确认新插件稳定后,将其设为唯一活动记忆插件。
从旧版 memory-lancedb 迁移时,可结合项目当前 CLI 和迁移文档;从 memory-core 迁移则应依据实际数据结构选择导出、清单或自定义脚本。
验证配置与召回效果
openclaw config validate
openclaw gateway restart
openclaw logs --follow --plain | grep "memory-lancedb-pro"项目文档建议进一步检查插件信息和统计:
openclaw plugins info memory-lancedb-pro
openclaw memory-pro stats不要只看“插件已注册”,还要设计可重复测试:
- 保存一条包含明确工具名的规则,换一种表达方式搜索。
- 同时放入多条“删除”相关内容,确认强规则是否排在前面。
- 切换项目或用户作用域,检查是否发生跨项目泄漏。
- 关闭外部 Rerank API,观察降级后的召回是否仍可接受。
CPU 不支持 AVX 怎么办?
部分 Linux x64 环境中的 LanceDB 原生向量搜索可能依赖 AVX/AVX2。如果出现 SIGILL 或相关崩溃,可先检查 CPU:
grep -o 'avx[^ ]*' /proc/cpuinfo | head -1项目文档提供了兼容开关:
"retrieval": {
"disableNativeCosine": true
}也可以使用环境变量:
export MEMORY_LANCEDB_DISABLE_NATIVE_COSINE=1开启后会改用范围受控的行扫描和 JavaScript 余弦排序,兼容性更好,但大型记忆库的性能可能下降。
升级后的实际变化
切换 Pro 版后,最明显的目标不是“记忆数量变多”,而是以下几件事更可控:
- 搜索删除规则时能优先命中明确约束,而不是泛泛的相似内容。
- 新对话中的重要信息被自动提取、分类和去重。
- 低价值旧记忆逐渐降低权重,避免检索越来越嘈杂。
- 历史文件、会话和手动导入范围可以分别控制。
- 通过 CLI 和管理工具查看、搜索、导出或删除记忆。
项目地址:CortexReach/memory-lancedb-pro GitHub。准备体验前,可先查看 memory-lancedb-pro 站内详情页;尚未安装主程序的用户可进入 OpenClaw 站内工具页。
总结
如果只是保存少量个人偏好,memory-core 仍然够用;如果已经积累大量规则、项目决策和会话记录,并且经常出现“有记忆但召回不到”,memory-lancedb-pro 更值得尝试。
迁移时不要急着覆盖旧系统。先备份,再安装和验证,最后分批导入。把可读文件作为事实源,把 LanceDB 作为检索索引,才能让 OpenClaw 的记忆从黑盒变成真正可管理的基础设施。
说明:插件处于持续开发中,安装命令、配置字段和版本兼容性可能变化;实际操作前请核对 GitHub 当前 README、版本说明与 OpenClaw 插件架构。
