找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4647

积分

0

好友

614

主题
发表于 前天 01:50 | 查看: 23| 回复: 0

你是否也有过这样的困扰?和 OpenClaw 聊了几个小时后,因为上下文超限,之前的对话被无情截断。重启会话时,AI 助手仿佛得了“健忘症”,完全不记得之前做过的任何决定。散落在各处的技术笔记想用的时候找不到,多设备切换后记忆更是全盘丢失。

OpenClaw 作为一个灵活的 AI Agent 框架,其生态已经发展出了多种记忆方案,分别针对不同的痛点。本文将为你理清脉络,帮助你在一分钟内挑选出最适合自己的那一套。

记忆到底要解决什么问题?

我们首先把需求拆解清楚。AI 的记忆问题,实际上可以分为两个完全不同的维度:

维度 问题 解决思路
单会话内记忆 对话太长超出模型上下文窗口,直接截断会导致信息丢失。 压缩旧消息,将上下文保持在窗口容量内,同时尽量不丢失核心信息。
跨会话记忆 重启会话或更换设备后,AI 完全忘记了之前聊过什么、做过什么决定。 将对话历史持久化存储,在需要时自动召回相关内容。
外部知识库 个人的笔记、技术文档需要能被 AI 搜索到,并融入到对话中。 为文档建立索引,支持混合搜索和精准召回。

不同的方案侧重点各异,下面我们将逐一介绍,并附上详细的配置步骤。


方案一:lossless-claw —— 单会话无损压缩

项目地址https://github.com/Martian-Engineering/lossless-claw

一句话定位:替换 OpenClaw 原生的滑动窗口截断机制,通过 DAG 分层压缩,实现原始信息点滴不丢

核心特点

  • LCM(无损上下文管理)算法:旧消息不会被直接删除,而是被分层压缩成摘要,形成一个有向无环图(DAG)。
  • 原始信息永久保留:所有原始消息都存储在 SQLite 中,当 Agent 需要时,可以使用 lcm_greplcm_expand 命令搜索并展开以找回细节。
  • 开箱即用:安装后只需替换 contextEngine 插槽,即可自动工作,用户无需额外干预。

安装配置步骤

# 1. 通过 OpenClaw 插件安装
openclaw plugins install @martian-engineering/lossless-claw

# 如果你是从源码运行 OpenClaw
pnpm openclaw plugins install @martian-engineering/lossless-claw

安装命令会自动配置插槽。如果你需要手动配置,请编辑 ~/.openclaw/openclaw.json 文件:

{
  “plugins”: {
    “slots”: {
      “contextEngine”: “lossless-claw”
    }
  }
}

推荐配置(通过环境变量设置):

# 添加到你的 ~/.profile 或 ~/.zshrc
export LCM_FRESH_TAIL_COUNT=32
export LCM_INCREMENTAL_MAX_DEPTH=-1
export LCM_CONTEXT_THRESHOLD=0.75
参数 推荐值 说明
LCM_FRESH_TAIL_COUNT 32 最近 N 条消息不压缩,保留原始内容。
LCM_INCREMENTAL_MAX_DEPTH -1 -1 表示进行无限制深度的分层压缩。
LCM_CONTEXT_THRESHOLD 0.75 当上下文占用达到窗口容量的 75% 时,触发压缩机制。

重启 OpenClaw 使配置生效。你可以通过以下命令验证:

openclaw plugins list
# 应该看到 lossless-claw 已启用

适合你,如果:

  • ✅ 你经常进行长对话,希望即使超出上下文窗口也不会丢失原始信息。
  • ✅ 你只需要解决单会话内的压缩问题,跨会话重置依赖 OpenClaw 的原生机制即可。
  • ✅ 偏好纯本地方案,不需要启动额外的服务。

方案二:qmd —— OpenClaw 原生混合搜索记忆后端

项目地址https://github.com/tobi/qmd
官方文档https://docs.openclaw.ai/concepts/memory#qmd-backend-experimental

一句话定位:OpenClaw 原生集成的本地混合搜索后端,用于替换内置的 SQLite 索引器,提供 BM25 + 向量检索 + 重排序的三重混合搜索能力。

核心特点

  • 原生集成:作为 OpenClaw 的 memory backend 直接集成,无需单独配置 MCP 服务。
  • 全栈本地:三个 GGUF 模型(嵌入模型、重排序模型、查询扩展模型)全部在本地运行,不依赖任何云服务。
  • 三重混合搜索:结合 BM25 关键词匹配、向量语义搜索和 LLM 重排序,比单一的搜索方式准确度更高。
  • 自动降级:当 qmd 出现故障时,会自动降级到内置的 SQLite 索引器,确保记忆工具始终可用。

前置要求

# 1. 安装支持扩展的 SQLite(macOS)
brew install sqlite

# 2. 安装 Bun(如果还没有)
curl -fsSL https://bun.sh/install | bash

安装 qmd

# 全局安装 qmd(注意:使用 GitHub 仓库地址,不是 npm 包)
bun install -g https://github.com/tobi/qmd

# 或者直接下载 release
# https://github.com/tobi/qmd/releases

在 OpenClaw 中配置

编辑 ~/.openclaw/openclaw.json 文件,添加以下配置:

{
  “agents”: {
    “defaults”: {
      “memory”: {
        “backend”: “qmd”,
        “citations”: “auto”,
        “qmd”: {
          “includeDefaultMemory”: true,
          “update”: {
            “interval”: “5m”,
            “debounceMs”: 15000
          },
          “limits”: {
            “maxResults”: 6,
            “timeoutMs”: 4000
          },
          “scope”: {
            “default”: “deny”,
            “rules”: [
              { “action”: “allow”, “match”: { “chatType”: “direct” } }
            ]
          },
          “paths”: [
            { “name”: “notes”, “path”: “~/notes”, “pattern”: “**/*.md” },
            { “name”: “docs”, “path”: “~/project/docs”, “pattern”: “**/*.md” }
          ]
        }
      }
    }
  }
}
配置说明 参数 推荐值 说明
backend “qmd” 启用 qmd 作为记忆后端。
citations “auto” 自动在 AI 的搜索结果中添加来源标注。
includeDefaultMemory true 自动索引 MEMORY.mdmemory/**/*.md 文件。
update.interval “5m” 每 5 分钟自动更新一次索引。
limits.maxResults 6 每次搜索最多返回 6 条结果。
paths[] 自定义 指定额外的 Markdown 笔记目录路径。

验证配置

# 重启 OpenClaw
openclaw restart

# 检查 qmd 是否正常运行
openclaw status
# 应该显示 memory backend: qmd

手动预下载模型(可选)

第一次进行搜索时,qmd 会自动下载所需模型。你也可以选择手动预下载:

# 使用与 OpenClaw 相同的 XDG 配置
STATE_DIR=“${OPENCLAW_STATE_DIR:-$HOME/.openclaw}”
export XDG_CONFIG_HOME=“$STATE_DIR/agents/main/qmd/xdg-config”
export XDG_CACHE_HOME=“$STATE_DIR/agents/main/qmd/xdg-cache”

# 强制刷新索引 + 生成嵌入向量
qmd update
qmd embed

# 预热模型下载
qmd query “test” -c memory-root --json >/dev/null 2>&1

中文用户推荐配置

# 在 ~/.profile 中添加,使用支持119种语言的 Qwen3-Embedding 模型
export QMD_EMBED_MODEL=“hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf”

修改环境变量后,需要重新生成索引:

# 使用上述 XDG 配置后执行
qmd embed --force

适合你,如果:

  • ✅ 你需要 OpenClaw 原生集成的记忆搜索功能,而非外部的 MCP 服务。
  • ✅ 拥有大量个人的 Markdown 笔记或技术文档,希望 AI 能够搜索并引用它们。
  • ✅ 偏爱纯本地方案,不希望依赖任何云服务。
  • ✅ 需要混合搜索(关键词+语义+重排序),以获得比单一向量搜索更高的准确率。

方案三:Nowledge Mem —— 本地优先结构化跨会话记忆

官网https://mem.nowledge.co/zh/docs/integrations/openclaw

一句话定位:本地优先的结构化知识记忆系统,让 AI 记住你做过的决定、个人偏好,并实现跨会话的自动召回。

核心特点

  • 结构化记忆:每条记忆都带有类型标签(如事实、决策、偏好、计划等),并关联时间和来源,而非简单的文本堆砌。
  • 知识演化:当认知发生变化时,会新增版本并保留历史记录,让你能看到想法是如何演变的。
  • 全自动化autoRecall 功能在会话开始时自动插入相关记忆;autoCapture 功能在会话结束时自动保存并提取记忆。
  • 本地优先:默认将数据存储在本地,无需云账户,隐私完全由用户自己掌控。
  • 跨工具共享:可以在 Cursor、Claude、OpenClaw 等多个工具间共享同一个记忆库,让知识摆脱特定工具的束缚。

安装配置步骤

1. 安装 Nowledge Mem 并启动

请遵循官方指南 https://mem.nowledge.co/zh/docs/install 完成 nmem CLI 工具的安装。

验证安装:

nmem status
# 应该显示 Nowledge Mem 正在运行

2. 安装 OpenClaw 插件

openclaw plugins install @nowledge/openclaw-nowledge-mem

3. 配置 OpenClaw

编辑 ~/.openclaw/openclaw.json 文件,替换 memory 插槽:

{
  “plugins”: {
    “slots”: {
      “memory”: “openclaw-nowledge-mem”
    },
    “entries”: {
      “openclaw-nowledge-mem”: {
        “enabled”: true,
        “config”: {
          “autoRecall”: true,
          “autoCapture”: false,
          “maxRecallResults”: 5
        }
      }
    }
  }
}
配置说明 参数 推荐值 说明
autoRecall true 在会话开始时,自动召回相关的记忆并插入上下文。
autoCapture false 会话结束时自动保存记忆。设置为 false 表示仅当使用 /remember 命令时才保存,建议新手从这个设置开始。
maxRecallResults 5-12 设置每次召回时,最多将多少条记忆结果放入上下文。

4. 重启 OpenClaw 验证

# 验证配置
openclaw nowledge-mem status
# 应该显示 “Nowledge Mem is accessible”

# 测试流程:
# 1. /remember 我们选择 PostgreSQL 做任务事件的数据库
# 2. /recall PostgreSQL
# 3. /new 开启新会话
# 4. 问:任务事件我们选的什么数据库?
# 5. 如果能回答出来,就配置成功了

适合你,如果:

  • ✅ 你最痛恨的问题是“AI 下次会话就忘了我做过什么决定”。
  • ✅ 你希望 AI 能记住你的个人偏好、重要决策和关键事实,并在新会话中自动带入这些背景信息。
  • ✅ 偏爱本地优先的方案,不想强制进行云端同步。
  • ✅ 需要结构化的知识管理,而不仅仅是存储文本块。

方案四:mem9.ai —— 云端持久化记忆基础设施

官网https://mem9.ai/

一句话定位:云端托管的持久化记忆基础设施,为你的 AI Agent 提供跨设备、跨会话的云端记忆存储。

核心特点

  • 零运维:开箱即用,无需自己搭建和维护服务,可以秒级创建持久化记忆后端。
  • 渐进式混合搜索:从纯关键词搜索开始,加入嵌入向量后可自动升级为混合搜索,无需重建索引。
  • 跨 Agent 共享:多个 AI Agent 可以共享同一份记忆,并通过云端保持同步一致。
  • 开源自托管:采用 Apache 2.0 协议开源,如果不希望使用官方云服务,可以自行搭建。

安装配置步骤

请遵循官方指南:https://mem9.ai/SKILL.md

快速步骤:

  1. https://mem9.ai 注册账号并获取 API key。
  2. 在 OpenClaw 中安装插件(按照 SKILL.md 的说明,mem9 提供了自动安装脚本)。
  3. 将 API key 配置到环境变量或 OpenClaw 配置文件中,然后重启生效。

适合你,如果:

  • ✅ 你在多个设备上使用 OpenClaw,需要记忆能够随时随地跟着你走。
  • ✅ 你不想折腾基础设施,希望有云服务帮你管理好一切。
  • ✅ 需要多个 AI Agent 实例共享同一份记忆。
  • ✅ 能够接受云存储方案,并信任服务商提供的安全策略。

一分钟选型对照表

你的核心需求 推荐方案 备注
长对话单会话内不丢信息 lossless-claw 几乎必装,核心解决上下文窗口超限问题。
跨会话记住决定/偏好 Nowledge Mem 本地优先,结构化记忆,推荐大多数个人用户。
多设备同步 + 零运维 mem9.ai 云端托管,省心方便。
搜索个人 Markdown 笔记/文档 qmd OpenClaw 原生集成,无需额外服务。
全都想要 全部装 lossless-claw(单会话压缩) + Nowledge Mem/qmd(跨会话/文档搜索)并不冲突,配合使用效果更佳。

推荐组合方案

个人开发者/重度笔记用户(完全本地):

lossless-claw  +  qmd
│           └── OpenClaw 原生混合搜索记忆后端
└─────────────── 单会话内无损压缩,长对话原始信息不丢

这是最简洁的本地全栈方案,所有数据都保存在你自己的机器上。

配置检查清单

  • [ ] plugins.slots.contextEngine = lossless-claw
  • [ ] agents.defaults.memory.backend = “qmd”
  • [ ] agents.defaults.memory.qmd.paths 已配置好你的笔记目录

需要跨会话记忆的用户:

lossless-claw  +  Nowledge Mem  +  qmd
│           │           └── OpenClaw 原生混合搜索记忆后端
│           └────────────── 跨会话记住决定偏好,本地优先,结构化
└────────────────────────── 单会话内无损压缩

配置检查清单

  • [ ] plugins.slots.contextEngine = lossless-claw
  • [ ] plugins.slots.memory = openclaw-nowledge-mem
  • [ ] agents.defaults.memory.backend = “qmd”

多设备流动用户:

lossless-claw  +  mem9.ai  +  qmd
│           │        └── OpenClaw 原生混合搜索
│           └──────────── 云端跨设备同步记忆,零运维
└──────────────────────── 单会话压缩

非常方便,无论打开哪台设备,都能接着上次的对话继续。


验证配置正确

安装完所有组件后,可以运行一遍这个检查清单来验证:

  1. lossless-claw:开启一个长对话,聊到触发压缩后,询问 AI 是否还记得开头说过什么。如果能通过 lcm_expand 命令找回,说明配置成功。
  2. Nowledge Mem:使用 /remember 命令保存一条记忆,然后用 /new 开启一个新会话,询问 AI 是否能回忆起刚才的内容。
  3. qmd:直接让 AI “搜索我的笔记中关于 XXX 的内容”,观察它是否能返回正确的结果。

如果全部通过,那么恭喜你,你的 OpenClaw 现在已经是一个“过目不忘”的智能助手了!🎉


后续展望:PostgreSQL 原生记忆后端

如果你是 PostgreSQL 的重度用户,这里有一个值得期待的未来功能:OpenClaw 社区正在讨论开发原生的 PostgreSQL + pgvector 记忆后端(相关 Issue #15093)。

为什么值得期待?
当前 qmd 方案虽然强大,但也存在一些痛点:

  • 依赖 Bun 运行时和 GGUF 模型,资源占用相对较高。
  • 调用链路较长(subprocess → CLI → SQLite → GGUF 模型),潜在的故障点较多。
  • 在 VPS 或容器等资源受限的环境下,本地模型的性能可能不尽如人意。

PostgreSQL 原生后端的潜在优势

  • 零额外依赖:直接使用 pg 包连接数据库,无需启动 subprocess。
  • 复用现有设施:许多用户已经运行着 PostgreSQL,无需额外部署。
  • 生产级可靠性:pgvector 扩展已经过大规模生产环境验证。
  • 多实例共享:多个 OpenClaw 实例可以共享同一个记忆数据库。
  • 高效混合搜索:利用 pgvector + tsvector 实现 BM25 与向量检索的双重能力。
  • 调试友好:可以直接使用 psql 命令行工具检查数据库状态,无需解析 SQLite 文件。
  • 海量向量支持:为未来的大规模向量搜索需求做好准备。

配置预览(提议中的设计)

{
  “memory”: {
    “backend”: “postgres”,
    “postgres”: {
      “connectionString”: “postgresql://user:pass@host:5432/dbname”,
      “tablePrefix”: “openclaw_memory”,
      “embedding”: {
        “provider”: “voyage”,
        “model”: “voyage-3-lite”,
        “dimensions”: 512
      },
      “hybrid”: {
        “enabled”: true,
        “vectorWeight”: 0.7,
        “textWeight”: 0.3
      }
    }
  }
}

现状:该提案目前处于 RFC(征求意见)阶段,等待维护者的反馈。如果你也希望拥有这个功能,可以前往相关 Issue 页面点赞(👍)以表达支持。

该功能合并后,我们将在 云栈社区 第一时间发布一篇“从 qmd 迁移到 PostgreSQL 原生记忆后端”的实战指南。


本文基于 OpenClaw 生态现有方案整理,欢迎在技术社区交流时发现新项目后补充更新。




上一篇:PostgreSQL B-Tree索引倒序扫描:并发分裂与摘叶下的数据一致性源码解析
下一篇:深度剖析:KV Cache如何重塑大模型推理的内存系统与架构演进
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-26 16:06 , Processed in 0.797965 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表