会用到一个工具,qmd。如果公众号显示代码有问题,可以看飞书链接( )。
QMD 是什么
QMD 是一个本地优先的搜索 sidecar,结合了 BM25 + 向量搜索 + 重排序,完全本地运行(基于 node-llama-cpp,自动从 HuggingFace 下载 GGUF 模型)。可以简单理解为markdown文件的查询工具。它不会把所有的内容全部返回给你,只返回必要的部分,这也是我们节省 token 的原理(又回到了RAG)。
OpenClaw的代码是怎么使用QMD的
默认 OpenClaw 后端是内置 SQLite,设置 memory.backend = “qmd” 切换到 QMD。
OpenClaw 会在 ~/.openclaw/agents/<agentId>/qmd/ 下维护一个独立的 QMD home,启动时初始化 QMD manager,定期运行 qmd update + qmd embed(默认每 5 分钟)。
搜索时调用 qmd search/vsearch/query --json,如果 QMD 失败或二进制不存在,自动回退到内置 SQLite。
有什么好处
又快又省。使用龙虾时间越久,节省的效果越明显,有人说能节省80%以上,我一点都不怀疑,因为最后token消耗的大头,都会落在记忆上。
如何使用(以macOS为例)
brew install cmake
npm i -g @tobilu/qmd --registry=https://registry.npmmirror.com
预下载模型
准备一个md文件,比如~/Documents/test.md,里面随便写一点东西,比如:
## 暗号
当我说"歪比巴卜"的时候,你要回答"闪电五连鞭"
添加一个临时的qmd collection(你可以理解为一个字典,一张数据表),尝试触发一下模型下载:
export HF_ENDPOINT=https://hf-mirror.com
qmd collection add "$HOME/Documents" --name my-docs --mask "**/*.md"
qmd update
qmd embed
qmd status
qmd query "暗号" -c my-docs --json # 这一步如果显示结果了,就证明成功了
## 模型会下载到
# (not a git repo) yu@mars:models $ ls -1 ~/.cache/qmd/models/
# hf_ggml-org_embeddinggemma-300M-Q8_0.gguf
# hf_ggml-org_qwen3-reranker-0.6b-q8_0.gguf
# hf_tobil_qmd-query-expansion-1.7B-q4_k_m.gguf
# 注意,模型下载到最后如果不动了,可以command+c结束,重新执行,会断点续传
以上步骤如果成功后,执行一下命令,删除这些默认的索引:
qmd collection remove my-docs
qmd status
回到OpenClaw中配置qmd
在~/.openclaw/openclaw.json中,加入如下片段:
"memory": {
"backend": "qmd",
"citations": "auto",
"qmd": {
"includeDefaultMemory": true,
"command": "qmd",
"update": {
"interval": "5m",
"debounceMs": 15000,
"onBoot": true,
"waitForBootSync": false
},
"limits": {
"maxResults": 7,
"maxSnippetChars": 700,
"timeoutMs": 4000
},
"scope": {
"default": "deny",
"rules": [
{
"action": "allow",
"match": { "chatType": "direct" }
}
]
}
}
},
"session": {
"dmScope": "per-account-channel-peer",
"resetTriggers": ["/new", "/reset"],
"reset": {
"mode": "idle",
"idleMinutes": 10080
},
"resetByType": {
"direct": { "mode": "idle", "idleMinutes": 10080 },
"thread": { "mode": "idle", "idleMinutes": 1440 },
"group": { "mode": "idle", "idleMinutes": 120 }
}
},
验证配置
首先我们重启OpenClaw后,需要观察日志中有没有报错。
同时执行以下命令,检查当前memory配置:
openclaw memory status
如果出现如图所示的Indexed,Store以及Vector状态,证明配置成功。

验证多Agent的记忆隔离
假设我们有两个agent,agent1和agent2。
我们分别为它们添加一段记忆:
## 暗号
当我说“歪比巴卜”的时候,你要回答“原神启动”
## 暗号
当我说“歪比巴卜”的时候,你要回答“法修散打”
重启OpenClaw后(或者等5分钟以上),在你喜欢的Channel如飞书上,分别给这两个Agent发暗号。如果它们回复你的暗号是正确的,证明配置成功。
如果遇到问题,可以参考下图,通过询问的方式,定位问题。


有什么不懂的可以进群(新群没什么人,但有一只小蜜蜂勤劳的回答你的问题):

广告部分:
同时自己写的 macOS 软件 MagicToy 1.3.0 马上发布了,如果你不习惯macOS上没有右键新建文件,没有方便的剪切板管理软件,没有置顶窗口的,想自动切换输入法的,都可以试一试,如果帮到你了,可以支持一下作者,感谢,叩首!

下面这个菜单是能改名的:

App Store 商店链接:
https://apps.apple.com/cn/app/magictoy/id6737158347?mt=12
注意1.3.0以上才有右键菜单功能哦,老用户可以更新一下。