Night Office

ESSAYS  / Products & Technology

AI 陪伴产品的本质是记忆

7.4k 字


核心判断:模型能力决定一次回答的质量,记忆系统决定一段关系能否延续。对于情感陪伴、心理支持和成长教练等高度个人化的场景,长期体验的核心不是让 AI “记住更多”,而是让它持续形成对用户、自己以及双方关系的准确理解,并在合适的时机使用这些理解。

对话产品的底层结构应当是“记忆—话题—对话”的闭环:记忆参与话题选择,话题驱动对话,对话产生的新信息又更新记忆。它不是将聊天记录不断塞回上下文的线性流程,而是一套持续学习、检索、校准和遗忘的系统。

一、对话为什么依赖记忆

可以从三类常见对话开始观察。

第一类是朋友间的闲聊。双方可能从近况聊到工作,再跳到新闻或共同好友,话题没有明确目标,却会自然地连续和转向。我有一位学物理的朋友,习惯在每次见面后用几条备忘录记录谈话内容。一次两小时的聊天,最后被归纳为四个话题:战争风险、理想住宅、咨询与大厂战略岗位的未来,以及几个创业想法。对话看似散乱,回看时仍然可以还原为一组相互关联的话题。

第二类是职业交流或其他目的明确的沟通。因为事先知道对方的经历,也知道自己希望获得什么信息,我们会准备问题,并围绕对方的专业背景展开。这类对话的话题来自目标与有限的用户认知。

第三类是亲密关系中的无主题对话。和家人或恋人散步时,一只海鸥、一家路过的店,甚至短暂的沉默,都可能唤起一段共同经历。这类对话没有信息交换的压力,但它最依赖双方的共同历史。面对陌生人,同样的环境往往无法产生同样自然的话题。

三类对话的差别不在于是否存在话题,而在于话题从哪里来。陌生人主要依赖外部情境和显性的交流目标;关系越深,话题越多地来自对彼此的了解和共同经历。我们知道对方关心什么、最近正在经历什么、哪些问题尚未解决,也知道什么应该追问、什么最好暂时不提。

因此,对话并不是一轮轮孤立的问答。更准确地说,每一轮对话都在完成两件事:

  1. 根据当前情境、交流目标和既有记忆,选择下一步值得展开的内容;
  2. 根据对方的回应,修正原有理解,并形成新的记忆。

这与推荐系统有相似之处。信息流根据用户过去的行为,从大量内容中选择下一条;长期对话系统则根据双方的历史,从大量可能的话题和回应方式中选择下一步。区别在于,陪伴产品优化的不能只是点击或时长,还包括理解是否准确、情绪是否安全、关系是否连贯,以及用户是否保有控制权。

二、聊天记录不等于记忆

讨论 AI 记忆时,首先需要区分三个容易混淆的概念。

  • 聊天记录是原始事实,回答“当时具体说了什么”。它完整,但冗长、噪声多,也可能包含已经失效的信息。
  • 上下文是模型在当前推理中能够直接看到的内容,包括最近几轮对话、系统指令和被召回的资料。上下文是一种有限的运行时资源,不等于长期存储。
  • 长期记忆是从历史中筛选、组织并在未来使用的信息。它回答的不是“系统保存了什么”,而是“哪些过去的信息应当改变此刻的行为”。

把所有聊天记录都存下来,只解决了“可追溯”的问题;把全部记录塞进长上下文,也不等于有效记忆。上下文越长,成本和延迟越高,真正重要的信息还可能被大量无关内容淹没。记忆系统的工作,正是将规模不断增长的历史压缩为当前任务所需的最小充分信息。

从产品角度看,陪伴型 AI 至少需要五类记忆:

类型记录什么主要作用
工作记忆当前话题、最近几轮对话、此刻的情绪与目标保证一段对话内部连贯
情景记忆某个时间发生的事件、当时的表达与感受回忆共同经历,理解变化的来源
语义记忆相对稳定的事实、偏好、关系和对用户的阶段性判断形成持续更新的用户模型
程序记忆用户喜欢的沟通方式、边界、有效或无效的支持方法决定“应该怎样回应”
自我与关系记忆AI 曾经说过什么、做过什么、作出过哪些承诺,双方形成了哪些共同指代维持 AI 自身及关系叙事的一致性

最后一类经常被忽略。许多系统可以记住用户喜欢什么,却记不住 AI 自己曾经提供过什么建议、讲过什么故事,或者双方为何形成某个称呼。结果是,系统拥有“用户画像”,却没有“共同历史”。陪伴关系需要的并非单向画像,而是关于双方互动的双向记忆。

此外,状态不能被轻易固化为特征。“用户今天不想听建议”可能只对本次对话有效;“用户在压力较大时通常希望先被倾听”才可能是一条需要多次证据支持的程序记忆。好的系统必须同时保存时间、来源和置信度,避免把短期情绪写成永久人格。

三、记忆系统如何工作

一个完整的记忆系统,不是“向量数据库加 RAG”,而是由写入、巩固、检索、使用、更新和遗忘组成的生命周期。

1. 写入:从对话中提取候选记忆

每轮对话结束后,系统可以保留原始记录,同时提取原子化的候选记忆。例如,用户说:“最近换工作让我很焦虑,我现在不想听解决方案,只想把事情说出来。”系统不应将其压缩成笼统的“用户很焦虑”,而应拆成:

  • 近期事件:用户正在经历工作变动;
  • 当前状态:用户因此感到焦虑;
  • 临时互动偏好:本次对话希望被倾听,不希望立即获得建议。

一条可维护的记忆,至少应包含:内容、类型、发生时间、记录时间、来源、置信度、重要性、敏感等级和有效期。对于模型推断出的信息,还应明确标记为“推断”,并保留支持它的原始证据。

不是每句话都值得进入长期记忆。写入前至少应判断:

  • 它是否可能在未来再次影响回应?
  • 它是相对稳定的事实,还是转瞬即逝的状态?
  • 它是否有足够证据,还是模型的过度推断?
  • 它是否过于敏感,是否获得了用户授权?
  • 如果系统不记住它,会不会实质性损害后续体验?

记忆写入首先是产品判断,其次才是模型抽取问题。

2. 巩固:从事件形成理解

人的记忆并不只是事件列表。我们会从多次互动中形成更高层的判断,并在新证据出现时修改判断。AI 也需要完成从情景记忆到语义记忆和程序记忆的巩固。

例如,一次“用户拒绝建议”不足以支持“用户不喜欢建议”;如果多次记录显示,用户在情绪强烈时更希望先梳理感受、平静后才讨论方案,系统才可以形成一条更稳定的互动规律。这个判断必须链接回具体事件,否则它会成为无法校验的标签。

这也是 Generative Agents 中“反思”机制的重要意义:系统不仅保存观察,还会将一组低层事件综合为高层认识。对陪伴产品而言,可以将记忆组织成三层:

  1. 原始证据:完整对话和行为日志;
  2. 情景摘要:某次事件发生了什么;
  3. 阶段性认识:这些事件共同说明了什么。

三层之间应当可以相互追溯。当新信息与旧判断冲突时,不应直接覆盖历史,而应保留版本和时间。例如,“过去喜欢独自旅行”与“最近不想再一个人出门”可能意味着偏好发生了变化,而不是其中一条必然错误。系统需要记录变化,而不是强行得到一个静态标签。

3. 组织:多种索引共同服务于召回

单一的向量相似度只能找到“语义相近”的内容,却不一定能找到“此刻最应该想起”的内容。工程上通常需要多种索引并存:

  • 向量索引,用于语义相似召回;
  • 关键词与实体索引,用于准确找到人名、地点、项目和专有名词;
  • 时间索引,用于判断先后关系、变化与纪念日;
  • 图关系,用于连接人物、事件、情绪、偏好和因果线索;
  • 结构化字段,用于过滤敏感等级、有效期、置信度和记忆类型。

图结构的价值不在于形式更复杂,而在于它能够表达关系。例如,“用户不喜欢生日”并不是孤立标签,它可能与某段家庭经历、某次争执以及当时希望被如何对待相连。只有保留这些联系,系统才可能理解这项偏好的来源和边界。

4. 检索:主动记忆与被动记忆结合

传统 RAG 通常从用户当前的问题出发,召回语义最接近的历史。这是一种被动记忆,适合回答“我们上次聊到哪了”,却不足以支撑自然的长期关系。真实对话中,人会带着一些并未被当前问题直接触发的背景:对方最近正处于什么阶段、双方有什么未完结的话题、哪些边界必须始终遵守。

因此,陪伴产品应结合两种机制:

  • 主动记忆:每轮都可能需要的少量背景,例如核心边界、近期生活主线、未兑现的承诺和当前关系状态;
  • 被动记忆:根据当前话题按需召回的具体事件、人物和历史细节。

候选记忆可以综合语义相关性、时间新近性、长期重要性、当前情绪匹配度、置信度和关系价值进行排序,并对敏感、冲突或已经失效的信息降权。随后经过重排和去重,只将少量真正有用的记忆放入上下文。

Generative Agents 用相关性、新近性和重要性共同决定召回;MemGPT 则将上下文窗口类比为内存、外部存储类比为磁盘,让系统在不同层级之间调入和移出信息。两者指向同一个原则:长期存储可以很大,但进入当前推理的内容必须有限且经过选择。

5. 使用:记住不等于复述

记忆只有改变了系统的行为,才产生产品价值。这种改变可以表现为:选择更合适的话题、调整追问深度、避开边界、延续一项计划,或者采用过去被证明有效的安慰方式。多数时候,记忆应当隐含在回应中,而不是被刻意展示。

频繁说“我记得你在某月某日提过……”会让用户感到被监视,也会让对话变成记忆能力演示。更自然的方式是,将记忆转化为恰当的行动。例如,系统知道用户在压力较大时不希望立即听建议,就可以先确认:“今天要不要先把这件事说清楚,暂时不急着找方案?”

使用记忆还需要区分事实与推断。事实可以在必要时直接引用;低置信度的推断只能作为提问线索,不能作为结论。系统可以问“这次是不是也有一点类似的感受”,而不应断言“你总是因为同一个原因焦虑”。

6. 更新与遗忘:记忆不是只增不减

用户会改变,关系也会改变。一个只会追加、不懂更新的系统,使用越久反而越容易误解用户。因此记忆系统需要:

  • 在新证据出现时增强或降低置信度;
  • 识别冲突,区分事实错误与随时间发生的变化;
  • 为短期状态设置过期时间;
  • 合并重复记录,避免同一结论被重复放大;
  • 允许用户查看、更正、删除和暂停记忆;
  • 对敏感信息设置更严格的写入与召回规则。

遗忘不是系统缺陷,而是保持准确、节制和安全的必要能力。

四、从记忆到话题:陪伴产品真正需要的推荐系统

记忆系统解决“系统知道什么”,话题系统解决“此刻应该用什么”。两者之间不能只靠大模型临场发挥,还需要明确的候选生成和排序机制。

话题候选通常来自四个方向:

  1. 当前表达中尚未展开的线索;
  2. 最近生活主线和仍未解决的事项;
  3. 与当前情绪或场景有关的共同经历;
  4. 时间、地点和外部事件触发的新内容。

候选话题随后根据相关性、情绪适配、连续性、新鲜度、记忆置信度和潜在风险排序。系统还需要先经过一层硬性过滤:不该主动触碰的敏感经历、用户已经拒绝的话题、缺乏可靠证据的推断,都不应仅仅因为“相关”而被提出。

最终可以产生三类对话动作:

  • 顺着说:继续展开用户当前最关心的内容;
  • 连接说:将当前表达与过去的事件或长期目标建立联系;
  • 主动说:在缺少明确话题时,适度提出与用户近期生活有关的内容。

这构成了完整闭环:

记忆形成用户与关系模型 → 模型参与话题排序 → 话题驱动对话 → 用户反馈成为新证据 → 记忆被更新。

陪伴感不是来自更拟人的措辞,而是来自系统能够在这个循环中保持连续、准确和克制。

五、现有实践提供了什么

现有 Agent 记忆研究大多从上下文限制和长期一致性出发,已经形成几种有代表性的路径。

Generative Agents 提出了“记忆流—检索—反思”的基本架构:保存经验,按相关性、新近性和重要性召回,再将低层经验综合为高层认识。这套结构至今仍是理解 Agent 长期记忆的良好起点。

MemGPT 强调分层记忆管理。工作上下文负责当前推理,外部存储保留更大规模的历史,系统按需在两者之间移动信息。这说明即使模型上下文继续增长,记忆调度仍然有必要:无限历史既不经济,也不等于无限注意力。

Mem0 进一步将抽取、巩固和检索工程化,并使用图记忆表达跨事件关系。它的意义不只是提高问答准确率,也说明“保存全部上下文”并非延迟和成本上的最优方案。

Claude Code 的记忆机制 则展示了另一种实用区分:一类是用户明确写下、每次会话都应遵循的指令;另一类是系统根据纠正和使用过程积累的经验。对于陪伴产品,同样应将用户明确设定的边界,与模型从互动中推断出的偏好分开管理。前者优先级更高,后者必须可以被审查和修正。

这些实践主要回答了“怎样跨会话保存并取回信息”。陪伴产品还要多回答一步:什么值得成为关系的一部分,以及在什么时机使用它。

Elys 的启发与局限

根据对 Elys 团队的访谈与产品拆解,其方案强调有限的动态记忆槽位、图结构,以及主动与被动召回的结合。有限槽位的价值,是迫使系统持续判断哪些内容值得常驻;图结构用于保留人物、事件和情绪之间的联系;主动召回则避免系统完全受当前问题支配。

更值得关注的是产品层的校准机制:让用户查看、编辑和删除记忆,将记忆管理从后台能力变为双方共同维护的界面。使用产生新信息,用户反馈修正理解,更准确的理解再改善后续互动,这才构成真正的记忆飞轮。

但记忆槽位的数量、图结构的复杂度或召回命中率,都不是最终目标。一个系统可能准确记住大量事实,却仍然无法判断何时该追问、何时应当沉默;也可能因为过度主动而显得冒犯。Elys 的实践证明了记忆可以像推荐系统一样被工程化,但陪伴产品还需要将情绪安全、关系边界和用户自主性纳入排序目标。

六、如何落地一套陪伴型记忆系统

如果从零开始,我会按以下顺序推进,而不是一开始就建设庞大的知识图谱。

第一阶段:定义“应该记住什么”

先建立记忆规范和少量高价值类型,例如长期事实、近期事件、沟通偏好、明确边界、共同经历和未完成事项。每类记忆都规定写入条件、有效期、敏感等级与可见性。这个阶段最重要的产出不是数据库,而是判断标准。

第二阶段:建立可校准的写入与召回闭环

保存原始证据,抽取带来源和置信度的候选记忆;同时提供用户可见的记忆中心,支持确认、修改、删除和关闭记忆。召回先采用结构化过滤、向量检索与重排的组合,并记录哪些记忆最终真正影响了回答。

第三阶段:加入巩固、冲突处理和时间演化

让系统能够从多次事件中形成阶段性判断,同时保留证据链;当新旧信息冲突时,识别是错误、例外还是变化。对于情绪和短期偏好,使用衰减或有效期,而不是永久保存。

第四阶段:让记忆参与话题选择

建立话题候选池和排序器,将当前表达、近期主线、共同经历和外部情境放到同一套选择机制中。先以用户是否愿意继续该话题作为直接反馈,再观察它是否提升对话深度和长期留存。

第五阶段:单独评估记忆质量

只看总对话时长,很难知道记忆系统是否真的有效。至少应跟踪:

  • 写入准确率:保存的信息是否真实、必要、粒度合适;
  • 召回准确率:取出的内容是否与当前情境相关;
  • 记忆利用率:召回内容是否真正改变了回答;
  • 冲突与过期率:系统使用了多少错误或失效信息;
  • 用户纠正、删除和关闭率:哪些记忆让用户感到不适;
  • 话题接受率:系统主动提出的话题是否被继续;
  • 长期一致性:跨会话的人物、事件、承诺和边界是否保持连贯。

评测集也不能只考“用户的生日是什么”之类的事实问答。更重要的测试包括时间变化、相互冲突的信息、敏感内容、不应主动提及的记忆、跨事件推理,以及 AI 对自己过往言行的记忆。记忆系统的目标不是通过历史知识考试,而是在未来的互动中做出更合适的选择。

七、记忆也是一项权力

陪伴产品记录的是一个人最私密、最脆弱,也最容易被用于影响其行为的信息。记忆越强,操纵、泄露和错误归因的风险也越高。因此,记忆能力必须与以下原则同时建设:

  • 用户知道系统记住了什么,并能控制它;
  • 敏感内容默认采用更保守的写入和召回策略;
  • 原始事实、模型推断和产品规则在数据层明确分开;
  • 记忆不用于诱导依赖、制造愧疚或阻止用户离开;
  • 系统承认自己是 AI,不把记忆连续性伪装成人类意识;
  • 删除应当真实生效,并在必要时保留可审计但不可继续使用的安全记录。

“记住一切”不是好的产品愿景。真正可靠的陪伴系统,应当知道什么值得记住、何时可以使用,也知道什么应当忘记。

结语

关系并不是一组静态标签,而是对另一个人和共同历史的持续理解。一次优秀回答可以由强模型生成;跨越几个月甚至几年的连贯互动,则必须依靠模型之外的记忆系统。

因此,AI 陪伴产品的核心壁垒不是上下文窗口有多长,也不是数据库里存了多少条记录,而是能否完成三个转换:从对话中形成可靠记忆,从记忆中选择合适话题,再从新的对话中修正原有理解。

模型提供语言能力,记忆系统提供关系能力。后者才决定一个对话产品能否从“每次都答得不错”,走向“长期真正理解同一个人”。

延伸阅读