1. OpenClaw 长会话为什么又慢又烧钱如果你用 OpenClaw 跑过一周以上的长期会话大概率遇到过这种情况问一句「我们上个月讨论的那个方案最后怎么定的」它先愣十几秒然后要么超时失败要么吐出一堆和问题无关的历史内容账单还悄悄涨上去了。这不是模型不行而是记忆检索方式出了问题。OpenClaw 默认的记忆后端会把整个 MEMORY.md 或历史会话文件直接塞进上下文。一个运行一周的会话历史轻松超过 1 万 token跑一个月可能到 10 万 token 级别。大模型的推理时间和输入 token 数量基本成正比上下文从 2000 token 涨到 50000 token响应时间会从 5 秒级跳到 1-2 分钟而且长上下文里 90% 的内容和当前问题无关模型容易被噪音干扰精准度反而下降。QMDQuantum Memory Database是 Shopify 联合创始人 Tobi Lütke 开发的本地语义搜索引擎核心思路很简单不要把整个文件塞给 AI而是先用本地搜索找到最相关的 2-3 句话再把这些精准片段传给模型。它基于 TypeScript Bun 开发用 node-llama-cpp 跑本地 GGUF 模型三层混合检索BM25 全文 向量语义 LLM 重排序完全离线运行不消耗任何 API 配额。实测下来启用 QMD 后 token 削减普遍在 90% 以上响应速度提升 5-50 倍单次请求成本能降一到两个数量级。这篇就按「装 QMD → 配 OpenClaw → 验证生效 → 排障」的顺序把可复制的配置和踩坑点讲清楚。适合已经在用 OpenClaw、会话历史超过 1 万 token、或者被慢响应和超时困扰的人。2. 装 QMD 之前OpenClaw 版本与前置检查QMD 作为 OpenClaw 的记忆后端 Skill对版本有硬性要求OpenClaw 需要 ≥ 2026.2.2。低于这个版本配置文件里的memory.backend: qmd不会被识别重启后仍然走内置 SQLite你会以为配了但实际没生效。先确认版本openclaw --version如果输出低于 2026.2.2先升级到最新版再往下走。升级方式取决于你的安装渠道用官方安装脚本或包管理器更新即可这里不展开。第二个前置是 SQLite 需要支持 vector 扩展。QMD 的向量检索依赖 SQLite 的 vector 能力系统自带的 SQLite 版本太老会直接报错。验证命令sqlite3 --version版本号需要 ≥ 3.40.0。macOS 用户如果版本偏低用brew install sqlite装新版Ubuntu/Debian 用sudo apt update sudo apt install sqlite3Windows 去 SQLite 官网下载sqlite-tools-win-x64-*.zip解压到比如C:\sqlite然后把该目录加进系统 PATH重启终端再验证。注意Windows 上加 PATH 后一定要重开终端旧终端不会刷新环境变量这是最常见的「明明装了却找不到 sqlite3」的原因。3. 安装 QMD 与 Skill 配置骨架3.1 安装 QMD 本体推荐用 Bun安装速度快bun install -g tobilu/qmd没有 Bun 就用 npmnpm install -g tobilu/qmd不想全局安装也可以直接跑npx tobilu/qmd --help # 或 bunx tobilu/qmd --help装完验证qmd --version能打印版本号就说明本体就绪。首次运行会下载本地模型GGUF 格式几百 MB这一步需要联网之后完全离线。3.2 OpenClaw 的 settings.json / openclaw.json 片段OpenClaw 的配置文件位置按系统和版本略有差异macOS / Linux~/.openclaw/openclaw.jsonWindowsC:\Users\你的用户名\.openclaw\openclaw.json在配置文件里加入或修改 memory 段{ memory: { backend: qmd, qmd: { limits: { timeoutMs: 8000 } } } }两个关键参数参数作用建议值backend切换记忆后端为 QMDqmdtimeoutMs单次检索超时时间8000默认 4000 偏短timeoutMs默认 4 秒在文件多、首次建索引的场景下容易超时调到 8000 更稳。如果你的知识库文件特别多几百个 md可以再往上加到 12000但别无限拉大否则真出问题时你会等很久才看到回退。3.3 Skill 配置骨架如果你是通过 Skill 机制挂载 QMDSkill 描述文件通常放在 OpenClaw 的 skills 目录下骨架大致如下重点是声明它作为 memory backend 的检索入口{ name: qmd-memory, version: 1.0.0, description: 本地语义搜索引擎作为 OpenClaw 记忆后端, entry: qmd, type: memory-backend, config: { indexPaths: [ ~/.openclaw/memory, ~/notes ], topK: 3, hybrid: true } }indexPaths指向你要索引的 Markdown / 文本目录topK控制每次返回的片段数2-3 条通常够用hybrid: true开启 BM25 向量 重排序的混合检索。纯语义检索实测精准度只有 59% 左右混合检索能到 93%所以这个开关别关。4. 重启、验证与成功结果确认配置改完必须重启 OpenClaw Gateway 才生效openclaw gateway restart重启后 OpenClaw 会自动用 QMD 做记忆检索。如果 QMD 出问题它会自动回退到内置 SQLite不会让整个服务挂掉这点设计得比较稳。验证是否真的切过去了跟日志openclaw logs --follow看到类似Using QMD memory backend的日志行说明配置成功。如果还是Using SQLite memory backend说明配置没被读到回到第 5 节排查。进一步做一次实际检索验证。先手动建索引确认 QMD 能扫到你的文件qmd index ~/.openclaw/memory然后跑一次查询qmd search 项目最终采用的方案 --top 3正常输出应该是 2-3 条最相关的片段每条带来源文件和相似度分数而不是把整个文件倒出来。如果这一步能出精准片段OpenClaw 里的检索就基本没问题了。成功后的体感变化问历史相关问题时响应从几十秒降到 1-3 秒长会话不再因为上下文过长而超时单次请求的 token 消耗肉眼可见地下降。你可以对比启用前后同一个问题的响应时间和日志里的 token 数差距通常很明显。5. 本篇常见错排查报错一qmd: command not found全局安装后 PATH 没生效。Bun 的全局 bin 目录通常在~/.bun/binnpm 在 npm 的 global prefix 下。确认该目录在 PATH 里或者直接用bunx tobilu/qmd绕过。报错二SQLite vector extension not available系统 SQLite 版本低于 3.40.0或者装的是不带扩展的精简版。按第 2 节重装 SQLite装完sqlite3 --version确认版本再重启 OpenClaw。报错三日志里仍是Using SQLite memory backend三种可能OpenClaw 版本低于 2026.2.2配置文件路径不对Windows 用户容易把文件放到错误盘符JSON 格式有语法错误导致整段被忽略。用openclaw --version和 JSON 校验工具各查一遍。报错四检索超时频繁回退timeoutMs太小或索引文件过多。先把timeoutMs调到 8000-12000再检查indexPaths是否误包含了超大目录比如整个 home 目录把范围收窄到真正的记忆和笔记目录。报错五首次搜索特别慢首次运行要下载 GGUF 模型并建索引慢是正常的。模型下载完成后后续检索都在本地1-3 秒内出结果。如果每次都慢检查是不是每次都在重建索引。报错六想临时关掉 QMD把配置改回backend: sqlite重启 Gateway 即可。要彻底卸载再跑bun uninstall -g tobilu/qmd或npm uninstall -g tobilu/qmd。6. 把 QMD 接进你的 OpenClaw 工作流QMD 解决的是「记忆检索」这一层的效率问题它不替代模型本身也不替代你的编辑器只是让每次请求带上的上下文从「整本历史」变成「最相关的几句话」。落地顺序建议是先确认 OpenClaw 版本和 SQLite 版本达标再装 QMD 本体然后改openclaw.json的 memory 段重启后跟日志确认后端切换成功最后用qmd search手动验证检索质量。如果你还在选模型和配 Key 的阶段可以先用模型对话页面把常用模型跑通确认调用链路正常等进入长期编码或 Agent 场景、会话历史开始膨胀时再按这篇把 QMD 挂上。接入相关的 Key 管理和文档入口在这里模型对话https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel_chatAPI Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdocCoding Plan长期编码 / Agent 场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_planAPI 端点https://taotoken.net/api一个实用技巧QMD 的indexPaths不要贪多先把~/.openclaw/memory这一个目录跑顺确认检索质量后再逐步加笔记目录。索引范围越大首次建索引越慢超时风险也越高。另外topK保持 3 左右就够返回片段太多等于又把上下文撑大了反而抵消了 QMD 的收益。