考察点
这道题出自 2026 年面渣逆袭系列的 Agent 面试真题("如果让你设计一个 Agent,它的长短期记忆你打算怎么设计?"),AI 应用岗一二面高频。面试官想看你能不能类比人类记忆做架构分层,并且每层给出可落地的技术方案,而不是只背"短期=对话历史、长期=向量库"一句话。追问常往写入时机、召回策略、记忆冲突上走。
参考答案
划分依据:生命周期和访问模式
短期记忆是当前任务的工作记忆:这轮对话的消息历史、中间推理过程(scratchpad)、刚调完工具拿到的结果。它的生命周期等于会话,访问模式是高频全量——每轮推理都要带。所以它唯一的存放地就是上下文窗口本身,不存在"存到哪"的问题,只存在"放不下怎么办"的问题。
长期记忆是跨会话持久化的信息:用户画像和偏好、历史交互提炼出的事实、Agent 自己积累的经验教训。生命周期跨会话甚至永久,访问模式是低频按需——只在该用的时候检索出来注入上下文。所以它必须外置:向量库、KV 存储、关系库甚至知识图谱。
一句话:短期记忆天然在窗口里,长期记忆天然在窗口外,长期记忆要通过召回"借道"窗口才能被模型用上。
短期记忆的实现
短期记忆的工程问题就一个:窗口会被挤爆。我的做法是三层:
- 原始消息流:最近 N 轮完整保留,N 按窗口预算动态算,一般保最近 5-10 轮。
- 滚动摘要:更早的历史由 LLM 增量摘要成一段"前情提要",每超阈值更新一次,保留关键决策、结论、未决问题。
- 工具结果裁剪:工具返回的大 JSON、长文本不留在历史里,只留结论一句话加引用 ID,原文落盘,需要时按 ID 读回。
长期记忆的实现
长期记忆按内容性质分三类存:
- 事实型(用户叫什么、偏好什么格式):结构化 KV 或关系表,精确读写,不需要向量。
- 经验/情景型(上次那个问题怎么解决的):文本片段 embedding 后走向量库,按语义召回。
- 画像型(用户是后端工程师、关注性能优化):聚合标签,每次会话开始全量注入,量小但权重高。
召回侧一般是"相似度 + 时间衰减 + 重要性"加权打分取 top-k,这是另一道专门的高频题。写入侧要控制时机和质量,不能每句话都往里写。
类比的边界
可以借用认知科学的术语加分——感觉记忆≈当前输入,工作记忆≈上下文窗口,长期记忆分语义记忆(事实)和情景记忆(经历)——但要说明边界:LLM 本身没有记忆,每次推理都是无状态的,所有"记忆"都是工程系统在窗口外模拟出来的。这句话一出口,面试官就知道你是干过活的,不是背书。
可能的追问
- 长期记忆更新时新旧冲突怎么办?——写入前按语义检索查重,冲突时按时间戳新覆盖旧,同时保留历史版本可回滚;关键事实可以要求用户确认。
- 短期摘要把关键细节丢了怎么办?——摘要 prompt 里明确要求保留实体、数字、决策和未决问题;原文落盘保留引用,允许模型主动"翻旧账"。
- 长期记忆会不会越攒越脏?——会,需要 TTL、访问计数清理冷记忆、重要性打分过滤低价值写入,这就是记忆污染那道题。