Agent记忆管理怎么设计的?

核心考点:

  • 向量数据库不是万能的

  • 分层记忆架构设计

  • 有没有解决过记忆在时间维度状态混乱的问题

一、总体回答

基础框架:VectorDB+RAG

向量数据库和RAG是基础,但是实际生产中会面临模糊匹配和精确查找的冲突,时间状态的盲区问题

四层记忆架构:(各层读写策略不同)

  • 会话元数据

  • 结构化用户档案

  • 对话摘要

  • 滑动窗口

短期会话+长期会话,通过Prompt拼接:

长期会话(人物设定,对话风格)+前几轮对话摘要+最近几轮对话记录

深层状态管理:

  • Ledger+Views+Policy三件套管理状态

  • 双时间机制-解决时间盲区

  • 程序性技能-把高频成功的路径固化成程序性技能(skills生成)

二、Memory是一套完整机制

(分层设计+显示读写+时间状态管理+程序性经验沉淀)

2.1 向量数据库局限

  • 擅长模糊语义匹配 ,在精准查找中没有优势

  • 时间状态问题:比如用户上周说“我在上海”,这周说“我搬到北京”这两条信息语义相似度接近,Agent查的时候可能同时捞出,分不清当前状态,产生时间盲区,旧状态没有被重新覆写,Agent可能会带着过期时间决策

2.2 ChatGPT四层分层设计

  • 会话元数据:对话基本信息,用完就弃不持久化

  • 结构化用户档案:用json格式存用户核心属性(偏好,身份,历史决策,精准读取,不走向量检索,直接键值查找)

  • 对话摘要:最近几次对话浓缩成主题关键词,保留语义但压缩Token

  • 滑动窗口:处理当下对话上下文,超出对话token就丢弃

2.3 核心三大命题

  1. Memory不是存储区,而是影响决策的外部状态:记忆系统是Agent行为的输入变量,而不是可有可无的日志仓库

  2. 系统三件套(ledger+Views+policy)

  • Ledger原始账本:只追加不修改,保证数据可溯源

  • Views派生视图:把原始数据转换成大模型能直接理解的格式,不同任务不同视图

  • policy控制策略:决定什么时候读,什么时候写和遗忘,遗忘策略在隐私合规很重要

  1. 要建立显示的慢思考回路:让Agent能主动调用记忆工具,而不是每次被动的把记忆全部塞进Prompt,这样才能在长任务里保持上下文精准高效

2.4 时间约束

解决方法:双时间机制

Vaild Time:记录这条信息在现实世界里的有效时间段

Transaction事务时间:记录这条时间是什么时候被写入的

两个时间戳配合才能正确处理用户搬家这类状态覆写

2.5 程序性技能

经验转化为SOP,把多次成功的路径转化成程序技能skills,下次遇到同类任务可以直接调用skill,而不是从0规划