← 返回题目列表

Agent 记忆有哪些类型?短期记忆和长期记忆怎么用?

高频 中等 第 7 / 26 题 更新于 2026/09/17
AI Agent记忆系统上下文管理向量检索

简化版

Agent 的短期记忆保存当前任务正在使用的状态,例如最近对话、计划、工具结果和未完成步骤,通常随会话结束而失效;长期记忆跨会话保存值得复用的信息,可再分为用户事实与偏好的语义记忆、历史事件的情景记忆,以及可复用流程的程序性记忆。设计重点不是“把所有历史存进向量库”,而是明确什么值得写入、如何按相关性和时效性召回、怎样隔离用户权限,以及何时更新或遗忘。

详细版

可以把 Agent 记忆分为四类:

类型保存内容常见载体生命周期
工作记忆当前目标、计划、最近观察、工具结果Prompt、状态机、临时存储单任务
语义记忆用户偏好、稳定事实、领域知识结构化库、向量库跨会话
情景记忆某次任务发生了什么及结果事件日志、摘要索引跨会话但会衰减
程序性记忆成功工作流、技能和操作策略规则、模板、技能库版本化长期保存

生产链路应把“写入”和“召回”分开治理。写入前判断信息是否明确、稳定、有用且允许保存,并做去重、脱敏、归属和有效期标记;召回时综合语义相关度、时间新鲜度、重要性和权限过滤,只把少量有证据的记忆注入上下文。用户纠正信息后要形成新版本或覆盖旧值,敏感数据支持查看、删除和审计。

完整版教学

一、记忆不是模型参数里的“记住了”

Agent 运行时记忆通常是应用层能力,不等于重新训练模型。模型权重不会因为一次对话自动更新;所谓“记住用户喜欢无糖咖啡”,一般是系统把这个事实写进外部存储,在下一次请求中检索出来,再放回 Prompt。

这一区分很重要:参数知识难以逐条修改和删除,外部记忆则可以带用户 ID、来源、时间和权限。面试时若只回答“把历史存向量数据库”,就遗漏了状态管理、事实更新和隐私治理这些真正困难的部分。

记忆钩子:模型权重是出厂时学到的能力,Agent 记忆是运行时可写、可查、可改、可删的外部状态,两者不能混为一谈。

用户输入 -> 判断是否值得记 -> 外部存储
                               |
新任务 -> 生成检索条件 -> 权限过滤 -> 召回少量记忆 -> 上下文

二、工作记忆服务于当前任务

工作记忆类似人在解题时使用的草稿纸,保存当前目标、计划位置、已知约束、工具观察和中间结果。它既可以直接放在上下文里,也可以放在状态机或任务数据库中,每一步只投影模型当前需要的部分。

例如订票 Agent 的工作记忆包含“上海到北京、周五下午、预算 800 元、尚未选车次”。搜索工具返回 50 个车次时,不必把原始响应永久塞进历史;可以提取满足条件的 5 个候选及查询 ID。任务完成或取消后,大部分工作状态都应过期。

工作记忆过长会挤占上下文,过短则导致重复调用工具或忘记约束。因此应记录结构化状态,并用版本号或步骤 ID 防止模型把旧观察当成新结果。

三、长期记忆至少有三种语义

语义记忆保存相对稳定的事实,例如用户语言、饮食禁忌和团队技术栈;情景记忆保存一次具体经历,例如“上周部署因迁移脚本失败并回滚”;程序性记忆保存怎样完成任务,例如“发布前先跑回归,再灰度 5%”。三者的检索和更新规则不同。

记忆查询问题更新方式典型风险
语义这个用户现在偏好什么新事实覆盖或形成有效期旧偏好仍被使用
情景以前发生过类似故障吗追加事件,按时间衰减偶然事件被过度泛化
程序这类任务应按什么步骤做审核后发布新版本未验证经验变成规则

把三类内容全塞进一个向量集合,会让一次闲聊和正式规则以相似权重被召回。更稳的做法是分集合或至少分类型字段,并给每类设置不同的排序、权限和有效期。

四、写入门控决定记忆质量上限

用户每句话都长期保存会产生噪声、矛盾和隐私问题。写入门控应回答四问:内容是否明确,未来是否有用,是否足够稳定,是否获得保存授权。“我今天有点冷”通常不值得存;“以后所有报告都用中文”可能值得存;银行卡号即便有用,也不应进入普通记忆库。

一次对话有 200 条消息,若无差别写入,半年后可能积累 3 万条碎片。假设真正有长期价值的只有 2%,有效项约 600 条;先做门控不仅降低存储量,更避免 2.94 万条噪声干扰召回。

写入记录至少携带:主体、事实、来源消息、时间、置信度、记忆类型、有效期和敏感级别。模型抽取出的候选事实不能直接视为真值;关键偏好可以请用户确认,业务事实则应从权威系统读取。

五、召回不是只看向量相似度

“我对花生过敏”和“推荐花生酱早餐”在语义上非常相关,但召回系统还要保证它属于当前用户、仍然有效,并且重要性足够高。常见综合打分可以写成:

score = 0.50 × relevance
      + 0.20 × recency
      + 0.25 × importance
      + 0.05 × confidence

权重必须通过业务评测调整,不能照抄。安全禁忌可能始终拥有最高优先级,不应因时间衰减而消失;一次普通浏览记录则可以快速衰减。权限过滤应发生在向量排序之前或检索层内部,不能先召回别人的数据再指望 Prompt 不泄露。

召回后还要去重和解决冲突。若同时命中“喜欢靠窗座位”和后来的“现在更喜欢过道”,应按有效期选择新值,同时保留变更来源以供审计。

六、摘要和原始事件各有用途

情景记忆常用摘要节省 token,但摘要是有损的。一次故障的摘要可能写“数据库超时导致发布失败”,原始事件里却有具体时间、查询和回滚命令。日常检索先返回摘要,真正需要诊断时再按事件 ID 展开原始证据,能兼顾成本与可追溯性。

事件日志(不可变、可审计)
   -> 事件摘要(便于召回)
   -> 周期聚合(形成长期模式)

周期聚合不能把相关性误写成因果性。连续三次周五失败,可能只是巧合;程序性记忆应由足够样本或人工审核后再生成,不能让 Agent 自动把每次成功轨迹都升级为标准流程。

七、遗忘和纠错是记忆系统的一部分

长期保存不等于永久有效。记忆可能因用户偏好变化、业务事实更新、保存期限到期或用户删除请求而失效。系统需要硬删除、到期淘汰、时间衰减和新版本覆盖等机制,并处理向量索引、缓存、备份中的同步删除。

用户说“不要再记住我的城市”时,只在主库删一行却保留向量副本,后续仍可能被召回。可靠删除要追踪记忆 ID 在各存储层的传播,并记录删除完成状态,但审计日志本身应避免保留被删除的敏感原文。

纠错也不能简单追加一句相反事实。应让旧记录失效或缩短有效期,建立 supersedes 关系,并确保默认查询只返回当前版本。

八、如何评估记忆是否真的有用

离线评测需要同时覆盖写入和召回。写入侧看有价值事实的召回率、无价值内容的误写率、敏感信息拦截率;召回侧看正确记忆命中率、跨用户泄露率、过期事实使用率以及注入后任务完成率。

构造 1000 个测试会话,其中 200 条应写入。如果系统写入 240 条,正确写入 180 条,则写入召回率是 180/200=90%,精确率是 180/240=75%。只看召回率会忽视 60 条噪声,而这些噪声会长期污染后续任务。

线上还应观察每次注入的记忆条数和 token、用户纠正次数、删除请求完成时间及“使用记忆反而使答案变差”的比例。A/B 测试要以任务成功率为主,而不是以召回数量为主。

九、常见误区与追问

  • 误区:对话历史就是 Agent 记忆。 历史只是工作记忆的一种载体,长期记忆还需要写入、索引、更新和治理。
  • 误区:所有记忆都适合放向量库。 精确偏好和当前状态更适合结构化存储,向量库适合语义召回。
  • 误区:存得越多,Agent 越懂用户。 噪声、冲突和过期事实会降低召回质量,并扩大隐私风险。
  • 误区:相似度最高的记忆一定最重要。 还要考虑用户隔离、时效、重要性、置信度和业务规则。
  • 误区:摘要能完全替代原始事件。 摘要有损,重要判断需要能回溯到原始证据。
  • 追问:短期记忆什么时候转长期? 通过写入门控,只把明确、稳定、未来有用且允许保存的内容提升为长期记忆。
  • 追问:如何处理互相矛盾的偏好? 使用时间和有效期建版本关系,默认召回当前值,同时保留来源供核对。
  • 追问:怎样防止跨用户记忆泄露? 以租户和用户为强制过滤键,在检索层执行权限过滤并做专门的越权测试。

十、加强记忆

记 Agent 记忆可以用“工作、事实、经历、技能”四格:工作记忆支撑当前任务,语义记忆保存稳定事实,情景记忆保存发生过的事件,程序性记忆保存经过验证的流程。系统质量由两道门决定——写入门过滤噪声和敏感信息,召回门综合相关性、时效、重要性与权限;之后还必须支持冲突版本、过期衰减、用户删除和证据回溯。记忆的目标是让下一步决策更可靠,不是让数据库无限变大。