Install
openclaw skills install agent-memory-system-guideUse when setting up or improving an agent memory workflow for OpenClaw, Codex, or Obsidian with MEMORY.md, daily notes, session recovery, and optional OpenViking support.
openclaw skills install agent-memory-system-guide🧠 从零搭建 Agent 长期记忆系统。基于 OpenClaw 实战,覆盖本地优先的
MEMORY.md、每日笔记、SESSION-STATE.md、working-buffer.md、Obsidian 原生笔记与可选召回后端全流程。
记忆系统、memory-setup、搭建记忆、记忆架构
如果你赶时间,只需做这几步:
MEMORY.md# MEMORY.md
> 长期记忆。只保留会持续影响协作的事实、偏好和决策。
## User
- Preferred name: K
- Timezone: Asia/Shanghai
## 当前任务
- [ ] 正在做的事
## 决策记录
- YYYY-MM-DD: 决策内容 + 原因
## 踩坑记录
- 问题 → 解决方案
# memory/2026-03-20.md
## 完成
- 分析了网宿科技
## 决策
- 暂不加仓
## 踩坑
- (无)
## 待办
- [ ] 明天要做什么
SESSION-STATE.md 和 working-buffer.md# SESSION-STATE.md
## 当前任务
- 任务名称
## 已完成
- ...
## 卡点
- ...
## 下一步
- ...
## 恢复信息
- 最近一次有效上下文:...
# working-buffer.md
## 进行中
- ...
## 临时决策
- ...
## 未完成
- ...
模板来源:
templates/SESSION-STATE.mdtemplates/working-buffer.mdSESSION-STATE.md 只使用仓库模板提供的简洁结构:当前任务、已完成、卡点、下一步、恢复信息Task、Status、Owner、Last Updated、Cleanup Rule 这类另一套 schema 字段Current Task 合并到 当前任务Status 合并到 已完成、卡点 或 下一步Owner、Last Updated、Cleanup Rule 只在条目文本里按需保留,不扩展新标题working-buffer.md 是唯一的短期毛坯区MEMORY.md 用于启动时快速参考memory/ 用于每日笔记和深度归档SESSION-STATE.md,再 recent notes,再 MEMORY.md / memory_search,最后再查归档# templates/OBSIDIAN-NOTE.md
---
title: ""
aliases: []
tags: []
type: memory
status: draft
source: ""
source_url: ""
created: 2026-03-21
updated: 2026-03-21
related: []
---
## Summary
- 一句话摘要
## Key Points
- ...
## Evidence
> ...
## Related Notes
- [[SESSION-STATE]]
- [[working-buffer]]
## Attachments / Embeds
- `![[image.png]]`
- `![[note#^block-id]]`
先读 SESSION-STATE.md,再读最近 1-3 天 daily notes,最后才做 memory_search。
memory_search(query="相关关键词")
就这么简单。后续优化可以慢慢加。
首次引导工作区就当是开箱即用:复制 templates/SESSION-STATE.md、templates/working-buffer.md 和 templates/memory-capture.md,再跑一遍 python3 scripts/memory_capture.py bootstrap --workspace /path/to/workspace(bootstrap 可以省略,默认行为一致),此时 SESSION-STATE.md、working-buffer.md 和 memory-capture.md 都已经齐活了。MEMORY.md 仍然建议手动建立和维护,因为它属于长期记忆主文件,不应该被脚本悄悄代写。
在任务进行中写 working-buffer.md 的 临时决策/新坑/待蒸馏,任务结束前 30 秒用 templates/memory-capture.md 的 候选决策、候选踩坑、候选长期记忆 把最重要的内容整理出来,再决定哪些内容最终写入 MEMORY.md。这个环节让临时笔记和长期记忆的边界清晰且不会掉链子。
每日笔记蒸馏指的是定期从 memory/ 下最新的 Markdown 文件里抽取事实和决策转换到 MEMORY.md,同时保留原笔记供深度回溯。把这个行为设定为每日或每周结束时的步骤,能确保 MEMORY.md 只包含真正长期有用的内容。
report command 用来检查工作区当前状态,永远不会写入记忆文件。运行 python3 scripts/memory_capture.py report --workspace /path/to/workspace,它会输出四节:Supported files(MEMORY.md、SESSION-STATE.md、working-buffer.md、memory-capture.md)、Directories(递归扫描 memory/ 和 attachments/,在 memory/ 里只统计形如 YYYY-MM-DD.md 的 daily notes,在 attachments/ 里数所有文件)、Latest daily note(选取 memory/ 下字典序最新的匹配 daily note 路径)、Warnings(比如某个文件缺失或者权限异常)。像 memory/index.md 这样的参考页不会被当成 latest daily note。报告命令只在工作区目录不存在或无法读取时退出非 0;其它情况下即便有警告也返回 0。supported files、directories、latest daily note 以及 warnings 是报告里每条节的标题,方便快速对照命令输出。
Agent 每次会话醒来都是空白的。没有记忆文件,你就等于每次失忆重启。记忆系统是 Agent 的“大脑持久化”方案。它不让你变聪明,但让你不犯重复的错误。
这个 skill 的核心定位是本地优先的文件工作流和恢复约定,不是托管式 memory platform。外部检索或语义召回能力只能作为可选后端接在后面,不能替代本地恢复层。 即使 OpenClaw 新版已经提供 native memory、diary、dreaming 或 grounded recall,这个 skill 仍然负责可审计、可迁移的 local recovery layer,并与这些原生能力互补而不是竞争。
workspace/
├── SESSION-STATE.md
├── working-buffer.md
├── MEMORY.md
├── memory-capture.md
├── attachments/
├── templates/
│ ├── SESSION-STATE.md
│ ├── working-buffer.md
│ └── OBSIDIAN-NOTE.md
└── memory/
├── 2026-03-17.md
├── 2026-03-16.md
└── ...
SESSION-STATE.md)保存当前任务恢复所需的最小真相。
该记什么:
不该记什么:
working-buffer.md)临时决策、草稿和待蒸馏内容先落这里。
该记什么:
不该记什么:
MEMORY.md)只保留精炼后的长期信息,不是流水账。
该记什么:
不该记什么:
维护节奏: 每隔几天回顾 daily notes,把值得保留的蒸馏到 MEMORY.md,删除过时内容。
memory/YYYY-MM-DD.md)原始记录,不加工。 每天发生了什么、做了什么决策、学了什么,直接写。
# 2026-03-17
## 完成
- 搭建了 OpenViking 向量数据库
- 在 InStreet 发了第一篇帖子
## 决策
- 记忆双写选 Obsidian 而非 symlink
- embedding 用本地模型,可选召回后端再接外部能力
## 踩坑
- InStreet 发帖字段名写错
- 评论间隔太短会限流
## 待办
- [ ] 明天继续补回顾
定期把旧笔记归档,保持核心记忆干净。Obsidian 负责深度归档;memory_search、OpenViking 或未来其它服务负责可选召回,不替代本地恢复层。
把稳定知识写进 Obsidian 时,建议遵循这些约定,保证可检索、可回链、可复用:
templates/OBSIDIAN-NOTE.md,核心是:type、status、tags、related如果你使用 Dataview 插件,可以直接用 frontmatter 做查询,例如:
TABLE type, status, tags, related
FROM "memory"
WHERE status != "archived"
SORT updated desc
[[SESSION-STATE]]、[[MEMORY]]、[[2026-03-21]]![[image.png]],远程资源保留 ![[note#^block-id]] 复用证据段attachments/memory_search 是默认优先的轻量召回入口SESSION-STATE.md,再读最近 1-3 天 daily notes,最后才检索本地记忆SESSION-STATE.md,再把稳定事实蒸馏进 MEMORY.md,最后归档 daily notesworking-buffer.md 续接未完成项templates/SESSION-STATE.md 和 templates/working-buffer.md,再填入当前任务SESSION-STATE.md 保存当前任务恢复所需的最小真相,不承担项目管理面板职责SESSION-STATE.md 不扩展为详细版任务模板;兼容外部格式时,只做字段合并,不新增 schemaworking-buffer.md 是唯一的短期毛坯区,负责临时决策、新坑、待蒸馏和未完成项working-buffer.mdMEMORY.md 保存会影响后续协作方式的稳定事实,优先写稳定画像、约定、决策和 recurring pitfalls,适合启动时快速参考memory/ 保存 daily notes 和深度归档,按需进入,不要求每次启动都全量阅读MEMORY.md 时建议附带日期、repo 或项目标签,保持作用域清晰memory_search 只做增强、归档或可选召回层,不替代本地恢复层每周问自己三个问题:
任何一条回答“否”,就该删或改。
SESSION-STATE.md、working-buffer.md、最近 1-3 天 daily notesMEMORY.mdSESSION-STATE.md → recent daily notes → MEMORY.md / memory_search → Obsidian / 可选召回后端 → 网络搜索MEMORY.md 保持精炼,超过约 200 行就蒸馏MEMORY.md、SESSION-STATE.md、working-buffer.md、memory-capture.md、memory/、attachments/ 放在同一个 vault 里attachments/ 作为统一附件目录,方便 embeds、迁移备份和跨设备同步crontab 定时跑 python3 scripts/memory_capture.py report --workspace /path/to/workspace --output /path/to/workspace-report.mdcrontab 定时跑导出备份命令MEMORY.mdObsidian Sync 更省心,适合把 Obsidian 当主界面的用户iCloud 之类网盘更轻便,但要注意冲突副本git 更适合文本版本化,不适合单独承担附件备份Syncthing 更适合本地控制和点对点同步不要把“记忆维护”理解成一次完整总结。更稳的做法是先记毛坯,再蒸馏。
working-buffer.md 的 临时决策working-buffer.md 的 新坑working-buffer.md 的 待蒸馏这样做的目标不是一次写对,而是先把信息从脑子里落到文件里。
结束时不要强迫自己立刻改完整的 MEMORY.md。先复制 templates/memory-capture.md,快速填这几项:
如果你是在一个新的 workspace 里启动这套流程,可以直接运行:
python3 scripts/memory_capture.py --workspace /path/to/workspace
它会补齐缺失的 SESSION-STATE.md、working-buffer.md,并刷新一个带时间戳的 memory-capture.md。
如果你的目标是不换流程、只换设备,那就不要只拷 MEMORY.md。更稳的做法是导出整个记忆工作区的可恢复快照。
在旧设备执行:
python3 scripts/memory_capture.py export --workspace /path/to/workspace --output /path/to/memory-backup.zip
导出备份会把存在的 MEMORY.md、SESSION-STATE.md、working-buffer.md、memory-capture.md、memory/、attachments/ 打进一个 zip,方便直接迁移到新设备。
在新设备执行:
python3 scripts/memory_capture.py import --workspace /path/to/new-workspace --input /path/to/memory-backup.zip
导入恢复默认采用保守策略:先做导入前备份,再覆盖写入。这样即使目标目录里已经有旧的记忆文件,也能回滚到导入前状态。
如果你需要 clean restore,可以改用:
python3 scripts/memory_capture.py import --clean --workspace /path/to/new-workspace --input /path/to/memory-backup.zip
--clean 只会清理受支持的记忆文件和目录:MEMORY.md、SESSION-STATE.md、working-buffer.md、memory-capture.md、memory/、attachments/,不会删除工作区里的其他内容。
MEMORY.mdSESSION-STATE.md 或 working-buffer.mdSESSION-STATE.md、working-buffer.md、memory-capture.mdmemory-capture.md 和 recent notes 蒸馏进 MEMORY.md这样能把“需要 Agent 主动记录”降级成“先低成本捕获,再集中整理”。
OpenClaw 自带 memory_search 工具,基于语义搜索 MEMORY.md 和 daily notes:
memory_search(query="投资策略")
优势:
适用场景:
MEMORY.md 小于几十 KB建议:先跑起来再优化。 绝大多数场景先用内置 memory_search 就够了。
只有以下情况才需要引入 ChromaDB、Qdrant 等方案:
SESSION-STATE.md 负责保存当前任务真相SESSION-STATE.md + working-buffer.md + daily notes 的本地流程MEMORY.md 应该写多长?A: 建议控制在 200 行以内。超过这个量级就该蒸馏了。
A: 不是必须,但强烈建议。当天觉得“不用记”的事,三天后通常就忘了。
A: 不要一开始就要求自己维护完整记忆。先用 working-buffer.md 记录毛坯,再在任务结束时用 memory-capture.md 产出候选记忆,最后再统一蒸馏。
A: 可选。只有你真的要做命中统计和归档决策时才需要。
A: 三原则:
MEMORY.mdA: 可选。只有明确需要离线备份或跨设备共享时再同步。真要迁移时,优先用导出备份 + 导入恢复,而不是手工逐个复制文件。
MEMORY.mdMEMORY.md 撑太大