让小龙虾拥有完美记忆:OpenClaw 本地记忆系统补全指南
OpenClaw 默认配置下,记忆系统靠关键字匹配做检索。如果你没配 embedding 模型,语义搜索就废了——AI 只能死板地搜你说过什么关键词,搜不到你想表达什么意思。结果就是:你在第 1 轮聊过的东西,第 5 轮它完全没印象;你说”上次那个文章”,它问”哪个文章”。
这不是 bug,是检索能力的问题。下面这套方案,用 SQLite + 本地嵌入模型,把语义搜索补上,让 AI 真正理解你在说什么、记住你说过的内容。
1. 记忆系统是怎么工作的
OpenClaw 的记忆由两层协作:存储引擎和调度器。
存储引擎叫 memory-core,用 SQLite 的 FTS5(全文搜索)加上 sqlite-vec(向量搜索)实现混合检索。你问问题的时候,它会同时做向量相似度搜索和关键词搜索,然后拼出最相关的记忆片段。
调度器叫 active-memory,是个可选插件。每次回复前它会自动调记忆引擎,不需要主模型自己去”想起来”要搜索。如果你没装这个插件,记忆搜索不会完全失效——主模型会根据上下文自己判断要不要调用搜索,但这样有时候会漏掉东西。
所有记忆存在本地工作区的 Markdown 文件里,没有网络、没有 API 费用、不怕隐私泄露。
2. 长期记忆存在哪
你的记忆存在两个地方:
核心记忆文件:~/.openclaw/workspace/MEMORY.md。这里放用户偏好、个人资料、重要决策这些永久性信息。每次对话默认加载。
每日对话日志:~/.openclaw/workspace/memory/ 目录下,以 YYYY-MM-DD.md 格式存储每天的对话摘要。默认加载今天和昨天的文件。
想管理记忆就直接编辑这些文件,改完之后运行:
openclaw memory index --force
重建索引就能生效。
3. 安装依赖
核心引擎 sqlite-vec 已经内置了,但本地嵌入模型需要手动装 node-llama-cpp:
npm install -g node-llama-cpp
装好之后,系统就能在本地跑 GGUF 格式的嵌入模型。
4. 下载嵌入模型
推荐用 embeddinggemma-300m,300MB 左右,768维向量,ARM64 上跑起来很轻松。
mkdir -p ~/.node-llama-cpp/models
wget -O ~/.node-llama-cpp/models/embeddinggemma-300M-Q8_0.gguf \
"https://www.modelscope.cn/models/unsloth/embeddinggemma-300m-GGUF/resolve/master/embeddinggemma-300M-Q8_0.gguf"
如果你网络不好,可以手动下载然后拷贝到对应路径。
5. 配置
编辑 ~/.openclaw/openclaw.json,加入 memorySearch 配置:
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "local",
"fallback": "none",
"local": {
"modelPath": "~/.node-llama-cpp/models/embeddinggemma-300M-Q8_0.gguf"
}
}
}
}
}
然后重建索引并验证:
openclaw memory index --force
openclaw memory status --deep
看到 Embeddings: ready 和 Vector dims: 768 就说明成功了。
6. 配好 active-memory 插件
active-memory 是内置插件,但默认没启用,需要手动加到白名单。
在 openclaw.json 的 plugins 里加入:
{
"plugins": {
"allowlist": ["active-memory"],
"entries": {
"active-memory": {
"enabled": true,
"config": {
"enabled": true,
"agents": ["main"],
"timeoutMs": 60000,
"setupGraceTimeoutMs": 30000
}
}
}
}
}
然后重启服务:
openclaw gateway restart
验证一下:运行 openclaw plugins list,状态应该是 enabled。在对话里输入 /active-memory status,提问后看到 Active Memory: on for this session. 就正常了。
7. 日常维护
-
搜索记忆: openclaw memory search "关键词" -
手动写入长期记忆:直接编辑 ~/.openclaw/workspace/MEMORY.md -
删掉过时内容后:运行 openclaw memory index --force -
把某段临时记忆升级为长期: openclaw memory promote --apply
总结
跑起来之后,你的 OpenClaw 就有了完全本地化的记忆系统:
-
SQLite + sqlite-vec:向量搜索加关键词检索 -
node-llama-cpp:跑本地嵌入模型 -
embeddinggemma-300m:把文本转成语义向量 -
active-memory:每次回复前自动注入相关记忆
整套方案零成本、完全离线、隐私安全。小龙虾用久了会越来越懂你,而不是每次都从零开始。
夜雨聆风