Skip to main content
返回博客
博客

教 MadoHub 记住

深入 MadoHub 的记忆系统:六种记忆类型、按 persona 和项目命名空间,以及为什么 Agent 学到的任何东西在人看过之前都不会变永久。

每个 Agent 会话都从零开始。你周一告诉 Claude Code 你的项目用 pnpm 而非 npm。到了周四的会话,那个没了——除非你再打一遍,或除非有别的东西替你留着它。

那个"别的东西"是我们过去几个阶段一直在往 MadoHub 里建的:一个坐在聊天历史之下的记忆系统,跨会话和项目留存,并给 Agent 一种读写它们所学东西的方式。这篇关于那个系统是怎么塑形的,以及我们认为其中最重要的一个设计决定:抽取出来的记忆不成为真正的记忆,直到一个人说它是。

MadoHub 如何处理

六种记忆类型

每条记忆条目都带一个 kind,该集合封闭为恰好六个值:

Kind用途
preference一个已确认的用户偏好——"喜欢简洁回复"
fact关于项目的一个持久、可验证事实
decision一个做出的选择,常带原因——"因打包体积选 Tauri 而非 Electron"
pattern一个值得一次性编码的反复行为
postmortem出了什么错,以及下次该怎么做
event发生了某件事,值得记住它发生过

没有第七个选项,也没有自由格式字段。这是有意的:Memory Dashboard 按 kind 过滤和标签,一个溜过去的"幽灵" kind 只会是一个什么都无法正确搜索或显示的类别。

按 persona 和项目命名空间

记忆按命名空间分区,所以 Agent 回忆的内容可以被限定范围。persona: 命名空间把记忆绑到当前激活的 persona;workspace: 命名空间绑到一个具体项目。当一个 Agent 写记忆而不指定命名空间时,默认到激活的 persona。当它回忆时,它可以缩窄到一个命名空间——例如只从一个项目的记忆拉,而不是一次拉每个 persona 的——所以回忆保持相关,而不是浮现无关项目的杂物。

候选诞生的三条路径

Agent 显式写记忆是显而易见的路径,但不是唯一一条。MadoHub 还在后台看你的对话:

  • 显式 remember —— Agent 在对话中途决定某事值得留并写下来。
  • 每一轮之后 —— 一次轻量模型 pass 扫最后一次交流找持久东西,因为多数值得记的东西浮现于正常对话,而非刻意的"记住这个"时刻。这在每一轮上跑,所以按设计更吵。
  • 压缩之前 —— 在一段长对话窗口被摘要以节省上下文之前,同类扫描在即将被压缩的消息上跑。这个要紧,因为压缩是有损的:一旦一段消息被摘要掉,没从中抽取的任何东西从长期记忆里就永久没了。一段安静的对话花费一次便宜模型调用,并且什么也不加,而不是用噪音填充队列。

来自 Memory Dashboard 的手工录入补齐第四条路径,仍路由经过同一张候选表,只是由人录入而非模型抽取。

为什么审核,不自动写入

这是该系统中心的设计选择:那四条路径没有一条写入可搜索记忆。每一条都落到一个候选队列,带一个从 pending 开始的状态,并走到 approved 或 rejected——或者,如果根本没人审,30 天无人触碰后 archived。只有 approved 候选被提升进 Agent 实际搜索的记忆。

你会想这会拖慢事情,它确实如此,按设计如此。替代方案——让一个模型对什么是"重要到值得记住"的判断直接写进一个会被拉进每一段未来对话的 store——意味着一次坏猜测不只让你一次得到一个错答案。它让你从现在起每次那段记忆被 recall都得到一个错答案,静默复利,直到有人恰好注意到 Agent 在引用不真的东西。那个风险对恰好你最想信的两类最严重:postmortem 和 decision 条目往往在 Agent 回忆时被重度加权,所以一条陈旧或错的比缺失一条造成更大损害。

审核在 Settings → Memory 里发生,跨一个待处理队列拆分——内容、kind、命名空间、来源、置信度,以及等价候选被看到几次,可在批准前编辑或跳到产生它的那条 turn——和一个按命名空间分组的已批准视图,条目可编辑或删除。还有一个带可选自动批准的 Advanced 区块:一旦一条候选被以足够高置信度看到足够多次,它可不带手动点击自行提升。该策略默认关。留着关,Agent 决定你可能想它记住的每一样东西都先经过你——目前,那正是重点。

实用指引

  • 定期扫待处理队列。 记忆只在被批准后才有用,而候选无人触碰 30 天会被归档。每隔几个会话快速过一遍 Settings → Memory,别让队列积压。
  • 批准前编辑。 如果一个 Agent 抓住了对的想法却用错了词——"用 npm"而你其实用 pnpm——在队列里修,而不是批准后纠正。已批准记忆是 Agent 会引用的。
  • 用命名空间限定范围。 项目特定事实属于 workspace: 命名空间,免得渗到无关项目。Persona 级偏好属于 persona:。
  • 对 decision 和 postmortem 谨慎。 这些在 Agent recall 时被重度加权,所以一条陈旧或错的比缺失一条造成更大损害。宁可拒绝一个可疑候选,也别批准它然后指望它没事。
  • 只在你想好时开自动批准。 Advanced 设置可不让点击就提升高置信度、被看到多次的候选,方便但移除了人的闸门。在你信任抽取质量之前留着关。

相关文档