[特殊字符] 当 AI 拥有「过目不忘」:OpenClaw 记忆系统完全指南

张开发
2026/5/9 20:25:59 15 分钟阅读

分享文章

[特殊字符] 当 AI 拥有「过目不忘」:OpenClaw 记忆系统完全指南
从「上下文爆炸」到「精准召回」——一场 AI 记忆的范式革命 先说结论维度传统方式QMDToken 削减0%全文塞入60-97%平均95%响应速度5-120秒1-3秒快5-50倍精准度~59%93%API成本$0.05-8/次降低90-99%一、背景AI 记忆的「阿喀琉斯之踵」1.1 传统记忆系统的困境当你让 AI「记住一些事情」时业界通常做法是传统方案把整个 MEMORY.md 塞进上下文用户说帮我写个函数AI 会收到一个包含 5000 tokens 的 MEMORY.md 文件里面记录了●五哥喜欢简洁的回答●老家在江西赣州石城●项目AXXX●项目BYYY●2024年1月的讨论ZZZ●...与当前需求无关的噪音●当前需求帮我写个函数← 关键信息在这里结果90% 内容与当前问题无关AI 被噪音淹没三大痛点上下文膨胀Token 随会话指数增长成本爆炸10K tokens → $0.5100K tokens → $6-8精准度下降噪音越多AI 越容易「跑偏」1.2 OpenClaw 的记忆演进OpenClaw 的记忆系统经历了三代进化时代方案特点第一代纯文件存储Markdown 文件简单读取无索引第二代SQLite向量向量语义搜索需要 Ollama第三代QMD混合引擎BM25 向量 重排序本地 LLM 重排序完全离线二、lossless-claw会话级「无损记忆」2.1 核心定位lossless-claw解决的是「单次会话内的长对话连续性」问题。场景和 AI 讨论 3 小时的代码优化项目●10:00 —— 讨论了 Redis 缓存策略●10:30 —— 讨论了数据库索引优化●11:00 —— 讨论了 API 速率限制●11:30 —— 讨论了负载均衡方案●12:00 —— 我们最初定的缓存策略是什么❌ 没有 lossless-clawAI 忘得一干二净✅ 有 lossless-claw可以通过 lcm_expand 回溯原始对话2.2 技术原理DAG 摘要图谱lossless-claw 的核心创新是有向无环图DAG摘要Step 1: 全量存储●所有消息原始存储到 SQLite永不删除Step 2: 分层摘要●每8条消息压缩成1个叶子节点摘要●例如讨论了 Redis 缓存定了 1 小时 TTLStep 3: 构建 DAG●根摘要汇总所有叶子摘要●叶子摘要保留原始消息指针可回溯2.3 动态组装「工作记忆」每次对话时lossless-claw 精心组装上下文发送给 AI 的上下文包含三个部分[系统提示]- 系统级指令[DAG 摘要]- 提供宏观对话脉络●今天讨论了●Redis 缓存策略 (TTL1h)●数据库索引优化●API 速率限制 (100req/s)[最近 N 条原始消息]- 保证当前任务细节●User: 帮我优化缓存策略AI: 建议使用 Redis设置 TTL...总 Token: 30K-100K可控2.4 按需回溯工具AI 可以主动「回忆」工具功能lcm_grep在历史中搜索关键词lcm_describe查看某个摘要节点详情lcm_expand展开摘要回溯原始消息三、QMD跨会话「知识沉淀」3.1 核心定位QMD (Query Markup Documents)解决的是「跨会话的知识库」问题。场景三个月前讨论的项目方案新会话中需要调用●Day 1: 讨论项目方案●AI: 我们确定了 API 路由/usersGET/POST 方法...●Day 90: 写前端代码●User: 帮我写个调用用户 API 的 fetch❌ 没有 QMD: AI: 抱歉我不知道 API 格式✅ 有 QMD: AI: 根据之前保存的规范API 是...3.2 技术原理三层混合检索QMD 是本文重点它的架构非常精妙查询流程Query Expansion查询扩展●输入: authentication●LLM 生成变体: [user login process, authentication flow]并行检索●原始查询 扩展查询 同时在 BM25 和向量索引中搜索●多个搜索结果并行获取RRF 融合 (Reciprocal Rank Fusion)●score Σ(1 / (k rank))k 60●加上排名奖励: #1 → 0.05, #2-3 → 0.02Top 30 候选 → LLM 重排序●Prompt: Does this document answer the query?●Yes/No logprob confidencePosition-Aware Blend位置感知融合●Rank 1-3: 75% RRF 25% Reranker ← 保留精确匹配●Rank 4-10: 60% RRF 40% Reranker●Rank 11: 40% RRF 60% Reranker ← 信任重排序3.3 核心技术细节3.3.1 Query Expansion查询扩展输入: authentication↓LLM (1.7B GGUF 模型) 处理↓输出: [user login process, // LLM 生成的变体authentication flow // 语义等价变体]3.3.2 智能分块Smart ChunkingQMD 不是粗暴地按 token 切分而是语义感知分块分块边界得分规则●# Heading → 100 分 (最强边界)●## Heading → 90 分●代码块 → 80 分●--- 分割线 → 60 分●空白行 → 20 分●普通换行 → 1 分 (最弱)目标~900 tokens搜索 200-token 窗口内最高得分的边界代码块保护代码块内的内容永不被分割3.3.3 本地 LLM 模型QMD 依赖三个本地 GGUF 模型自动下载模型用途大小embeddinggemma-300M-Q8_0向量化~300MBqwen3-reranker-0.6b-q8_0重排序~640MBqmd-query-expansion-1.7B-q4_k_m查询扩展~1.1GB总计约 2GB完全本地运行无需联网首次下载后使用Qwen3-Embeding模型对中文更友好# Use Qwen3-Embedding-0.6B for better multilingual (CJK) support export QMD_EMBED_MODELhf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf # After changing the model, re-embed all collections: qmd embed -f3.4 实测数据对比场景一长期会话记忆查询指标传统方式QMD提升上下文大小80,000 tokens4,000 tokens削减 95%响应时间45秒超时失败2秒快 20 倍API 成本$2.4$0.01降低 200 倍成功率失败成功✅场景二跨文件知识检索指标传统方式QMD提升上下文大小15,000 tokens1,500 tokens削减 90%响应时间25-30秒3秒快 10 倍稳定性容易触发 rate limit从不卡死✅场景三日常对话指标传统方式QMD提升上下文大小5,000 tokens250 tokens削减 95%响应时间8-10秒1秒快 8-10 倍3.5 精准度分析精准度对比●混合搜索 (BM25 向量 重排序):93%████████████████████░░●纯向量搜索:59%██████████░░░░░░░为什么混合搜索更强●BM25: 精确匹配关键词如代码、ID、术语●向量: 语义理解登录 ≈ authentication●重排序: LLM 二次把关筛选真正相关的结果四、两者联合1 1 24.1 职责互补维度lossless-clawQMD核心目标会话内长对话连续性跨会话知识沉淀数据形态原始消息 DAG 摘要Markdown 向量索引生命周期会话级永久跨会话召回方式主动回溯 (lcm_expand)自动语义搜索本质「过程」记忆「结果」记忆4.2 联合 workflow完整工作流Step 1: 对话进行中 (lossless-claw 工作)●User ↔ AI ↔ User ↔ AI ...●原始消息存入 SQLite 构建 DAG 摘要Step 2: 知识沉淀 (QMD 介入)●把确定的 API 规范保存下来●AI → 生成 API-规范.md → QMD 索引Step 3: 新会话开始●QMD: 根据之前保存的规范API 是... → 自动注入● lossless-claw: 管理当前新会话的上下文五、安装指南5.1 前提条件✅ OpenClaw ≥ 2026.2.2 ✅ Bun 或 Node.js ≥ 22 ✅ SQLite ≥ 3.40.0 (带扩展)5.2 安装 Lossless-claw# 安装Lossless-claw openclaw plugins install martian-engineering/lossless-claw # 配置 openclaw5.3 安装步骤# 1. 安装 QMD (推荐 Bun) bun install -g tobilu/qmd # or npm install -g tobilu/qmd # 2. 安装支持扩展的 SQLite # macOS brew install sqlite # Linux sudo apt install sqlite3 # Windows: 访问 SQLite 官网下载页面 https://www.sqlite.org/download.html # 下载 Precompiled Binaries for Windows 中的 sqlite-tools-win-x64-*.zip # 解压到任意目录例如 C:\sqlite # 将该目录添加到系统 PATH 环境变量 # 3. 验证 sqlite3 --version qmd --version # 4. 配置 OpenClaw # 在 openclaw.json 中添加: { memory: { backend: qmd, qmd: { limits: { timeoutMs: 8000 } } } } # 5. 重启 openclaw gateway restart六、结论与建议6.1 何时开启 QMD场景推荐会话历史超过 10K tokens 必须经常遇到响应慢/卡死 必须单次请求成本超过 $1 必须日常简单对话 可选6.2 最终建议最佳实践路径●当前配置 (够用):●lossless-claw (会话级) Builtin SQLite (基础搜索)●升级配置 (更强):●lossless-claw (会话级) QMD (混合搜索)● 过目不忘 精准知识召回 参考资料QMD GitHubOpenClaw 官方文档 - MemoryLossless GitHub

更多文章