当前位置: 首页 > news >正文

智能体学习13——记忆管理(Memory Management)

文章目录

  • 第8章:记忆管理(Memory Management)
    • 一、核心概念:为什么智能体需要记忆?
    • 二、六种应用场景
    • 三、ADK 记忆架构:三大核心组件
    • 四、源码解构:Session 管理
      • 4.1 SessionService 三种实现
      • 4.2 消息处理的完整循环
    • 五、源码解构:State 管理
      • 5.1 State 的三种前缀
      • 5.2 方式一:output_key(简单方式)
      • 5.3 方式二:state_delta(标准方式)
      • 5.4 ⚠️ 反模式:不要直接修改 state
    • 六、源码解构:MemoryService 长期记忆
      • 6.1 MemoryService 两种实现
      • 6.2 长期记忆的工作流程
    • 七、源码解构:LangChain 记忆管理
      • 7.1 ChatMessageHistory(手动管理)
      • 7.2 ConversationBufferMemory(自动集成)
      • 7.3 LangGraph 长期记忆(BaseStore)
      • 7.4 三种长期记忆类型
    • 八、框架对比总结
    • 九、关键要点
    • 十、与前几章的联系

第8章:记忆管理(Memory Management)

来源:《智能体设计模式:智能系统构建实战指南》
学习日期:2026-04-07


一、核心概念:为什么智能体需要记忆?

一句话:没有记忆的智能体就是无状态的问答机器,无法保持上下文、学习经验或个性化响应。

打个比方

  • 无记忆智能体:像一个每天失忆的员工,每次对话都从零开始
  • 有记忆智能体:像一个经验丰富的助手,记得你的偏好、历史对话和任务进度

记忆的两大分类

类型类比存储位置生命周期容量
短期记忆工作记忆LLM 上下文窗口单次会话内有限(受窗口限制)
长期记忆长期知识库外部存储(向量数据库等)跨会话持久理论无限

短期记忆的局限

  • 上下文窗口容量有限,只能保留最近的信息
  • 长上下文模型(如 Gemini 2M)只是扩大了容量,本质仍是临时的
  • 每次处理全部上下文内容成本高、效率低
  • 会话结束后信息丢失

长期记忆的实现

  • 信息转换为数值向量存储
  • 通过语义搜索检索(而非关键词匹配)
  • 检索结果整合到短期上下文中,实现知识融合

二、六种应用场景

场景短期记忆用途长期记忆用途
聊天机器人保持对话连贯性回忆用户偏好和历史问题
任务型智能体跟踪前序步骤和当前进度访问不在当前上下文中的用户数据
个性化体验当前交互的即时调整存储用户偏好、历史行为
学习与提升当前任务的即时反馈保存成功策略、错误和新知识
信息检索(RAG)当前查询上下文知识库中的文档和数据
自主系统即时环境感知地图、路线、通用环境知识

三、ADK 记忆架构:三大核心组件

ADK 通过三个核心概念管理记忆:

┌─────────────────────────────────────────────┐ │ Memory(记忆) │ │ 可检索的信息仓库(跨会话) │ │ 管理:MemoryService │ ├─────────────────────────────────────────────┤ │ Session(会话) │ │ 单个聊天线程 │ │ 包含:events + state │ │ 管理:SessionService │ ├─────────────────────────────────────────────┤ │ State(临时数据) │ │ 会话内的动态数据字典 │ │ 前缀:user: / app: / temp: │ └─────────────────────────────────────────────┘

四、源码解构:Session 管理

4.1 SessionService 三种实现

# 1. 内存存储(测试用,不持久化)fromgoogle.adk.sessionsimportInMemorySessionService session_service=InMemorySessionService()# 2. 数据库存储(生产环境,可靠持久化)fromgoogle.adk.sessionsimportDatabaseSessionService db_url="sqlite:///./my_agent_data.db"session_service=DatabaseSessionService(db_url=db_url)# 3. Vertex AI 云端(大规模生产部署)fromgoogle.adk.sessionsimportVertexAiSessionService session_service=VertexAiSessionService(project="your-gcp-project-id",location="us-central1")

源码解读

  • SessionService是会话生命周期管理器,负责创建、恢复、记录、终止会话
  • 三种实现的区别在于持久化能力:内存 → SQLite → GCP 云端
  • 选择依据:测试用内存,生产用数据库或云端

4.2 消息处理的完整循环

收到消息 → Runner 通过 SessionService 获取/创建 Session → 智能体利用 Session 的上下文(state + events)处理消息 → 生成响应,可能更新 state → Runner 封装为 Event → session_service.append_event() 记录事件并更新 state → Session 等待下一条消息

关键理解:每次消息交换都是一个完整的"读取-处理-写入"循环,append_event是唯一的官方状态更新入口。


五、源码解构:State 管理

5.1 State 的三种前缀

前缀作用域生命周期示例
无前缀当前会话会话结束后丢失{"task_status": "active"}
user:用户级跨会话共享"user:login_count"
app:应用级所有用户共享"app:global_config"
temp:本轮处理不持久化"temp:validation_needed"

5.2 方式一:output_key(简单方式)

fromgoogle.adk.agentsimportLlmAgentfromgoogle.adk.sessionsimportInMemorySessionServicefromgoogle.adk.runnersimportRunnerfromgoogle.genai.typesimportContent,Part greeting_agent=LlmAgent(name=
http://www.jsqmd.com/news/603923/

相关文章:

  • 2026毕业论文降AI工具指南:实测4款高通过率方案
  • STM32F103C8T6内存告急?手把手教你用OV7725摄像头实现HSL颜色识别与数据压缩
  • 团队知识库建设:如何让经验不随人走?
  • 不止于安装:ProjectChrono初体验,用C++写你的第一个多体动力学仿真程序
  • 从GIMMS-3G+到FVC地图:一个完整的数据处理与可视化实战
  • AI Agent在医疗诊断辅助中的突破
  • 017 华夏之光永存:华为破局(架构师级)- 多设备、多版本鸿蒙碎片化兼容的底层设计思路
  • 在VMware Workstation 17上,手把手教你搭建华为FusionCompute 6.5.1实验环境(CNA+VRM保姆级教程)
  • AI拍照解题技术新突破,传音控股相关研究成果入选计算机视觉顶会CVPR 2026
  • 基于PMSM的改进滑膜控制与传统控制仿真模型比较研究
  • 3大突破!网盘加速工具让全体网民告别下载等待
  • HiFloat8浮点数据格式:既要又要之路
  • OpenCV实战:5分钟搞定人脸姿态估计(附PnP问题完整代码)
  • LM358运放呼吸灯电路实战:从原理图到PCB布局的完整设计指南
  • 三维空间智能体与空间计算体系:专家分角色提问模拟(公安 / 学术 / 工程三类)
  • 网络工程毕设救星:基于eNSP的无线校园网仿真项目,从需求分析到安全测试的完整复盘
  • 传统PRD玩不转!AI Agent产品PRD这样写,开发直呼真香
  • 利用快马平台快速生成openclaw机器人抓取系统交互式架构图原型
  • 基于STM32LXXX的数字电位器(AD5160BRJZ50-RL7)驱动应用程序设计
  • 英雄联盟回放分析工具ROFL-Player:无需启动游戏即可深度解析比赛数据
  • 【ROS2】IDL模块化设计:从单一文件到功能拆分的工程实践
  • FPGA开发实战:手把手教你用Verilog实现MDIO接口驱动(含完整时序仿真)
  • 别再手动复制网页了!用Crawl4AI+Python,5分钟搞定网页转Markdown(附完整代码)
  • 如何强制调整任意窗口大小:WindowResizer终极使用指南
  • 通道池化注意力机制改进YOLOv26空间特征校准与表达能力提升
  • 告别重复造轮子:用快马一键生成标准化机器学习jupyter notebook模板
  • BIRCH vs CURE:百万级数据聚类该选谁?参数调优与避坑指南
  • C++的std--ranges中的类型用户
  • AAAI大会:HiFloat8高效训推技术报告——HiFloat8:一种用于高效训练和推理的新型 8 位浮点数据格式
  • 电磁屏蔽材料选型指南:从原理到实战应用