PersonOS 记忆框架
让个人助手保留经历、理解变化,并在需要时找到有依据的上下文。
长期使用一个助手,人们希望它记得的不只是几项偏好。上周还在考虑的安排,这周可能已经取消;一句“最近不想出差”,可能只适用于正在照顾家人的这段时间;一张照片里的细节,也可能比事后的文字概括更重要。助手需要理解这些信息之间的关系,才能在下一次对话中正确使用它们。
PersonOS 研究并实现面向个人 Agent 的长期多模态记忆。它从完整经历中建立可检索的记忆,保留来源与时间,组织同一事项的变化,并把相关材料交给当前任务。这里的文档解释框架的设计方法和关键机制,帮助开发者理解每一层解决的问题,以及这些层怎样共同工作。
从一段持续变化的经历开始#
设想三条先后进入系统的消息:“下个月准备搬到杭州”“搬家取消了,还住在南京”,以及后来补录的旧对话“也许会考虑苏州”。如果只保留一句最新摘要,或者取最相似的一条内容,系统都可能答错“现在住在哪里”。它需要辨认计划与事实,区分发生时间与录入时间,并在回答时看到同一事项的后续变化。
以 9 月 20 日为查询时点。材料包括计划、取消和补录的旧对话。选择一个问题。
“下个月准备搬到杭州。”
计划“搬家取消了,还住在南京。”
取消计划 · 当前居住陈述补录一段 8 月的对话:“也许会考虑苏州。”
较晚录入 · 较早设想现在住在哪里?
9 月 10 日的消息直接说明了当前住址。9 月 20 日补录的内容发生更早,且只是设想,不能覆盖它。
“下个月准备搬到杭州。”
计划“搬家取消了,还住在南京。”
取消计划 · 当前居住陈述补录一段 8 月的对话:“也许会考虑苏州。”
较晚录入 · 较早设想9 月 3 日有什么搬家计划?
历史问题需要保留当时的计划,同时交代后续变化,避免让读者误以为计划仍然有效。
“下个月准备搬到杭州。”
计划“搬家取消了,还住在南京。”
取消计划 · 当前居住陈述补录一段 8 月的对话:“也许会考虑苏州。”
较晚录入 · 较早设想后来是否搬到过杭州?
计划与取消都不能证明搬家已经发生。回答应保留这个缺口,不能把计划地点写成居住经历。
这个例子贯穿 PersonOS 的设计。材料必须保存,提取出来的信息必须能找到依据,变化必须能够被识别,而回答应当适应问题所问的时间和范围。当证据没有覆盖问题时,保留未知本身也是正确结果。
理解 PersonOS 的一条阅读路径#
先从个人生活中需要表达的信息出发,再沿着一次记忆的形成与使用过程阅读。每章解释一个完整问题;字段、分类表和评估细节集中在参考部分。
这套框架关注什么#
PersonOS 把“关于人的信息是什么”与“用什么技术存取信息”分开设计。D 轴的 16 个生活领域与 K 轴的 14 类记忆提供共同词汇;证据、时间和限定条件解释信息的含义;情节、原子与链支撑组织和检索;治理约束决定哪些信息可以交给谁、用于什么目的。模型、索引和存储后端可以演进,这些语义仍需要被保留。
这一选择也影响框架的评估方式。一次命中并不足以证明记忆有用:还要检查回答是否引用了正确来源,是否沿用了取消的计划,是否把助手建议记成用户事实,以及资料被修正或删除后旧结论是否仍然出现。评估与实现边界给出了这些检查的具体方法。
原理、实现与产品#
本文档同时解释已经进入代码的机制与框架的设计要求。文中会指出两者的边界;流程图用于理解机制,所有示例均为虚构,不表示正在调用服务,也不表示所有发行版本都提供同一组能力。具体版本的安装、接口与部署说明,以对应项目的发行文档为准。
PersonOS 开源项目提供可查看的实现。PersonOS Context是独立的产品实践,承担账号、设备、采集和交付等产品职责。理解框架不需要先安装 Context,也不依赖某一个 Agent 宿主。