Memory 系统
索引、搜索与 compact。
Memory 系统
这一课你将能做到
- 用
openclaw memory管理记忆索引、搜索、重置 - 理解 MEMORY.md 在记忆体系中的角色
- 设计「团队约定进 MEMORY.md,个人偏好进自动记忆」的分层策略
为什么要学
没有记忆的 bot 是金鱼——每次对话都从零开始,「我们团队用 pnpm 不用 npm」说了一百遍还是会被问。Memory 系统让 bot 把重要信息沉淀下来,下次自动想起。但记忆不是越多越好:错误的记忆会误导,敏感的记忆会泄露,混乱的记忆会稀释关键信息。
人话:Memory 是 bot 的「工作笔记」,记什么、怎么记、怎么查,决定了它是越用越聪明还是越用越糊涂。
先建立图像
记忆来源
├── 自动提取:对话中模型判断「这值得记」→ 写入记忆存储
├── 手动写入:MEMORY.md(workspace 文件,团队硬性约定)
└── 会话历史:原始对话记录( compaction 后保留摘要)
记忆存储
└── SQLite 数据库(~/.openclaw/ 下),带向量索引
记忆检索
├── 语义搜索:openclaw memory search "部署流程"
└── 自动注入:每轮对话时相关记忆自动进入上下文
维护操作
├── openclaw memory index ← 重建索引
├── openclaw memory search ← 语义搜索
├── openclaw memory status ← 健康检查
├── openclaw memory forget ← 按来源删除
└── openclaw memory reset ← 清空重建
跟着做
步骤 1:检查记忆系统状态
openclaw memory status
openclaw memory status --deep --agent main
--deep 做完整健康检查,--agent 指定查看某个 agent 的记忆。
步骤 2:手动写入团队约定到 MEMORY.md
编辑 ~/.openclaw/workspace/MEMORY.md:
# 团队约定
- 包管理器:pnpm,禁止 npm/yarn
- 分支策略:main 保护,feature 分支前缀 `feat/`
- 代码评审:至少一人 approve 才能合并
- 部署时间:每周二、四下午 3 点,其他时间禁发
这些内容是「团队宪法」,应该永远被 bot 记住。
步骤 3:让 bot 自动积累记忆
正常对话即可。当模型判断某信息值得长期保存时(用户偏好、项目决策、常用命令),会自动写入记忆存储。你可以在 Control UI 的 Memory 面板查看已积累的记忆条目。
步骤 4:搜索验证
openclaw memory search "包管理器"
openclaw memory search "deploy" --max-results 5 --json
步骤 5:维护与清理
# 重建索引(记忆检索异常时)
openclaw memory index --force
# 按会话来源删除记忆
openclaw memory forget --agent main --session <session-id> --dry-run
# 完全重置(谨慎)
openclaw memory reset --agent main --yes
openclaw memory index --agent main
讲清楚要点
- MEMORY.md 是「手动记忆」,自动记忆是「模型自选」:MEMORY.md 由人编写,内容确定、优先级最高;自动记忆由模型判断,覆盖日常细节。两者并存,不冲突。
- 记忆检索是语义搜索,不是关键词匹配:搜「怎么发版」也能命中「部署流程」的记忆,因为底层是向量索引。这要求记忆描述本身清晰。
memory forget是精确删除,memory reset是核弹:forget 按 session、按参与者、按 hook 来源删除;reset 清空全部重建。生产环境优先 forget。