04
把记忆做成运行时——以Hermes为代表
第三类方案比前两类成熟很多。
代表是Hermes。它真正把记忆当成运行时的一个子系统来做,而不是「一个agent顺手用的功能」。
具体做对了什么?
会话开始时冻结一份记忆快照。session启动那一刻,系统把当前记忆状态做成一份「冻结视图」给当前会话用。中途如果有新写入或review通过的内容,会落盘,但不会修改当前会话已经看到的那份prompt。
记忆操作做成异步管线。不是「主agent在turn里现查现写」,而是这一轮结束后,后台线程做sync;然后做prefetch,把下一轮可能需要的记忆提前准备好。
Review不在主回答链路里做。主agent完成回答后,系统再fork一个独立的quiet agent,专门判断「这一轮里有没有值得沉淀成长期记忆的东西」。
它还做对了一件容易被忽略的事:把记忆做成了provider抽象。内置记忆是默认主线,Honcho、Mem0、Supermemory这些外部provider可选接入,即便外部provider失败也不影响主链路。
这套做法的水平已经明显高出一档。
但Hermes仍然没解决「个人知识库」的问题。
为什么?因为它的知识模型还很轻。Hermes最终落地的记忆形态,是两个markdown文件:MEMORY.md和USER.md。它的运行时设计是工业级的,但知识模型没有claim这个概念,没有evidence字段,没有valid_from / valid_until这种时间属性,也没有supersede关系。
也就是说,Hermes做对了「一个长期跑的agent,怎么稳定地携带它的工作记忆」,但没回答「一个人多年的项目、文档、决策、思考,怎么编译成一份可审计、可演化、可投影的长期知识」。前者是会话级、agent级的工作记忆,后者是个人多年累积的知识状态。
它解决了「记忆什么时候进入模型」的问题,却没有完全解决「什么东西有资格成为事实」的问题。