Appearance
记忆机制:如何留存
你有没有过这样的体验:跟一个 AI 聊到一半,换了话题再绕回来,你刚才说的它全忘了,还得你重新交代一遍。
这不是它"没用心",而是它天生就不具备"记住"这件事的能力。上一篇说过,LLM 是一个"看见什么、算什么、算完就扔"的瞬时计算器。它没有一块地方,能把"你刚才说过的话"存下来、留着以后用。它每次回答,都是对着"此刻递给它的那几个字"重新想。
所以,一个能记住你的智能体,背后其实藏着另一个系统在替它"背"——这就是记忆机制。
先厘清:记忆这东西,本来就不在模型里
最简单的理解方式是——记忆是模型之外的一份"外挂记事本"。
它的工作方式朴素得很,就三件事:
📝 存 ——把"值得记住的话"记进记事本
🔍 取 ——在新的对话开始时,把相关的笔记捞出来
🧾 塞 ——把捞出来的内容,一起塞进模型的上下文,让它"看到"因为模型虽然不会记住,但它看得见呀。你只要每次都在开口前,把以前记的"相关笔记"摊在它眼前,它自然就能"想起来了"。所谓智能体的记忆,本质就是反复地把旧话塞回它眼前——一点都不神秘。
两种记忆,各管一摊
记也不是统统都记。按时间长短和用途,通常分成两类:
短期记忆(也叫工作记忆)
管的是这一场对话本身:你刚才说了什么、现在就走到哪一步、还没做完的事。
它其实不怎么需要"存",因为对话本来就在上下文里持续摊着,模型一直看得到。它的"寿命"就是这场对话——聊完,这页纸就清了。
长期记忆(也叫持久记忆)
管的是跨对话、跨任务都能留下来的事:你叫什么、你偏好什么、你交代过的硬性要求、过去某个决定的来龙去脉。
这些必须真的落到一个能长期保存的地方去,下次见面再翻出来用。它是记事本里真正"写下来"的那一部分。
打个比方:短期记忆是你脑内的"待办手卡",长期记忆是你放在抽屉里的"客户档案"。 手卡用毕即扔,档案常年存档。
那"记什么、取什么"由谁判断
这里有个有意思的分工:
- 记什么——由智能体"判断"。当它发现某句话像是"以后用得着的长期背景"(比如"我是做烘焙的,报告都用简体"),就把它整理成一条,写进长期记忆。
- 取什么——也是"挑"。新对话一开始,它从记忆库中把"跟这次相关的"捞出来("这位用户:烘焙行业,偏好简体"),塞进上下文。
听起来是不是很耳熟?是的,它和 RAG 那套"检索+塞上下文"的思路几乎一模一样。区别只在于捞的是哪里的料:
- RAG 捞的是外部资料库——公司的文档、规范、知识库;
- 记忆捞的是关于这个用户的对话历史、偏好、状态。
一个管"世界知识",一个管"关于你的事"。看清这一点,两篇就连起来了。
要记好,有几个讲究
记忆这东西,看起来简单,但配得不好会越帮越乱。挑三个最要命的:
- 不是什么都值得记。 记一堆垃圾,反而污染了记忆,让模型变得糊涂、"东拉西扯"。只记以后真用得上的。
- 记忆要有时效。 有些信息是"临时备注",过一阵就该过期作废,不然会拿旧规矩套新情形。
- 记忆要有边界、能更新。 用户改口了要能改、能删;越多越要学会"挑重点",而不是一股脑全塞给模型(它的上下文窗口是有限的)。
顺带解释一个常听到的词
有人会疑惑"记忆"和"上下文窗口"的关系。那颗大脑一次能看多少字,是有上限的,这个上限就叫上下文窗口。记忆系统能塞多少"旧话",受它限制。所以记忆系统常做一件事——压缩:对话长到快撑爆窗口时,把旧的、不重要的话,压成一小段"摘要"存着,腾出空间。这就像把密密麻麻的原始记录,整理成一页有条理的要点。
这一篇的要点,用一句话收束:
模型天生没有记性。智能体的记忆,是在模型之外配一个"记事本",由它判断该记什么、该取什么,然后反复把相关的旧话塞回模型的眼前。长期的要落库、能检索、有实效;短期的随对话结束即清。记住了人、记住了事,智能体才谈得上"懂你"。
有了脑、有了知识、有了手、有了记性,还差一件事——怎么把反复摸索出来、"每次都管用"的流程,稳稳地沉淀下来:下一篇,技能固化:套路的沉淀。