前言¶
Agent 通常自带一份会话记忆,但它的作用域基本限于当前会话或当前工作区:换个任务、换个会话,之前记住的事实就只能靠上下文窗口硬撑。真正需要长期保留的东西——用户在哪个公司、某个项目的决定是什么时候做的、上次复盘踩过什么坑——要么散落在聊天记录里,要么干脆丢失。
下面介绍的 Memory(记忆管理器)就是为解决这个问题而生的。它不做会话内的上下文管理,而是把有长期价值的事实写进一份本地 markdown 记忆库,并在之后的回答中按需检索。
这是什么¶
Memory 是发布者 ivangdavila 维护的 Agent Skill,坐标 @clawhub_ivangdavila/memory,当前版本 1.0.2,来源于 clawhub,分类为 ai-agent,标签 requires_api_key=false。
它的定位一句话:在 ~/Clawic/data/memory/ 下维护一套分类的 markdown 长期记忆,与 Agent 内置记忆并行运行、互不冲突。所有数据都存放在用户本机,纯 markdown 文件,不依赖外部服务,不发网络请求。
它解决的问题是:把”记住这个”“上次我们怎么说的”这类需求,从会话上下文里剥离出来,落成持久、可分类、可检索的条目。
核心功能¶
- 分类的 markdown 存储。记忆按目录分类存放,分类名由用户的话语生成,不预设固定分类体系。
- 索引导航。每个目录都有一份 INDEX.md 作为目录索引,检索时按”根 INDEX → 分类 INDEX → 单个文件”的阶梯逐层定位,避免全库扫描。
- 无限分类扩展。每个目录的 INDEX 上限由
index_split_at控制,默认 100 条,超过后按检索维度拆成子分类。默认配置下两层可容纳约 10,000 个条目,三层约 1,000,000 个,且每次查找仍是两三次小读取。 - 与内置记忆单向同步。内置记忆是只读领地:不修改运行时的 MEMORY.md 或工作区 memory/,只读取它们并复制到
~/Clawic/data/memory/sync/,重排格式并记录同步日期。反向和自动同步都不做。 - 写入先于回复。收到需要记忆的内容时,顺序是:写条目 → 更新分类 INDEX.md → 再回复。这样即使会话中断,写入也不会丢失。
- 条目带日期和来源。每条记忆标注 YYYY-MM-DD 日期,以及来源类型:stated(用户说的)、observed(从文件或输出看到的)、inferred(Agent 推断的)。推断被当作陈述存储是记忆库自我污染的主要途径,因此来源必须区分。
- 文件体量控制。单条记忆文件默认上限约
entry_max_lines200 行,超出后把## History部分拆到{name}-history.md,保持索引文件精简。
安装与启用¶
官方给出的安装命令是通过 ClawHub 的 skills CLI 安装:
$ openclaw skills install @ivangdavila/memory
安装后首次使用时,按 setup.md 进行一次初始化对话;文件格式参照 memory-template.md。配置集中在 ~/Clawic/data/memory/config.yaml,其中 index_split_at(索引上限,默认 100)和 entry_max_lines(条目行数上限,默认约 200)是两个关键参数。
如果你在旧位置存过数据,需要迁移到新路径:
~/memory/ 或 ~/clawic/memory/ → ~/Clawic/data/memory/
需要说明的是,官方页面只给出了上述 ClawHub CLI 安装方式,没有提供面向 Cursor、Codex CLI 或 Claude Code 的具体安装步骤,这里不做推测。
日常用法¶
官方资料列出的触发场景和对应操作如下。
用户说”记住这个”“存一下”“别忘”时,写入条目并更新分类 INDEX,再回复。分类从用户的原话生成,例如:
"I have many projects" → ~/Clawic/data/memory/projects/
"I meet lots of people" → ~/Clawic/data/memory/people/
"I want to track decisions" → ~/Clawic/data/memory/decisions/
"I'm learning [topic]" → ~/Clawic/data/memory/knowledge/[topic]/
用户问”我之前跟你说过 X 吗”“什么时候决定 Y 的”时,按阶梯检索根 INDEX → 分类 INDEX → 单个文件,再据此回答,而不是直接说”我不知道”。
记忆过时或与现状冲突时(”其实现在是 X 了”),采用 supersede 方式:写一行带新日期的记录,把旧行移到 History 并标注原日期,新旧并存以便追溯。如果存储的事实从未成立,直接删除——把错误事实归档会在日后被当作真值重新读出。
同一人或同一项目出现两份文件时,合并进较早的那份,并在原位置留一行指针。重名对象用稳定标识(公司、角色)区分文件名,不要用 -2 这类后缀。
用户要求”忘掉这个”时,删除文件、索引行和指向它的链接,并向用户报告具体移除了什么。用户给出密码、密钥、令牌时,拒绝存储,只记录该凭据存放位置的指针。
适用场景¶
- 需要跨会话、跨设备保留事实的 Agent 工作流。
- 需要按项目、人物、决定等维度组织长期信息的重度用户。
- 已有笔记库或别的 Agent 记忆库,需要分类导入、去重后并入的场景。
- 记忆库已经出现检索变慢、重复条目、过时答案,需要做一次整合与维护的场景。
限制与注意¶
- 不适用于会话级上下文——运行时自己持有的短期上下文无需写入。
- 不用于笔记应用、日记练习或间隔重复这类场景,这些应交给专门的 skill。
- 如果某条事实所属的领域已有自己的 ClawIC 存储(如 dog、family、garden、coding),应写入那个存储,这里最多留一行指针,避免同一事实两处存放、日后各自漂移。
- 秘密永不入库(Rule 9),只记指针。
- 数据规模超过约 500 个文件后,纯文件方案的检索质量会下降,官方在
scaling.md中给了增长阈值和应对建议。 - 多个 Agent 或多设备写同一份记忆库时,需要按
sync.md处理同步;把库放进 Dropbox、iCloud 或 git 之前先读这部分。
小结¶
Memory 的价值在于把长期记忆从会话上下文中独立出来,落到一份结构清晰、带索引、可追溯的本地 markdown 库里,同时与内置记忆保持单向、不冲突的协作。它不追求功能上的新奇,而是把”写入顺序、条目格式、索引上限、冲突处理”这些规则固化下来,让记忆库在长期运行中仍然可信、可查。
官方地址:https://api.skillhub.cn/zcwl/memory
需要说明:本次写作时,SkillHub 官方页面(api.skillhub.cn/zcwl/memory)和 ClawHub 镜像页均无法访问,上文功能与用法以抓取到的上游仓库页面(clawhub.ai/ivangdavila/memory)为准。SkillHub 页面快照显示评分 100000、下载 54501,与外部线索中的 95886 / 12142 不一致,无法核实,请以实际页面为准。