From convergent-memory
本地优先、人可读、跨 agent 的长期记忆收敛协议。当 agent 接入一个由发散笔记 + 收敛画像 + 归档组成的 Markdown 记忆库时,用本 skill 决定开局读哪里、如何收敛 (重写求秩而非追加)、何时归档、以及如何安全写入。适用于任何有文件读写能力的 agent,记忆库即一组本地 md 文件夹,零外部依赖。
How this skill is triggered — by the user, by Claude, or both
Slash command
/convergent-memory:convergent-memoryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
把长期记忆从单个 agent 框架里剥离出来,存为本地 Markdown 文件夹,让任何有文件工具的
把长期记忆从单个 agent 框架里剥离出来,存为本地 Markdown 文件夹,让任何有文件工具的 agent 读这个库就继承全部记忆。md 是协议,文件夹层级是结构,收敛是写入动作。
核心命题:收敛就是在判定哪些信息值得被反复召回,召回就是让 agent 直读这些文件来 代替每轮手动注入提示词。 库里反复被读到的,就是被反复召回的;收敛把值得召回的提前 摆到该在的位置、随时更新好,agent 读库即继承,无需谁手动喂。
换个角度看它是什么:把上下文压缩从「运行时、由专门的压缩子 agent 现做」搬到 「会话间、由同一个对话模型离线做」。 一轮对话结束时触发,模型结合本轮对话 + 上一次 召回,重写出下一会话该召回的内容——等于上一轮的自己给下一轮的自己写一封信。下一会话 的模型先读这封信(召回),再读用户当下的提示词。所以这里不需要独立的压缩模块或检索 模块:压缩器就是对话模型本身,召回就是 read,且全在会话之间离线备好。
记忆库根目录下按语义分三层(文件夹名可由模型按需演化,语义不变):
.obsidian/、配置文件。不是逐字读全文,是带着这四类信号去扫,按优先级排序(参考 Claude Code dream 的信号四分类):
单次、模糊、情绪化的句子不急着收敛,等它复现或被用户确认再处理。
(更新于 YYYY-MM-DD,原为:X)。这个库记的是心路转变(臣服、无观众状态那类),
丢掉「我曾经怎么想」就丢了演化本身,所以改写要留痕,不是无声覆盖。完整三步,按能力分工:
整理时默认只读发散层 + 收敛层,不读归档层(省 token)。
触发时机是确定性规则,不交给模型「觉得该收敛了」——那既费 token 又不可控。收敛质量才交给模型判断。四种触发方式,按场景选:
参考对比:Claude Code 的 dream 是「24h 定时 + 退出钩子批量 merge」;hermes-agent 是「每回合实时写、后端自愈矛盾」。本协议偏 dream 路线——本地 md、批量重写、人可读;只借 hermes 的「复杂任务触发器」当确定性信号,不抄它的后端自愈(那要绑记忆服务,违背本地直读)。
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub hd18512614931-cyber/convergent-memory --plugin convergent-memory