记忆管理器:给 Agent 一套可分类、可检索的长期记忆

前言

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 文件,不依赖外部服务,不发网络请求。

它解决的问题是:把”记住这个”“上次我们怎么说的”这类需求,从会话上下文里剥离出来,落成持久、可分类、可检索的条目。

核心功能

  1. 分类的 markdown 存储。记忆按目录分类存放,分类名由用户的话语生成,不预设固定分类体系。
  2. 索引导航。每个目录都有一份 INDEX.md 作为目录索引,检索时按”根 INDEX → 分类 INDEX → 单个文件”的阶梯逐层定位,避免全库扫描。
  3. 无限分类扩展。每个目录的 INDEX 上限由 index_split_at 控制,默认 100 条,超过后按检索维度拆成子分类。默认配置下两层可容纳约 10,000 个条目,三层约 1,000,000 个,且每次查找仍是两三次小读取。
  4. 与内置记忆单向同步。内置记忆是只读领地:不修改运行时的 MEMORY.md 或工作区 memory/,只读取它们并复制到 ~/Clawic/data/memory/sync/,重排格式并记录同步日期。反向和自动同步都不做。
  5. 写入先于回复。收到需要记忆的内容时,顺序是:写条目 → 更新分类 INDEX.md → 再回复。这样即使会话中断,写入也不会丢失。
  6. 条目带日期和来源。每条记忆标注 YYYY-MM-DD 日期,以及来源类型:stated(用户说的)、observed(从文件或输出看到的)、inferred(Agent 推断的)。推断被当作陈述存储是记忆库自我污染的主要途径,因此来源必须区分。
  7. 文件体量控制。单条记忆文件默认上限约 entry_max_lines 200 行,超出后把 ## 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 这类后缀。

用户要求”忘掉这个”时,删除文件、索引行和指向它的链接,并向用户报告具体移除了什么。用户给出密码、密钥、令牌时,拒绝存储,只记录该凭据存放位置的指针。

适用场景

  1. 需要跨会话、跨设备保留事实的 Agent 工作流。
  2. 需要按项目、人物、决定等维度组织长期信息的重度用户。
  3. 已有笔记库或别的 Agent 记忆库,需要分类导入、去重后并入的场景。
  4. 记忆库已经出现检索变慢、重复条目、过时答案,需要做一次整合与维护的场景。

限制与注意

  1. 不适用于会话级上下文——运行时自己持有的短期上下文无需写入。
  2. 不用于笔记应用、日记练习或间隔重复这类场景,这些应交给专门的 skill。
  3. 如果某条事实所属的领域已有自己的 ClawIC 存储(如 dog、family、garden、coding),应写入那个存储,这里最多留一行指针,避免同一事实两处存放、日后各自漂移。
  4. 秘密永不入库(Rule 9),只记指针。
  5. 数据规模超过约 500 个文件后,纯文件方案的检索质量会下降,官方在 scaling.md 中给了增长阈值和应对建议。
  6. 多个 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 不一致,无法核实,请以实际页面为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye