OpenClaw 长期记忆 —— 事实、会话与"第二大脑"
OpenClaw 如何存储、索引和回忆跨会话、跨渠道、跨设备的事实,以及如何查看、编辑和清除记忆。
OpenClaw 最被称赞的特性之一是它真的记得你。你告诉它一次的每个事实——伴侣的生日、项目名、内部仪表盘的 URL——都能跨会话、跨渠道、跨重启保留下来。本教程讲解记忆的工作原理、存在哪里,以及如何掌控它。
两层记忆
OpenClaw 用两层结构保存记忆:
- 情景记忆(Episodic) —— 每次会话都被存为一段记录:完整对话、按渠道/联系人/时间戳索引;
- 语义记忆(Semantic) —— 助手判定值得长期保留的结构化事实,存放在 SQLite 中,可按"含义"而非精确关键词检索。
当助手检测到一条持久性事实("我老婆叫 Julia"),就会写入语义记忆;在每一轮回复前都会读取语义记忆作为上下文。
记忆存在哪里
所有数据都在同一个文件夹下:
~/.openclaw/
├── memory.sqlite # 语义记忆
├── sessions/ # 情景记忆(每个会话一个 .jsonl)
└── embeddings/ # 向量索引(sqlite-vec)
默认位置是
~/.openclaw。你可以通过 OPENCLAW_HOME 环境变量或每条 CLI 命令的 --home 参数把它移走。本地没有独立的云存储——你删掉这个文件夹,记忆就消失了。通过 CLI 查看记忆
openclaw memory list --limit 20
按更新时间倒序列出最常用的语义事实:
id fact tags updated
42 user.name = "Stefan" self 2026-09-14
41 user.partner.name = "Julia" self,family 2026-09-14
40 user.work.role = "Staff Engineer at Acme" self,work 2026-09-12
39 user.work.team = "Platform" self,work 2026-09-12
查看原始行(含来源):
openclaw memory show 42
{
"id": 42,
"fact": "user.name = \"Stefan\"",
"tags": ["self"],
"source": "telegram/chat/123456789",
"created_at": "2026-09-14T08:14:02Z",
"updated_at": "2026-09-14T08:14:02Z",
"embedding_model": "BAAI/bge-small-en-v1.5"
}
在聊天中让助手记忆或忘记
直接对助手说:
记住:我的 API Key 轮换在每月 1 号执行
要忘掉一条事实:
忘掉 API Key 轮换的提醒
或者更精细地控制:
openclaw memory delete 42
openclaw memory delete --tag family
强制重建
如果记忆已经偏离实际(例:你换了工作,助手还在引用旧公司),可以清空语义记忆让它从最近若干次会话中重新抽取事实:
openclaw memory reset --confirm
openclaw memory rebuild --from-sessions=20
这会保留最近 20 个会话、丢弃其余,然后让模型重新抽取事实。
备份记忆
整个 ~/.openclaw 文件夹就是一份可移植的备份。打包:
tar czf openclaw-memory-$(date +%F).tgz -C ~ .openclaw
在新机器上安装 OpenClaw 后,把 tarball 解压到对应目录即可恢复。
记忆备份里包含了助手知道的关于你的一切。上传到云盘前请加密。一个简单办法:
gpg -c openclaw-memory-2026-09-21.tgz。隐私边界
因为记忆是本地优先:
- 你可以读取每一条事实(
openclaw memory list); - 你可以删除任何事实,无需联系任何人;
- 除非你主动选择会记录 prompt 的托管模型供应商(大多数正规供应商都提供"不参与训练"开关,请去供应商后台确认),不会有任何第三方看到。
想要完全重来:
openclaw memory wipe --all --confirm
该命令会清空语义记忆、情景记忆和向量索引。Gateway 继续运行,但记忆从零开始。
记忆与渠道
一个好用的模式:按聊天区分记忆作用域,让私人聊天保持私人、工作聊天只与工作相关。
openclaw memory scope add \\
--match "channel=telegram,chat_id=123456789" \\
--namespace personal
personal 命名空间下的事实只会在你从那个 Telegram 聊天发消息时被注入。
下一步
发现问题或需要更正? 联系我们.