Agent 如何设计分层记忆,实现短期与长期信息的保存和使用?

未标记

询问 AI

考查重点:记忆分层与相关信息召回。近期原文保指代,任务状态保目标和进度,长期记忆保可复用事实;检索相关项注入当前窗口并处理过期冲突

本题目录

参考答案

核心回答

Agent 的分层记忆,应按信息服务什么范围、保留多久、何时读写来设计,再从存储中选出本轮模型需要的内容。一种实用组织方式是:

  1. 近期对话:保留当前会话最近的原始消息,延续指代、追问和用户更正;较早过程可以摘要或按需回查。
  2. 当前任务状态与摘要:明确保存目标、约束、已确认参数、进度和待办,避免模型每轮从聊天中重新猜测。关键事实用结构化字段,摘要补充经过与背景。它与近期对话都服务当前任务,通常属于短期信息。
  3. 跨会话长期记忆:保存后续仍有用的偏好、项目事实、历史决策和经过验证的经验,按用户、组织和项目限定作用域,需要时再检索。

这不是统一的“三层标准”,也不要求三套数据库。重点是把保存的信息与本轮上下文分开:Redis 或检查点负责保存,读取、筛选和注入才让模型实际用到。写入前判断价值与依据,读取时检查权限、有效期和相关性,并控制预算;发生更正、过期或删除时同步维护。

例如长期默认是“华北、按周”,本次用户要求“华南、按月”,当前任务采用新参数,长期默认暂时不变;只有用户明确改变默认,才更新相应的长期条目。

各层保存什么,怎样协作

继续用问数场景:最近几轮对话保留“这次改查华南”和时间范围的澄清;任务状态记录地区、时间粒度、指标口径、SQL 校验结果与当前进度;长期记忆保存该用户在这个项目下常用的查询偏好。

短期与长期的区别主要是使用范围,并不由保存天数决定。一个暂停数天后继续的任务,仍可恢复同一会话的短期状态;另开会话也要用到的默认口径,则属于跨会话信息。任务状态也不等于全部聊天历史:已经确认的参数和已完成步骤,应该能被程序直接读取和检查。

原始对话或工具结果可以留作回查材料,但不必每轮全部发送。摘要是有损的任务视图,不能替代需要精确核对的原文、数值或执行记录。长表格、网页和查询结果可以外置,状态里保存可访问的位置及必要说明。

下图只画读取侧:三类信息按需读取后,经过筛选和组织进入本轮上下文。分层描述的是逻辑职责,存储可以按业务需要共用或拆分。

flowchart TD
    READ[按作用域读取必要信息<br/>近期对话、任务状态<br/>跨会话长期记忆] --> SELECT[检查相关性、时效与冲突<br/>控制上下文预算]
    SELECT --> CONTEXT[构建本轮上下文]
    CONTEXT --> MODEL[模型调用]

上下文构建还要检查时效、冲突与 token 预算。即使某条信息已经存入记忆,也只有被正确取回并进入当前输入或后续工具交互,才会影响本次回答。

写入:先选择,再合并与更新

短期记录随交互和步骤推进更新:用户消息、必要的工具调用与返回、任务字段和步骤结果,都有各自的保存位置。执行状态应依据实际操作结果更新,不能只因为模型回复“已完成”就把任务设为成功。

长期写入要选择有持续价值的信息。例如用户明确要求记住项目默认口径,或者一项已经核实、后续可能复用的项目决定;临时查询参数、未经确认的推测、一次性工具输出,则不应直接变成稳定偏好或当前事实。

每条长期记忆可以携带内容、来源、所属用户与项目、形成时间、有效范围、版本和当前状态。写入时与已有条目去重,判断是补充、纠正还是一次局部例外。模型可以辅助抽取候选,但来源不明或语义含糊时,先保留为待确认信息,而不是自动覆盖已有结论。

写入可以在请求过程中同步完成,也可以交给后台任务。同步便于下一轮马上读取,但增加响应耗时;异步减少当前等待,却可能造成短暂的新旧不一致。用户刚要求修改默认值时,应明确何时更新已生效。后台抽取或重试还需防止重复写入;多会话同时更新同一偏好时,可用版本校验等方式处理冲突。

读取:先限定范围,再考虑相关与预算

会话历史按当前任务标识读取;长期记忆按可信身份和应用授权限定用户、组织、项目等范围。标识和过滤条件应由应用的数据访问层管理,不能只让模型自行填写后就直接访问。缓存和检索索引也要遵守同一边界,否则主库隔离了,缓存仍可能串到别人的记录。

检索方式由内容决定:默认语言、项目配置等明确字段可直接按键读取;历史事件和经验适合按关键词、语义或时间检索。长期记忆不要求全部向量化,语义相似也不等于当前可用。先排除无权限、失效或已撤销记录,再结合相关性、来源和适用时间筛选,最后去重并放入有限上下文。

冲突要看作用域和证据,而不只是“新记录分数更高”。本次“华南、按月”覆盖本次查询的历史默认,但不代表用户以后都改变习惯;若用户说“这个项目以后都按月”,才更新对应项目默认。其他项目的偏好也不应一起被覆盖。记忆内容是业务资料,不能替应用授予权限或改变系统约束。

输入过长时,先保留当前目标、有效约束、近期更正和必需证据,再缩小历史窗口、摘要或召回内容,为输出预留空间。消息裁剪还要保留必要的工具请求与结果关系。详细压缩取舍可继续看多轮对话变长时,如何控制上下文长度并选择压缩策略?。

更正、过期、删除与恢复

用户纠正一个事实时,除更新当前有效条目,也要检查基于旧条目生成的摘要、索引和缓存。可保留必要的版本与来源便于追溯,但已失效的版本不应继续参与正常召回。一次性状态和稳定偏好的保留时间可以不同,具体按业务用途设定;不能因为是“长期记忆”就永久相信。

用户删除或撤销记忆时,读取链路应立即排除对应内容,并按保留策略处理主记录、向量索引、摘要和缓存。后续从旧历史重新抽取记忆时,也要识别删除或撤销标记,避免已经清除的内容又被后台任务写回。

在 LangChain/LangGraph 的当前主线中,checkpointer 保存同一线程的执行状态,store 支持跨线程长期信息。两者保存的内容都需要应用组织和读取;内存后端也不等于进程重启后仍可恢复。Redis、关系数据库、文件或向量库是可选择的存储手段,不能仅凭使用某种数据库就认定实现了记忆。

任务恢复时,除了加载检查点,还要核对状态版本、当前权限和工具结果是否仍有效,再构建本轮上下文。对已经产生的外部动作要查执行记录或使用幂等机制,避免恢复时重复执行。历史库存、订单状态等会变化的数据,也不能只凭旧记忆当作实时结果。

追问:怎样知道分层记忆确实有效?

用多轮与跨会话任务检查:能否接住近期指代,任务暂停后是否保留进度,新会话能否取回项目偏好,本次例外是否污染长期默认,更正和删除后旧记录是否仍被召回,以及不同用户、项目是否相互隔离。再观察无关记忆的注入量、token 与检索代价。

如果库里有正确记忆但回答没有使用,沿“限定范围、召回候选、有效性过滤、上下文构建、模型使用”逐步检查;如果一开始就写错了,需要修写入选择与纠错,而不是只增加召回数量。衡量目标是任务延续与结果质量,记忆条数更多不直接代表效果更好。

对应教程

参考资料

  • 国内:JavaGuide:AI Agent 记忆系统:依据记忆读写生命周期与元数据过滤,说明正文中长期写入的筛选条件,以及召回时范围、时效和来源校验的作用。
  • 国内:zero2Agent:记忆与上下文:采用 State、Memory 与 Context 的区分及写入纠错机制,说明正文中任务事实、跨会话信息与本轮输入的差别,以及临时例外为何不等于长期更新。
  • 国内:Datawhale:第八章 记忆与检索:借鉴 §8.1.3 与 §8.2.1 对记忆管理、存储、检索和遗忘的职责划分,解释正文中记忆分层为何不只是更换数据库名称;四类记忆是该框架的具体设计。
  • 国外:LangChain:Short-term memory:依据 Overview、Usage 与 Common patterns 中线程状态、检查点及消息裁剪摘要的机制,区分正文中的状态持久化和模型输入管理。
  • 国外:LangChain:Long-term memory:依据 Usage、Memory storage 与读写工具示例,解释正文中跨线程 Store、namespace 和 key 的组织及显式取回;命名空间仍需应用授权。

相关面经

35 篇

万仞

全栈开发工程师
实习二面
查看原面经 →
短期记忆和长期记忆怎么做的?

智元机器人

前端开发工程师
实习一面
查看原面经 →
记忆层如何区分长期记忆和短期记忆?长期记忆如何实现?

百度

Agent 应用开发工程师
秋招一面
查看原面经 →
项目追问
三层记忆怎么做的

字节跳动

AI 应用开发工程师
秋招一面
查看原面经 →
怎样做上下文窗口和 Memory 管理?分别说短期 Memory、长期 Memory。

蚂蚁集团

Agent 开发工程师
秋招一面
查看原面经 →
如何理解Agent的短期记忆和长期记忆?两者通常有哪些实现方式?
展开剩余 30 篇面经

虾皮

Agent 开发工程师
秋招一面
查看原面经 →
Agent中的短期记忆和长期记忆分别如何实现?

阿里巴巴

Agent 应用开发工程师
一面
查看原面经 →
记忆系统是如何分级的?如何实现长短期记忆?

广州报业

Agent 开发
社招一面
查看原面经 →
记忆和反馈模块你们做了吗?

小红书

实习一面
查看原面经 →
你的agent项目记忆架构是什么

快手

Agent 开发
日常实习一面
查看原面经 →
什么信息进长期记忆,什么信息只放短期?

小红书

Agent 开发
实习一面
查看原面经 →
Agent中的短期记忆和长期记忆分别是如何实现的?底层存储和调用机制有什么区别?

影石创新

AI Agent 开发
实习一面
查看原面经 →
Agent 中的短期记忆和长期记忆分别有什么作用?通常会如何实现?

同花顺

Agent 开发工程师
社招一面
查看原面经 →
memory分层规则

DeepSeek

Agent 开发
查看原面经 →
长期/中期/短期记忆分别怎么设计?

字节跳动

AI Agent 开发
秋招一面
查看原面经 →
Agent 的记忆机制怎么设计?短期记忆和长期记忆分别如何实现? #发面经攒人品#

字节跳动

Agent 开发
二面
查看原面经 →
你在写agent的时候有用过长期记忆和短期记忆吗?

字节跳动

AI 应用开发
一面
查看原面经 →
Agent的短期长期记忆是怎么实现的?(答的不好)

米哈游

Agent 开发工程师
一面
查看原面经 →
多轮 Agent 的记忆全部放进上下文会出现什么问题?应该如何设计分层记忆?

国金证券

Java 开发工程师
实习
查看原面经 →
项目追问
你说把上下文分三层,这三层是都放在一起的吗?

腾讯

后端开发工程师
一面
查看原面经 →
项目追问
那么你在设计这个项目的Memory模块的时候,为什么会考虑采用这三层来存?

快手

Agent 应用开发工程师
一面
查看原面经 →
说一下memory怎么设计,详细说说长短时记忆

字节跳动

春招
查看原面经 →
如何为 Agent 设计短期记忆和长期记忆系统?

字节跳动

后端开发工程师
一面
查看原面经 →
短期记忆和长期记忆怎么划分的

快手

面经合集
查看原面经 →
如何区分短期记忆和长期记忆?

快手

Agent 应用开发工程师
实习一面
查看原面经 →
追问
(追问)短期记忆和长期记忆是如何区分和存储 的?

阿里巴巴

Agent 开发工程师
查看原面经 →
短期对话记忆和长期记忆分别是怎么提取和存储的?

阿里巴巴

AI 应用开发工程师
暑期实习二面
查看原面经 →
Agent中的长期记忆和短期记忆你是如何理解的

携程

Agent 开发
社招
查看原面经 →
长短期记忆怎么管理

未知公司

Agent 开发
查看原面经 →
多轮记忆体系中,短期记忆具体存储哪些内容?

未知公司

查看原面经 →
Agent 的记忆怎么搞?长期短期分别怎么存?

未知公司

二面
查看原面经 →
4️⃣ 长短期记忆 主要问记忆怎么做,怎么区分,怎么在对话流程里发挥作用。

未知公司

面经合集
查看原面经 →
2️⃣Memory 怎么搞?短期、长期、用户画像各怎么处理?

字节跳动

AI 后端 / Agent 开发
实习春招一面
查看原面经 →
讲一下Agent中的“长短期记忆”

阿里巴巴

Agent 开发工程师
一面
查看原面经 →
上下文工程了解多少,长短期记忆如何做

凯越集团

AI 应用开发工程师
查看原面经 →
多话记忆条数设置多少合理,记忆系统怎么设计

收录题集

16 份

Agent 核心面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

Agent与工具调用

阿东玩 AI · AgentGuide · 4 条原题

查看题集 →
展开其余 1 条原题

长上下文

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

Prompt与上下文

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

RAG与知识库

阿东玩 AI · AgentGuide · 2 条原题

查看题集 →
展开剩余 11 份题集

阿里巴巴问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

百度高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

字节跳动高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

影石创新高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

快手高频面试题

Rocky Ding · AIGC-Interview-Book · 2 条原题

查看题集 →

美团高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

月之暗面高频面试题

Rocky Ding · AIGC-Interview-Book · 2 条原题

查看题集 →

拼多多高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

腾讯问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

小红书高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

LLM、VLM 与 Agent 面试题

Datawhale · hello-agents · 1 条原题

查看题集 →

相关题目

4 题