大模型本身是无状态的:每次请求都是独立的,它不会自动记得上一次对话。我们感受到的“记忆”,其实是应用把相关信息重新放进了上下文。对于需要长期协作的 AI Agent,记忆设计直接决定了它是“每次都要重新交代”的工具,还是“越用越懂你”的助手。 但记忆并非越多越好,存什么、何时取、何时忘,都需要仔细设计。

记忆的几种类型

借用认知科学的分类,Agent 的记忆大致可以分为:

工作记忆(短期)

当前任务的上下文:本轮对话、正在处理的文件、刚刚调用工具得到的结果。它直接存在于模型的上下文窗口中,容量受限于上下文长度。

情景记忆

过去发生过的具体事件:上周帮用户订过哪家酒店、某次任务中遇到了什么错误、用户曾经否决过哪个方案。

语义记忆

提炼出来的稳定事实和偏好:用户的称呼、所在时区、常用的写作风格、公司的项目代号。

程序性记忆

如何完成某类任务的经验:比如“给这位用户写周报时,先列数据再写结论”。它可以体现为保存下来的操作步骤、提示模板或技能说明。

写入:什么值得记住

不加筛选地保存所有对话,会让记忆库迅速膨胀且充满噪声。更好的做法是:

  • 在对话结束或关键节点,让模型提炼值得长期保存的信息,而不是存原文;
  • 区分“事实”与“推测”,用户明确说过的偏好与模型自己猜测的偏好应分开标注;
  • 为每条记忆记录来源和时间,方便日后核查和更新;
  • 敏感信息(证件号、密码、健康状况等)默认不写入,或者经用户明确同意后加密保存。

检索:在合适的时候想起来

记忆再多,用不上也没有意义。常见的检索方式包括:

  1. 固定注入:少量核心信息,如用户姓名、时区、语言偏好,每次都放进系统提示;
  2. 语义检索:把记忆向量化,根据当前任务检索最相关的几条,原理类似 RAG,可参考文本向量入门;
  3. 结构化查询:对于订单、日程这类结构化信息,直接查数据库比语义检索更准确;
  4. 按需调用:把“查询记忆”做成一个工具,让 Agent 自己决定何时需要回忆。

压缩:控制上下文的增长

长任务和多轮对话会让工作记忆不断膨胀。常用的压缩策略有:

  • 滚动摘要:把较早的对话压缩成摘要,保留最近几轮原文;
  • 结果替代过程:工具调用的中间过程可以丢弃,只保留结论;
  • 分层存储:当前任务细节放在上下文,跨任务的经验写入长期记忆。

压缩时要特别注意保留关键约束,例如用户明确说过“不要使用某个供应商”,一旦在摘要中丢失,后续行为就会出错。

遗忘:被低估的能力

记忆需要遗忘机制,原因有三:

  1. 信息会过期:用户换了工作、搬了家,旧记忆会导致错误决策;
  2. 错误会固化:一条错误的推测被存下来后,可能反复影响后续行为;
  3. 隐私与合规:用户有权知道系统记住了什么,并要求删除。

可行的做法包括为记忆设置有效期、新信息与旧信息冲突时以新信息为准并标记旧记忆失效、提供记忆查看和删除入口。

小结

好的 Agent 记忆系统,是有选择地记住、在需要时想起、在过期时忘掉。从少量核心偏好开始,逐步引入情景和经验记忆,同时把透明度和控制权交给用户,才能让记忆真正成为助力而不是负担。想了解 Agent 的整体架构,可以阅读从对话到行动:AI Agent 趋势。