你是否有过这种经历?和 OpenClaw 聊了几个小时,上下文超限后旧消息被截断,下次重启会话 AI 直接忘了之前做过什么决定;散落各处的技术笔记想找找不到;多设备切换后记忆全没了。

OpenClaw 作为一个灵活的 Agent 框架,生态里已经发展出了多种记忆方案,各自解决不同问题。本文帮你理清脉络,一分钟选到适合自己的。


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

我们先把需求拆解开,AI 记忆其实分两个完全不同的维度:

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

不同方案侧重不同,我们一个一个说,附带详细配置步骤。


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

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

一句话定位:替换 OpenClaw 原生滑动窗口截断,DAG 分层压缩,什么原始信息都不丢

核心特点

  • LCM(Lossless Context Management)算法:旧消息不是直接删除,而是分层压缩成摘要,形成有向无环图(DAG)
  • 原始永远保留:所有原始消息存在 SQLite,Agent 需要时可以用 lcm_grep / lcm_expand 搜索展开找回细节
  • 开箱即用:安装后替换 contextEngine 插槽,自动工作,用户不用管

安装配置步骤

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

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

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

1
2
3
4
5
6
7
{
  "plugins": {
    "slots": {
      "contextEngine": "lossless-claw"
    }
  }
}

推荐配置(环境变量方式):

1
2
3
4
# 添加到你的 ~/.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 生效。验证:

1
2
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
2
3
4
5
# 1. 安装支持扩展的 SQLite(macOS)
brew install sqlite

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

安装 qmd

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

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

在 OpenClaw 中配置

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
  "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" 自动在搜索结果中添加来源标注
includeDefaultMemory true 自动索引 MEMORY.mdmemory/**/*.md
update.interval "5m" 每 5 分钟更新一次索引
limits.maxResults 6 最多返回 6 条搜索结果
paths[] 自定义 额外的 Markdown 笔记目录

验证配置

1
2
3
4
5
6
# 重启 OpenClaw
openclaw restart

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

手动预下载模型(可选)

第一次搜索时 qmd 会自动下载模型,也可以手动预下载:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 使用与 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

中文用户推荐配置

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

改完后需要重新生成索引:

1
2
# 使用上述 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 并启动

Follow the official instructions: https://mem.nowledge.co/zh/docs/install 完成 nmem CLI 安装。

验证:

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

2. 安装 OpenClaw 插件

1
openclaw plugins install @nowledge/openclaw-nowledge-mem

3. 配置 OpenClaw

编辑 ~/.openclaw/openclaw.json,替换 memory slot:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  "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 验证

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 验证配置
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/

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

核心特点

  • 零运维:开箱即用,不需要自己搭服务,秒级创建持久化后端
  • 渐进式混合搜索:从纯关键词开始,加嵌入自动升级混合搜索,不需要重建索引
  • 跨 Agent 共享:多个 Agent 共享记忆,云端同步一致
  • 开源自托管:Apache 2.0,不想用官方云可以自己搭

安装配置步骤

Follow the official instructions: https://mem9.ai/SKILL.md

快速步骤:

  1. https://mem9.ai 注册账号获取 API key
  2. 在 OpenClaw 中安装插件:
1
# 按照 SKILL.md 说明一步安装,mem9 提供自动安装脚本
  1. 配置 API key 到环境变量或 OpenClaw 配置,重启生效。

适合你,如果:

  • ✅ 你在多设备上用 OpenClaw,需要记忆跟着你走
  • ✅ 不想折腾基础设施,希望云端帮你管好
  • ✅ 需要多个 Agent 共享记忆
  • ✅ 接受云存储,信任服务商的安全方案

一分钟选型对照表

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

推荐组合方案

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

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

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

配置检查清单

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

需要跨会话记忆的用户:

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

配置检查清单

  • plugins.slots.contextEngine = lossless-claw
  • plugins.slots.memory = openclaw-nowledge-mem
  • agents.defaults.memory.backend = "qmd"

多设备流动用户:

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

方便,打开哪个设备都能接着聊。


验证配置正确

安装完所有组件后,可以跑一遍这个检查清单:

  1. lossless-claw: 开始一个长对话,聊到触发压缩,问 AI 能不能回忆起开头说的什么,如果能通过 lcm_expand 找回,说明 OK
  2. Nowledge Mem: /remember 存一条,/new 开新会话,问能不能 recall 起来
  3. qmd: 让 AI “搜索我的笔记中关于 XXX 的内容”,看能不能返回正确结果

全部通过,你的 OpenClaw 现在就是一个"过目不忘"的 AI 助手了 🎉


后续:期待 PostgreSQL Native Memory Backend

如果你像我一样是 PostgreSQL 的重度用户,这里有个值得期待的功能:OpenClaw 社区正在讨论原生 PostgreSQL + pgvector memory backend(Issue #15093)。

为什么值得期待?

当前 qmd 方案虽然强大,但也有痛点:

  • QMD 依赖 Bun + GGUF 模型,资源占用较高
  • subprocess → CLI → SQLite → GGUF 模型的链路过长,故障点较多
  • VPS/容器环境下本地模型性能不佳

PostgreSQL native backend 的优势

  • ✅ 零依赖:直接用 pg 包连接数据库,无需 subprocess
  • ✅ 复用现有基础设施:很多用户已经运行 PostgreSQL,无需额外部署
  • ✅ 生产级可靠性:pgvector 经过大规模验证
  • ✅ 多实例共享:多个 OpenClaw 实例可以共享同一个记忆数据库
  • ✅ 混合搜索:pgvector + tsvector 实现 BM25+ 向量双重检索
  • ✅ 调试友好:直接用 psql 检查状态,无需解析 SQLite
  • ✅ 海量向量支持:通过 VectorChord 无缝承接千万级向量,IVF+RaBitQ 架构实现低成本亿级检索
  • ✅ 高性能全文检索:使用 VectorChord-bm25 替代原生 tsvector,Block-WeakAnd 算法显著提升 BM25 排名查询性能
  • ✅ 专业分词支持:集成 pg_tokenizer.rs 多语言分词器,支持中文等专业分词

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{
  "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 阶段,等待 maintainer 反馈。如果你也想要这个功能,可以去 Issue 点个 👍 表达支持。

合入后,我会第一时间写一篇"从 qmd 迁移到 PostgreSQL memory backend"的实战指南。


相关阅读


本文基于 OpenClaw 生态现有方案整理,欢迎发现新项目后补充更新。