精选·上下文与记忆

Agent 的短期记忆和长期记忆怎么划分?分别怎么实现?

91学AI·2026/7/13·7 阅读

考察点

这道题出自 2026 年面渣逆袭系列的 Agent 面试真题("如果让你设计一个 Agent,它的长短期记忆你打算怎么设计?"),AI 应用岗一二面高频。面试官想看你能不能类比人类记忆做架构分层,并且每层给出可落地的技术方案,而不是只背"短期=对话历史、长期=向量库"一句话。追问常往写入时机、召回策略、记忆冲突上走。

参考答案

划分依据:生命周期和访问模式

短期记忆是当前任务的工作记忆:这轮对话的消息历史、中间推理过程(scratchpad)、刚调完工具拿到的结果。它的生命周期等于会话,访问模式是高频全量——每轮推理都要带。所以它唯一的存放地就是上下文窗口本身,不存在"存到哪"的问题,只存在"放不下怎么办"的问题。

长期记忆是跨会话持久化的信息:用户画像和偏好、历史交互提炼出的事实、Agent 自己积累的经验教训。生命周期跨会话甚至永久,访问模式是低频按需——只在该用的时候检索出来注入上下文。所以它必须外置:向量库、KV 存储、关系库甚至知识图谱。

一句话:短期记忆天然在窗口里,长期记忆天然在窗口外,长期记忆要通过召回"借道"窗口才能被模型用上。

短期记忆的实现

短期记忆的工程问题就一个:窗口会被挤爆。我的做法是三层:

  • 原始消息流:最近 N 轮完整保留,N 按窗口预算动态算,一般保最近 5-10 轮。
  • 滚动摘要:更早的历史由 LLM 增量摘要成一段"前情提要",每超阈值更新一次,保留关键决策、结论、未决问题。
  • 工具结果裁剪:工具返回的大 JSON、长文本不留在历史里,只留结论一句话加引用 ID,原文落盘,需要时按 ID 读回。

长期记忆的实现

长期记忆按内容性质分三类存:

  • 事实型(用户叫什么、偏好什么格式):结构化 KV 或关系表,精确读写,不需要向量。
  • 经验/情景型(上次那个问题怎么解决的):文本片段 embedding 后走向量库,按语义召回。
  • 画像型(用户是后端工程师、关注性能优化):聚合标签,每次会话开始全量注入,量小但权重高。

召回侧一般是"相似度 + 时间衰减 + 重要性"加权打分取 top-k,这是另一道专门的高频题。写入侧要控制时机和质量,不能每句话都往里写。

类比的边界

可以借用认知科学的术语加分——感觉记忆≈当前输入,工作记忆≈上下文窗口,长期记忆分语义记忆(事实)和情景记忆(经历)——但要说明边界:LLM 本身没有记忆,每次推理都是无状态的,所有"记忆"都是工程系统在窗口外模拟出来的。这句话一出口,面试官就知道你是干过活的,不是背书。

可能的追问

  • 长期记忆更新时新旧冲突怎么办?——写入前按语义检索查重,冲突时按时间戳新覆盖旧,同时保留历史版本可回滚;关键事实可以要求用户确认。
  • 短期摘要把关键细节丢了怎么办?——摘要 prompt 里明确要求保留实体、数字、决策和未决问题;原文落盘保留引用,允许模型主动"翻旧账"。
  • 长期记忆会不会越攒越脏?——会,需要 TTL、访问计数清理冷记忆、重要性打分过滤低价值写入,这就是记忆污染那道题。

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.