Skip to content

AI Agent 的记忆机制有哪些类型?短期记忆和长期记忆分别怎么实现? ​

  • 标签:AI、大模型、Agent

🏛 业务架构师 ​

Agent 记忆机制的类型与实现,我按"时间维度+用途"双轴梳理:

一、短期记忆(会话内,工作记忆):

  • 实现:对话消息列表进上下文窗口;持久化到 Redis/DB 支持断线重连;
  • 管理:滑动窗口截断(保最近 N 轮)、滚动摘要(出窗历史压缩成纪要);
  • 用途:多轮指代消解("它多少钱")、任务中间状态。

**二、长期记忆(跨会话)**分三类:

  1. 语义记忆(事实与画像):用户属性、偏好、关键事实。实现:LLM 定期抽取结构化字段入 Profile 表(精确可控)+ 向量库存自然语言记忆(模糊召回);
  2. 情景记忆(事件):历史交互的具体事件。实现:事件摘要向量化,带时间/类型元数据,检索时时间衰减加权;
  3. 程序性记忆(经验):什么策略对什么任务有效。实现:成功/失败轨迹入案例库,新任务按相似度检索参考——Agent 的"错题本"。

三、配套机制(决定记忆系统成败):写入过滤(敏感信息不入库)、读取相关(只注入与当前任务相关的记忆,防污染)、冲突更新(新旧信息以新为准并留痕)、遗忘清理(过期淘汰)、用户可见可删(合规红线)。

业务提醒:记忆建设投入要匹配场景价值——跨会话个性化服务(助理、客户成功)值得建全套;单次任务型 Agent(批量处理)不需要长期记忆,别过度设计。记忆是资产也是负债(合规成本),先想清楚记什么给业务带来什么,再决定怎么记。

🏗 系统架构师 ​

Agent 记忆机制我按时间维度 × 存储载体分类,这是记忆系统的存储层次结构:

短期记忆(会话级):

  • 载体:上下文窗口内的消息历史 + 任务中间产物;
  • 实现:应用层维护消息列表(服务端推理无状态,KV Cache 是物理加速),按窗口预算滑动截断;关键决策与实体即时抽取嵌入,防止压缩丢失;
  • 特点:模型直接可见(attention 全量访问)、零检索成本、容量小、会话结束即失。

长期记忆(跨会话):

  • 语义记忆:用户事实与偏好 → 结构化表(Postgres),可更新可审计;
  • 情节记忆:历史任务与会话事件摘要 → 向量库,语义检索;
  • 程序记忆:验证过的做法/模板 → 文件/知识库;
  • 实现:会话结束异步抽取写入(LLM 判断什么值得记),任务开始按 query 检索 Top-K 注入(个人 RAG 模式),配 Redis 热缓存。

中间层(滚动摘要):介于两者之间的"会话记忆卡"——旧对话压缩成高密度摘要持续驻留头部。

生产治理要点(分水岭):置信度与 TTL(防陈旧)、冲突覆盖合并(用户改口要跟着变)、记忆可查看可编辑可删除(合规)、注入可观测(哪些记忆生效要可归因——记忆污染是最难排查的 Agent 故障)。

架构本质:窗口 = RAM,摘要 = L2,记忆库 = 磁盘——Agent 记忆设计就是存储层次管理。

💻 全栈开发专家 ​

Agent 记忆按心理学分类对应四种类型,实现各有分工:

1. 工作记忆(短期):当前上下文窗口内的消息历史——「此刻在想什么」。 实现:消息列表 + 窗口管理(最近 N 轮原文、更早滚动摘要)。LangGraph 的 State.messages 就是它。

2. 情景记忆(Episodic):过往对话/任务的事件记录——「发生过什么」。 实现:会话归档 + 向量化,按当前任务语义检索(「上次处理类似报错是怎么解决的」)。存向量库,带时间戳。

3. 语义记忆(Semantic):沉淀的事实与知识——「知道什么」。 实现:结构化 KV/关系库(用户偏好、项目配置),精确读写、可编辑可删除;或图谱(实体关系)。

4. 程序记忆(Procedural):技能和操作规范——「会怎么做」。 实现:Skills 库/规则库/SOP 文档,按任务加载(渐进披露)。

短期 vs 长期的实现分界:

  • 短期=窗口内直接可见,零检索成本,容量小、会话结束即逝;
  • 长期=外置存储+检索注入,容量无限、跨会话,但每轮要付检索成本和「召回不准」的风险。

写入管线(长期记忆的灵魂):对话后异步抽取 → 门槛过滤(值得长期记吗)→ 冲突检测(新旧事实合并)→ 带时间戳/置信度/可见范围入库。必须做的三件事:遗忘(衰减+容量上限)、隔离(user_id 命名空间)、可删除(合规)。经验:检索注入限 3~5 条且标注来源,记忆过多反而污染指令遵循。