OpenClaw 无损上下文管理指南:Lossless-Claw + QMD 双剑合璧
在 AI Agent 的长期协作中,上下文管理是决定智能体能力上限的核心瓶颈。传统方案要么因窗口限制导致“失忆”,要么因全量传输造成 Token 成本爆炸。本文将基于 OpenClaw 文档与社区实践,详解 Lossless-Claw(LCM)与 QMD 的无损上下文组合方案,从原理、价值到可直接复制的实操配置,全部经过官方文档与经验验证。
一、为什么做:三大痛点
1.1 滑动窗口失忆
OpenClaw 内置的上下文压缩机制存在一个根本性缺陷:它是有损的(lossy)。当对话超过模型上限(如 8k/16k Token),早期信息直接被截断,AI 彻底“忘记”前期需求、代码细节和关键决策。内置压缩还会把数十轮对话压成一段几百 Token 的摘要,不保留原始消息,压缩后细节永远丢失。
1.2 Token 成本雪崩
长对话全量传输,每轮请求 Token 数指数级增长。经验显示,长对话场景下单次请求可能携带 8 万 + tokens,不仅响应延迟高达 45 秒,API 成本可达 $2.4/次。
1.3 缺乏可定制性
传统压缩规则硬编码在核心中,插件无法介入。近期 OpenClaw 版本开始支持可插拔上下文引擎,新增 ContextEngine 插槽与生命周期钩子,使插件可以在上下文生成、压缩、拼接以及子 Agent 管理的各个阶段介入。OpenClaw 文档支持 lossless-claw 插件——基于 Voltropy 团队 LCM 论文的无损上下文方案。
1.4 破局:Lossless-Claw + QMD
这套组合是 OpenClaw 社区中广泛采用的无损上下文方案,核心价值在于分工明确、互补增效:
- Lossless-Claw(LCM) :负责当前会话内存。用 DAG 分层摘要 + SQLite 全量持久化,对话再长也不丢原始消息,同时把活跃上下文压缩到模型窗口 75% 以内。
- QMD:负责跨会话硬盘记忆。本地语义搜索引擎,只提取最相关的 2-3 句话注入上下文,杜绝全库扫描的 Token 浪费。
LCM 管“当下对话不中断”,QMD 管“历史知识不丢失” ,两者结合实现“永久记忆 + 零成本膨胀”。
1.5 预期效果对比
| 指标 | 原生 OpenClaw | Lossless-Claw + QMD | 提升 |
|: —|: —|: —|: —|
| 上下文大小 | 5000+ Token(溢出) | 800-1200 Token | 削减 75%-85% |
| 历史追溯 | 无法恢复早期消息 | 100% 无损展开 | 永久记忆 |
| 响应速度 | 8-10 秒 | 1-2 秒 | 提速 80%+ |
| Token 成本 | 100 轮 ≈ 50 万 Token | 100 轮 ≈ 5 万 Token | 节省 90% |
| OOLONG 得分 | Claude Code 70.3 | lossless-claw 74.8 | 击败默认方案 |
在 OOLONG 长上下文推理基准测试中,相同模型(Claude Opus 4.6)搭配 lossless-claw 后得分从 70.3 提升至 74.8,Token 消耗降低 30%+。QMD 端 Token 削减达 60-97%(平均 95% 以上),响应速度提升 5-50 倍,成本降低 90-99%,精准度高达 93%。
二、是什么:双引擎架构解析
2.1 Lossless-Claw:DAG 无损上下文管理
Lossless Claw(LCM)是一个为 OpenClaw 开发的无损上下文管理插件,基于 DAG(有向无向图)结构的摘要系统替代 OpenClaw 内置的滑动窗口压缩机制。它不在上下文爆满后临时补救,而是持续在后台异步处理历史消息。首先将所有原始消息完整写入 SQLite 数据库,不主动丢弃任何内容;随后将较旧的消息分块,调用 LLM 生成摘要;这些摘要被组织成 DAG 结构——底层节点保留时序细节,上层节点逐步浓缩为高层级摘要,既能控制上下文体积,又不会真正失去原始信息。
LCM 的核心架构包含两大层次:
- 持久化存储:所有对话消息、工具调用记录、文件内容均存入 SQLite 数据库,永不主动删除,作为不可变的原始副本。
- DAG 摘要层:超出最新 N 条消息后,异步生成 Leaf 层级摘要;同层摘要积累到阈值后向上凝练,形成层级化 DAG 结构。每个摘要都链接回它的源消息——这就是“无损”的含义。
LCM 通过五个关键操作完成工作:将每条消息持久化到 SQLite 数据库;将旧消息分块摘要;随着摘要积累,进一步浓缩为更高层级节点,形成 DAG;每轮通过组合摘要 + 近期原始消息来组装上下文;并提供 lcm_grep、lcm_describe、lcm_expand 等工具,让 Agent 可以搜索和回忆已压缩历史中的细节。
OpenClaw 核心开发者 Josh Lehman 在亲身测试后的评价:“对话感觉永远不会丢失信息(因为某种程度上确实不会),始终在 30-100K Token 范围内运行,零维护。”
2.2 QMD:本地语义搜索引擎
QMD(Quantum Memory Database)是由 GitHub 用户 tobi 开发的本地语义搜索引擎。它的核心理念是:不要把整个文件塞给 AI,而是先用本地搜索找到最相关的片段(通常只有 2-3 句话),再把这些精准内容传给 AI。
QMD 采用三层混合检索机制:
- BM25 全文搜索:精准匹配端口、变量名、文件名等精确术语;
- 向量语义搜索:理解概念关联(如“服务器配置”与“部署网关”的同义表述);
- LLM 重排序:轻量模型二次筛选,确保最相关片段优先。
QMD 的核心特性:完全本地运行,所有模型、数据、索引都不上云;混合搜索(BM25 + 向量语义 + LLM 重排序);不消耗任何 API 配额,自带模型;支持 MCP 协议,专为 AI 工作流设计。
OpenClaw 文档将其列为支持的 memory backend,定位为 Local-first sidecar,具备重排序(reranking)、查询扩展(query expansion)以及索引工作区外目录的能力。
2.3 协同工作流
- 写入:LCM 将每一轮对话、每一次工具调用、每一个决策都完整写入 SQLite 数据库,并异步构建 DAG 摘要层,确保信息永不丢失。
- 检索:QMD 通过向量检索从长期记忆中精准召回最相关的片段,避免把整个历史上下文塞给模型。
- 巩固:配合 OpenClaw 内置的 Dreaming 梦境系统(模拟人类睡眠的记忆巩固过程),三者形成“写入 → 巩固 → 检索”的完整记忆闭环。
三、怎么做:完整配置指南
⚠️ 前置条件:OpenClaw 版本需 ≥ 2026.3.7(lossless-claw 要求)且 ≥ 2026.2.2(QMD 要求)。用
openclaw --version检查版本。
3.1 安装 Lossless-Claw
第一步:检查前置条件
- 已安装支持插件上下文引擎的 OpenClaw(≥ 2026.3.7);
- Node.js 版本为 22 或更高;
- 已在 OpenClaw 中配置好可用于摘要生成的 LLM 提供方;
- 强烈建议 Node 运行环境支持 SQLite FTS5 编译选项。
第二步:安装插件
使用官方插件安装命令:
1 | openclaw plugins install @martian-engineering/lossless-claw |
该命令会下载插件、登记配置,并在系统中启用 lossless-claw。OpenClaw 会优先从 ClawHub 拉取,自动回退到 npm。
第三步:将 lossless-claw 设为默认上下文引擎
编辑配置文件 ~/.openclaw/openclaw.json,确保 contextEngine 指向 lossless-claw:
1 | { |
第四步:调整进阶参数(可选)
在 openclaw.json 的 plugins.entries 中添加 lossless-claw 的详细配置:
1 | { |
参数说明:
freshTailCount: 32:保护最近 32 条消息不被压缩,保持短期上下文连贯。contextThreshold: 0.75:当上下文占用达到 75% 时启动压缩流程,为模型回复预留空间。incrementalMaxDepth: -1:允许摘要树无限制扩展,让长期记忆自然增长。summaryModel:将压缩摘要绑定到指定模型(本配置使用 openai/gpt-5.4-mini)。
第五步:重启服务
1 | openclaw gateway restart |
3.2 安装 QMD
第一步:安装 QMD CLI
方式一(推荐,使用 npm):
1 | npm i -g @tobilu/qmd |
方式二(使用 Bun,速度更快):
1 | # 先装 Bun |
第二步:首次运行自动下载模型
首次运行 QMD 时,会自动下载默认模型文件,通常包括 embeddinggemma 和 query-expansion 相关 GGUF 模型,整体约 1.5GB 左右。首次启动会比后续运行慢,并且需要等待模型下载完毕后才能进入正常索引。
⚠️ 常见问题:模型文件名不匹配
QMD 运行时可能因文件名大小写问题找不到模型,需手动创建软链接:
1 | cd ~/.cache/qmd/models |
第三步:配置 OpenClaw 使用 QMD
编辑 ~/.openclaw/openclaw.json,在 memory 段添加 QMD 配置:
1 | { |
参数说明:
backend: "qmd":启用 QMD 记忆后端。searchMode: "query":混合搜索(语义 + 关键词,最准)。可选search(纯关键词,最快)或vsearch(纯语义搜索)。paths:配置需要索引的外部路径,支持多个目录。maxResults: 6:最大返回结果数,越多越耗 Token。scope.default: "deny"+rules:默认关闭记忆,仅允许私聊使用。
第四步:初始化 QMD 索引并生成向量嵌入
1 | # 首次索引(自动扫描 paths 中配置的路径) |
💡 建议定期运行
qmd embed(如每天一次)以确保新增文档可被向量检索。
3.3 验证配置
验证 Lossless-Claw:
1 | # 检查插件列表 |
验证 QMD:
1 | # 查看 QMD 版本 |
联合验证:
1 | openclaw memory status |
若输出正常,说明两套系统均已就绪。也可以运行 openclaw memory search "测试关键词" 测试搜索功能。
3.4 验证清单
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| 插件安装 | openclaw plugins list |
显示 lossless-claw [installed] |
| 引擎配置 | openclaw config get plugins.slots.contextEngine |
返回 “lossless-claw” |
| LCM 数据库 | ls ~/.openclaw/lcm.db |
文件存在 |
| LCM 运行状态 | `openclaw logs –limit 50 | grep lossless` |
| LCM 数据统计 | sqlite3 ~/.openclaw/lcm.db "SELECT COUNT(*) FROM summaries; SELECT COUNT(*) FROM messages;" |
摘要数和消息数 |
| QMD 索引 | qmd status |
显示 indexed documents 数量 |
| QMD 向量嵌入 | qmd embed |
显示 Embedded N chunks from M documents |
| QMD 搜索测试 | qmd search "关键词" -c blogs -n 3 |
返回相关结果 |
| 内存搜索 | memory_search 工具 |
返回相关结果 |
示例验证结果(2026-04-10):
1 | # LCM 状态 |
四、高级优化与故障排除
4.1 黄金参数调优
| 场景 | freshTailCount | contextThreshold | maxResults |
|---|---|---|---|
| 代码调试/编程 | 40 | 0.7 | 3 |
| 文档分析 | 40-64 | 0.7 | 4 |
| 轻量对话/日常聊天 | 24 | 0.8 | 4 |
4.2 成本优化策略
- 摘要模型降级:使用
claude-haiku-4-5或本地ollama/llama-3:8b执行摘要,主对话保持高级模型。 - 排除噪音会话:通过
ignoreSessionPatterns过滤 cron job、心跳检测等无状态会话。
4.3 常见问题排查
Q1:配置后 AI 仍“失忆”
1 | # 检查 contextEngine 是否指向 lossless-claw |
Q2:Token 消耗未降低
1 | # 检查 freshTailCount 是否过大 |
Q3:QMD 搜索超时或无结果
1 | // 调整 openclaw.json 中的超时设置 |
若完全无结果,检查索引是否已生成:qmd embed。
Q4:QMD 模型文件未找到
1 | # 检查模型文件 |
Q5:SQLite 权限错误(Linux/Docker)
1 | sudo chmod -R 775 ~/.openclaw/data |
五、总结
Lossless-Claw + QMD 是 OpenClaw 社区中广泛使用的无损上下文组合方案,可以有效缓解“失忆、成本、精度”三大痛点。通过 LCM 的 DAG 无损压缩与 QMD 的本地精准检索,目标是实现永久记忆 + Token 膨胀可控 + 更平稳的响应时间。
两者分工明确、互补增效:LCM 负责“当下对话不中断”,QMD 负责“历史知识不丢失”,配合 OpenClaw 内置的 Dreaming 梦境系统,形成“写入 → 巩固 → 检索”的完整记忆闭环。在一些测试中表明:在一些长上下文场景中,得分和成本都有明显改善,但实际结果仍依赖具体模型、主题和配置。
本文中的配置、命令和参数基于 OpenClaw、LCM、QMD 的官方文档或社区资料整理,可作为可复制的参考。按此配置,你的 OpenClaw 能更好地支持长期对话与历史记忆场景。
官方参考
- Lossless-Claw GitHub:https://github.com/Martian-Engineering/lossless-claw
- QMD GitHub:https://github.com/tobi/qmd
- OpenClaw 官方文档:https://docs.openclaw.ai
- OpenClaw Context Engine:https://docs.openclaw.ai/concepts/context-engine
- OpenClaw Memory Overview:https://docs.openclaw.ai/concepts/memory