你是否也有过这样的困扰?和 OpenClaw 聊了几个小时后,因为上下文超限,之前的对话被无情截断。重启会话时,AI 助手仿佛得了“健忘症”,完全不记得之前做过的任何决定。散落在各处的技术笔记想用的时候找不到,多设备切换后记忆更是全盘丢失。
OpenClaw 作为一个灵活的 AI Agent 框架,其生态已经发展出了多种记忆方案,分别针对不同的痛点。本文将为你理清脉络,帮助你在一分钟内挑选出最适合自己的那一套。
记忆到底要解决什么问题?
我们首先把需求拆解清楚。AI 的记忆问题,实际上可以分为两个完全不同的维度:
| 维度 |
问题 |
解决思路 |
| 单会话内记忆 |
对话太长超出模型上下文窗口,直接截断会导致信息丢失。 |
压缩旧消息,将上下文保持在窗口容量内,同时尽量不丢失核心信息。 |
| 跨会话记忆 |
重启会话或更换设备后,AI 完全忘记了之前聊过什么、做过什么决定。 |
将对话历史持久化存储,在需要时自动召回相关内容。 |
| 外部知识库 |
个人的笔记、技术文档需要能被 AI 搜索到,并融入到对话中。 |
为文档建立索引,支持混合搜索和精准召回。 |
不同的方案侧重点各异,下面我们将逐一介绍,并附上详细的配置步骤。
方案一:lossless-claw —— 单会话无损压缩
项目地址:https://github.com/Martian-Engineering/lossless-claw
一句话定位:替换 OpenClaw 原生的滑动窗口截断机制,通过 DAG 分层压缩,实现原始信息点滴不丢。
核心特点
- LCM(无损上下文管理)算法:旧消息不会被直接删除,而是被分层压缩成摘要,形成一个有向无环图(DAG)。
- 原始信息永久保留:所有原始消息都存储在 SQLite 中,当 Agent 需要时,可以使用
lcm_grep 或 lcm_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.md 和 memory/**/*.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
快速步骤:
- 在 https://mem9.ai 注册账号并获取 API key。
- 在 OpenClaw 中安装插件(按照 SKILL.md 的说明,mem9 提供了自动安装脚本)。
- 将 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 原生混合搜索
│ └──────────── 云端跨设备同步记忆,零运维
└──────────────────────── 单会话压缩
非常方便,无论打开哪台设备,都能接着上次的对话继续。
验证配置正确
安装完所有组件后,可以运行一遍这个检查清单来验证:
- lossless-claw:开启一个长对话,聊到触发压缩后,询问 AI 是否还记得开头说过什么。如果能通过
lcm_expand 命令找回,说明配置成功。
- Nowledge Mem:使用
/remember 命令保存一条记忆,然后用 /new 开启一个新会话,询问 AI 是否能回忆起刚才的内容。
- 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 生态现有方案整理,欢迎在技术社区交流时发现新项目后补充更新。