ARTICLE · 1297770
用户记忆系统 AI 如何记住你说过的话
用户记忆系统 AI 如何记住你说过的话
声明:此文章只做原文章的总结,并非原创。 原文来源:李博杰《深入理解 AI Agent:设计原理与工程实践》第三章 用户记忆和知识库。文中出行案例均为便于理解而构造的示例。
上次订票时,你告诉 AI 助手:“我坐高铁喜欢靠窗,尽量别选太早的车次。”
过了两周,你重新打开对话,只说了一句:“帮我看看去杭州的车票。”
它还知道你的座位偏好吗?如果你已经搬了家,它会从哪个城市查起?如果上次是替同事订票,它又能不能分清,那些要求到底属于谁?
这些问题,正是用户记忆系统(User Memory System)要解决的:从交互中保留有用的信息,在之后的任务里,找到并使用与当前用户、当前问题有关的部分。
有了这套机制,用户就能少重复一些背景,助手也有机会更准确地理解偏好和变化。
理解用户记忆,可以先弄清三个问题:存在哪里,怎么存,存什么。最后再看,记忆越来越多时该怎样整理。
记忆存在哪里
先区分两个范围:一次会话里发生了什么,以及跨会话还需要记住什么。
短期记忆保存当前任务的来龙去脉
一次 Agent 任务中,会陆续出现用户消息、工具调用及其返回结果、模型回复。这些按发生顺序记录下来的内容,可以组成执行轨迹,也就是Trajectory。
例如,查票任务可能留下这样一串记录:
用户提出目的地 → 助手查询车次 → 工具返回时刻与余票 → 用户补充出发时间 → 助手重新筛选。
轨迹很像任务的流水账。采用追加日志的设计时,新事件接在后面,原始记录保留下来,方便追踪当时看到了什么、做过什么。
但要区分完整轨迹和本次送给模型的上下文。日志可以持续追加;为了控制长度,模型每次实际看到的内容,可以经过选择、摘要和重组。短期记忆通常围绕当前会话或任务组织,也可以通过持久化机制在之后恢复。
查完这次车票,轨迹能帮助我们复盘全过程。至于下次新开一个对话还能否记住“喜欢靠窗”,则要看长期记忆。
长期记忆保留跨会话有用的信息
用户长期记忆通常保存在应用的外部存储中,按用户 ID 等标识关联。新会话开始后,系统仍能找到这个用户的偏好、背景与相关事件,再按任务需要取回。
在出行案例里,值得保留的可能是“坐高铁通常喜欢靠窗”;某一次查询得到的全部余票,则未必有长期保存的价值。
可以把两者的配合理解为:轨迹保留过程,长期记忆提炼以后可能用得上的信息。
这种记忆通常通过应用层的保存和检索实现。使用时,相关信息会进入模型当前的上下文,供它生成回答或决定下一步行动。
记忆怎么存
即使决定保留同一句话,写成一条便签、一段叙述或结构化卡片,也会影响后续的检索和更新。
下面介绍四种表示方式,它们在上下文完整性、结构化程度和维护成本上各有取舍。

Simple Notes 把信息拆成简短事实
例如:
用户坐高铁喜欢靠窗。
一条便签围绕一个相对独立的事实,容易生成,也方便逐条处理。代价是背景可能被拆散:这是长期偏好,还是某次旅途的临时要求?适用于高铁,还是所有交通工具?
图中用 O(1) 强调条目的简单性,实际检索与更新的总成本仍取决于数据规模和具体实现。
因此,便签即使很短,也要保留影响理解的条件。把“坐高铁喜欢靠窗”压缩成“喜欢靠窗”,就已经丢失了一部分含义。
Enhanced Notes 用段落保留上下文
同一件事,可以写得更完整:
用户经常乘高铁出差,通常偏好靠窗座位;这次去杭州,希望上午九点以后出发。
阅读这段话,比较容易理解各项信息之间的关系。不过,长期偏好与一次性要求也混在了一起。之后改变其中一项时,需要准确找到对应部分,避免留下重复或过期的表述。
JSON Cards 把记忆放进明确字段
如果应用经常按固定条件读取偏好,可以采用结构化卡片。例如,用“类别 → 子类别 → 键值对”组织信息:
{”出行”: {”高铁”: {”座位偏好”: ”靠窗”}}}
这样,程序可以直接读取“高铁座位偏好”,也可以只修改这个字段。
需要付出的成本,是提前设计分类,并处理难以归类的信息。例如,“带孩子出行时更在意座位是否相邻”,就同时涉及同行人和出行条件,简单的固定字段未必够用。
Advanced JSON Cards 补上人物关系和时间背景
再看一句话:
上周替同事小林订票,他喜欢过道座位;我自己还是喜欢靠窗。
如果只抽取“喜欢过道”,就可能把同事的偏好写进用户画像。
增强后的卡片会进一步交代:信息属于谁、此人与用户是什么关系、在什么背景下提到、相关时间是什么。在实现中,还可以保留原始消息的引用,方便核对。
这类表示能减少人物和场景的混淆,也需要更多提取与维护工作。
实际设计时,可以考虑混合使用:对经常影响决策的关键偏好,保留更完整的结构与来源;对需要保留、但暂时不值得精细整理的事实,用简单条目承接。选择的依据,是业务需要怎样读取和更新这些信息。
记忆应该存什么
前面讨论的是保存范围与表示形式。换到内容维度,还可以借用认知科学的分类,区分工作记忆,以及长期记忆中的情景、语义和程序记忆。Agent 领域也常用这些概念解释不同的记忆用途。
工作记忆可以类比为当前任务的工作台:模型此刻能看到并用于推理的信息。上下文窗口承载这部分信息,它可能包含近期对话、工具结果,以及刚检索出来的长期记忆。
另外三类,可以继续用订票来理解:
情景记忆,记录具体经历。 例如,“上个月去杭州时,用户选择了上午十点出发、靠窗的座位”。它回答某一次发生了什么。 语义记忆,保存事实和较稳定的认识。 例如,“用户乘高铁通常偏好靠窗”。它可以来自用户的明确表述,也可以来自对多次经历的归纳。 程序记忆,保存做事的方法。 例如,“协助订票时,先确认出发地、日期和同行人,再结合偏好筛选车次”。它描述可复用的步骤。
这里有一个容易忽略的区别:一次选了靠窗,能够形成一条事件记录;要进一步判断“长期喜欢靠窗”,还需要明确表态或更多依据。
从事件提炼偏好时,保留条件和依据很有价值。否则,一次偶然选择就可能被固化为长期标签。
Mem0 和 MemoBase 怎样组织记忆
理解前面几个维度之后,再看框架的设计,就比较容易分清它们各自在处理什么问题。
Mem0 Platform V3 保留变化前后的事实
Mem0 Platform V3 的自动记忆提取流程采用ADD-only,也就是追加写入。按照官方迁移说明,新事实被保留下来,自动提取阶段不再通过覆盖或删除旧事实处理变化;检索则结合相关性与时间等信号排序。
例如,用户去年说“我住在北京”,今年说“我已经搬到上海”。保存历史后,系统面对“我现在从哪里出发”和“我去年住在哪里”,应当使用不同时间范围的信息。
这个例子说明了时间背景的作用。具体检索结果仍取决于查询与排序策略,不能假定每次都会取回全部新旧记录。
还要明确适用范围:ADD-only 描述这里的自动提取策略。Mem0 仍提供应用可主动调用的修改和删除接口;不同版本、托管平台与开源实现,也应分别查看对应文档。
MemoBase 同时组织用户画像和事件
MemoBase 的用户画像按主题与子主题组织属性,可以持续积累对用户的认识。例如,把常用出发城市和座位偏好放进出行相关主题。
事件则按时间记录交互中的变化。官方事件结构包含画像变更和创建时间,也可以带有摘要、标签。它能补充“这个人通常是什么样”之外的信息,帮助理解某项认识是怎样形成和变化的。
MemoBase 还提供缓冲与批量整理机制:新对话先进入缓冲区,在达到配置条件或主动触发后,再进行处理。这样可以合并处理相邻信息,但新记忆何时可用,也需要结合刷新策略安排。
MemoBase 官方仓库
https://github.com/memodb-io/memobase/blob/main/readme.md
这两个例子提醒我们,选择记忆框架时,除了看能否保存文本,还要看它怎样表示变化、组织用户信息,以及何时完成整理。
记忆越来越多时怎样整理
持续保存之后,同一件事可能出现很多遍,旧信息可能过期,零散细节也可能淹没关键条件。可以从重要性、聚类和抽象三个方向考虑整理策略。
按重要性安排保留和检索优先级
重要性可以参考多种信号:
访问频率:哪些信息经常参与任务。 时间衰减:临时安排是否已经失去时效。 情感强度:用户是否特别强调过某件事。 信息独特性:这条信息是否提供了其他记录没有的内容。
这些信号需要结合内容解释。某个明确的出行限制,即使很少被用到,也可能在下一次安排时十分关键;刚说过的一句临时要求,则未必应该长期保留。
把相似记忆分组并提取摘要
假设出行助手积累了十几次订票记录,可以把相似事件归在一起,提取具有代表性的摘要,减少检索时反复返回近似内容。
整理时仍要保留有意义的区别。例如,用户独自出差偏好靠窗,陪家人出行更在意连座。把两类经历全部压缩成“喜欢靠窗”,摘要反而会误导后续选择。
从多次经历中归纳偏好
进一步的抽象,是从多次选择中形成更一般的认识。例如,多次购买商品时都愿意为质量支付更高价格,可以形成“购物时较重视品质”的候选判断。
这个判断应当保留适用范围,并允许被新的明确反馈修正。用户选过几次高价商品,也可能只是因为当时缺货,不能仅凭价格就确定消费偏好。
整理记忆时,压缩的是重复表达,关键条件与变化依据需要留下。
回到开头的订票场景。一个好用的出行助手,需要在新对话里找到你的座位偏好,区分你和同行人的要求,并结合搬家、日期与当次安排作出判断。
围绕这些具体需求,再去决定保存范围、表示形式和整理方式,用户记忆系统的设计才有了可以检查的目标。
参考资料
李博杰《深入理解 AI Agent》 第三章 用户记忆和知识库
https://github.com/bojieli/ai-agent-book/blob/main/book/chapter3.md LangChain Memory overview
https://docs.langchain.com/oss/python/concepts/memory Mem0 Platform V3 迁移说明
https://docs.mem0.ai/migration/platform-v2-to-v3 Mem0 Update Memory Operation
https://docs.mem0.ai/core-concepts/memory-operations/update Mem0 Delete Memory Operation
https://docs.mem0.ai/core-concepts/memory-operations/delete MemoBase 官方仓库
https://github.com/memodb-io/memobase/blob/main/readme.md















































































