为什么选择 memory-lancedb-pro

最近用 OpenClaw 办事的时候,发现一个问题:龙虾经常丢记忆。比如我让它写一段歌词,它直接就写了,压根没调用 lyric-writer skill。明明 MEMORY.md 里白纸黑字写着「写歌词必须调用 zhheo-lyric-writer skill」,它就是视而不见。

类似的例子还有:让它总结 B 站视频,不调 bilibili-ai-summary;让它下载抖音,不检查 cookie 有效性。每次都要我手动提醒「你忘了调 skill」,然后它才恍然大悟。

折腾了一圈才发现,memory-core 的纯向量检索有时候召回不准,重要的指令被淹没在大量记忆里。换成 memory-lancedb-pro 之后,混合检索 + 重排序,该想起来的终于能想起来了。

这篇文章聊聊我的选择和配置过程。

四种记忆插件对比

OpenClaw 社区里主流的记忆插件有四个:

特性 memory-core memory-wiki memory-lancedb memory-lancedb-pro
存储 SQLite Wiki格式 LanceDB LanceDB
检索 纯向量 关键词+向量 纯向量 向量+BM25混合
重排序 Cross-Encoder
智能提取 LLM 6类分类
遗忘机制 Weibull衰减
多作用域 按agent/user/project
管理工具 CLI 完整CLI+MCP工具
数据迁移 原生 需手动 可迁移 一键迁移

选择 memory-lancedb-pro 的三个理由

1. 混合检索更精准

纯向量搜索有时候会跑偏。比如我搜”删除操作必须用 trash”,纯向量可能返回”删除文件”相关的内容,但不是我想要的那条铁律。

Pro 版用向量 70% + BM25 30% 的混合权重,再经过 Cross-Encoder 重排序,召回精度明显提升。

2. 智能提取和遗忘

旧版只会把对话原文存进去,时间一长全是噪音。Pro 版会用 LLM 自动分类:

  • profiles:用户画像(技术栈、偏好)
  • preferences:习惯偏好(代码风格、回复格式)
  • entities:实体信息(人名、地址、项目名)
  • events:事件记录(事故、决策)
  • cases:案例经验(踩坑、解决方案)
  • patterns:模式识别(常见问题、工作流)

而且有 Weibull 衰减模型,不重要的记忆会自然淡出,不会越用越臃肿。

3. 可控的数据导入

这是最关键的一点。从 memory-core 迁移过来有 4243 条记忆,涉及 387 个文件。Pro 版支持:

  • canonicalCorpus:自动索引 MEMORY.md 和 memory/*.md
  • 会话记录索引:开启 includeSessionTranscripts
  • 手动导入:通过 migration-manifest.json 批量导入

一句话部署

不想看配置?直接复制这行命令:

1
curl -fsSL https://raw.githubusercontent.com/CortexReach/toolbox/main/memory-lancedb-pro-setup/setup-memory.sh | bash

脚本会自动检测你的环境、选择 embedding provider、写入配置、重启 Gateway。支持 Jina(免费)、SiliconFlow(国内加速)、OpenAI 等多种 provider。

手动部署方式的配置过程

1. 安装插件

1
2
3
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 build

2. 修改 openclaw.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
"plugins": {
"slots": {
"memory": "memory-lancedb-pro"
},
"load": {
"paths": ["/Users/zhheo/.openclaw/workspace/plugins/memory-lancedb-pro"]
},
"entries": {
"memory-lancedb-pro": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai-compatible",
"model": "BAAI/bge-m3",
"apiKey": "your-siliconflow-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": "your-siliconflow-key",
"rerankModel": "BAAI/bge-reranker-v2-m3",
"rerankEndpoint": "https://api.siliconflow.cn/v1/rerank"
},
"canonicalCorpus": {
"enabled": true,
"syncOnSearch": true,
"includeSessionTranscripts": true
},
"sessionMemory": {
"enabled": false
}
}
}
}
}
}

3. 数据迁移

从 memory-core 的 SQLite 迁移,我写了个脚本生成迁移清单。Pro 版会自动索引 canonical corpus 中的文件,会话记录通过 includeSessionTranscripts 开启。

迁移完成后 4243 条记忆全部可用。

4. 重启验证

1
2
openclaw config validate
openclaw gateway restart

效果对比

切换到 Pro 版后,最明显的变化:

搜”删除”相关规则,能精确找到那条铁律,而不是泛泛的删除操作。新对话中的重要信息会被自动提取和分类。旧的不重要记忆会自然衰减,不会越用越慢。可以手动导入历史数据,索引范围自己定。

GitHub

项目地址:https://github.com/CortexReach/memory-lancedb-pro

社区活跃,Issue 响应及时,文档齐全。如果遇到 CPU 不支持 AVX 的问题,设置 retrieval.disableNativeCosine: true 即可。

总结

如果你只是想让 AI 记住一些偏好,memory-core 够用。但如果你想要更精准的语义检索、自动化的记忆管理、从旧系统平滑迁移、对记忆数据有完全控制权,memory-lancedb-pro 是目前最好的选择。社区维护活跃,文档齐全,迁移工具也完善。

最重要的是,它让你的记忆系统从“黑盒”变成了“白盒”——你知道存了什么、怎么存的、怎么用的。