agno-3-记忆系统 记忆是什么在智能体Agent的语境下记忆Memory指的是智能体存储、回忆并利用过往交互信息的能力。没有记忆的智能体每次对话都像“第一次见面”无法从历史中学习也无法建立持续的关系。记忆系统要解决的正是这个问题。它让智能体从“无状态工具”进化为“有状态的伙伴”。有了记忆智能体才能提供个性化体验记住用户的名字、偏好和习惯。实现连续对话在多轮对话中能自动参考之前的聊天内容。随时间成长通过每次交互学习变得越来越懂用户。三大核心记忆类型Agno 将“记忆”分为三种类型协同工作以提供完整的上下文1.会话存储 (Session Storage)这是短期记忆是 Agent 进行多轮对话的基础。存储什么完整的聊天历史和当前的会话状态Session State。如何工作每次对话后系统都会自动将新的消息和状态保存到数据库。当用户继续对话时Agent 会读取这些历史从而理解上下文。解决的问题确保智能体在一个会话中不会“失忆”能进行连贯的对话。2.用户记忆 (User Memories)这是长期记忆是真正意义上的“记忆”目的是构建用户画像实现个性化。存储什么从对话中提取的关于用户的事实、洞察和偏好。两种管理模式自动记忆 (Automatic Memory)通过update_memory_on_runTrue启用。Agno 在后台自动提取并存储记忆无需干预。适合大多数场景。智能体记忆 (Agentic Memory)通过enable_agentic_memoryTrue启用。Agent 自己通过工具Tools决定何时创建、更新或删除记忆。适合需要精细控制的复杂场景。解决的问题让 Agent 能“记住”用户提供真正个性化的交互体验。3.会话摘要 (Session Summaries)这是对长期记忆的优化用于管理过长的对话历史。存储什么对冗长对话历史的浓缩摘要。如何工作当对话历史过长、可能超出模型上下文限制时Agent 可以生成并存储摘要。解决的问题节省 Token 消耗并在长对话中保持关键上下文不丢失。存储架构与工作机制Agno 的记忆系统通过“存储后端”实现数据持久化。核心组件Agent: 业务逻辑的载体。Memory(v2):记忆管理中心负责创建、检索、更新和删除记忆。MemoryManager: 执行记忆管理任务的实际工作者。Storage(Storage Backend):数据持久化层与数据库交互。数据模型与存储内容使用持久化存储时系统主要存储用户记忆 (User Memories)关于用户的洞察和事实。最后更新时间戳 (Last Updated Timestamps)追踪记忆的修改时间。记忆 ID (Memory IDs)每条记忆的唯一标识符。两种记忆管理模式Agno 提供两种模式让智能体管理用户记忆自主模式 (Agentic Memory)通过enable_agentic_memoryTrue启用。智能体获得管理记忆的工具可自主决定何时创建、检索或删除记忆。这是官方推荐的起点。被动模式 (Automatic Memory)通过enable_user_memoriesTrue启用。MemoryManager在每次用户消息后自动运行提取并存储记忆。支持的存储后端Agno 支持 13 种以上的数据库通过插件式接口接入。主要分为开发/测试SqliteDb或InMemoryDb无需配置数据不持久。生产环境PostgresDb。记忆隔离机制Agno 的所有记忆包括长期记忆和会话历史都严格与user_id绑定。只要在调用时传入不同的user_id系统就能确保不同用户的数据完全隔离。核心隔离机制user_id是 Agno 中数据隔离的第一道也是最关键的一道防线。记忆的作用域用户的长期记忆User Memories和会话记录都与user_id绑定。在查询或存储记忆时系统都会通过user_id进行过滤。关键实践在生产环境中必须为每个用户提供唯一的user_id例如你系统中的用户ID或邮箱。如果忽略这一点所有用户的数据都会混在一起造成严重的数据泄露。会话层面的隔离如果说user_id是“人”的维度那么session_id就是“对话”的维度。作用session_id用于隔离同一个用户的不同对话线程。使用在同一个user_id下不同的session_id代表着独立的会话历史。它们之间不会互相干扰但会共享该用户的长期记忆。agent_id与team_id会话归属与组件标识agent_id和team_id主要用于标识和区分不同的组件Agent 或 Team并作为会话 (Session) 的归属标识。agent_id标识一个特定的 Agent 实例。在AgentSession数据模型中agent_id是一个核心字段用于记录会话属于哪个 Agent。team_id标识一个特定的 Team 实例。在TeamSession数据模型中team_id是核心字段。当一个 Agent 作为 Team 的成员时其team_id会被自动关联。它们隔离了什么agent_id和team_id主要用于在数据库层面区分和归类不同组件产生的会话数据。例如它们能确保在查询某个 Agent 的历史会话时不会错误地返回另一个 Agent 的会话。从这个角度看它们提供了一种组件级别的数据隔离。代码示例会话记忆案例from agno.agent import Agent from agno.db.sqlite import SqliteDb from dotenv import load_dotenv from agno.models.deepseek import DeepSeek load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) db SqliteDb(db_filesession_store.db) agent Agent( modeldeepseek, dbdb, # 注入存储后端 instructions[你是一个智能助手], markdownTrue, add_history_to_contextTrue, # 将历史加入上下文关键 num_history_runs3, # 包含最近3轮对话 user_idxiaoxiaoer ) resp agent.run(你好,我是小小儿你是谁) print(resp.content) resp agent.run(我是谁) print(resp.content)用户记忆自动模式from agno.agent import Agent from agno.db.sqlite import SqliteDb from dotenv import load_dotenv from agno.models.deepseek import DeepSeek load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) db SqliteDb(db_filesession_store.db) # 2. 创建 Agent 并启用自动记忆 agent Agent( modeldeepseek, dbdb, update_memory_on_runTrue, # 自动提取记忆 user_idxiaoxiaoer, instructions[你是一个智能助手], ) resp agent.run(你好,我是小小儿我喜欢滑雪跑步你是谁) print(resp.content) resp agent.run(我有哪些爱好) print(resp.content)用户记忆自主模式from agno.agent import Agent from agno.db.sqlite import SqliteDb from dotenv import load_dotenv from agno.models.deepseek import DeepSeek load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) db SqliteDb(db_filesession_store.db) # 2. 创建 Agent 并启用自动记忆 agent Agent( modeldeepseek, dbdb, enable_agentic_memoryTrue, # 自动提取记忆 user_idxiaoxiaoer, instructions[你是一个智能助手], ) resp agent.run(你好,我是小小儿我喜欢滑雪跑步你是谁) print(resp.content) resp agent.run(我有哪些爱好) print(resp.content)摘要记忆from agno.agent import Agent from agno.db.sqlite import SqliteDb from agno.session import SessionSummaryManager from dotenv import load_dotenv from agno.models.deepseek import DeepSeek load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) db SqliteDb(db_filesession_store.db) # 可选自定义摘要管理器使用默认也可 summary_manager SessionSummaryManager( modeldeepseek, # 用于生成摘要的模型 ) # 2. 创建 Agent 并启用自动记忆 agent Agent( modeldeepseek, dbdb, enable_session_summariesTrue, # 开启摘要 add_session_summary_to_contextTrue, # 默认 True将摘要放入上下文 session_summary_managersummary_manager, # 自定义摘要管理器 user_idxiaoxiaoer, instructions[你是一个智能助手], ) resp agent.run(你好,我是小小儿我喜欢滑雪跑步你是谁) print(resp.content) resp agent.run(我有哪些爱好) print(resp.content)三者如何协同工作层级作用依赖关系Storage存储完整的原始聊天记录和状态基础层Summary 和 Memory 都需要它Memory提取并存储用户画像可在 Storage 之上独立运行Summary压缩过长的历史生成摘要必须与 Storage 配合用于上下文注入from agno.agent import Agent from agno.db.sqlite import SqliteDb from dotenv import load_dotenv from agno.models.deepseek import DeepSeek load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) db SqliteDb(db_filesession_store1.db) agent Agent( modeldeepseek, dbdb, # 注入存储后端 instructions[你是一个智能助手], markdownTrue, #会话记忆 add_history_to_contextTrue, # 将历史加入上下文关键 num_history_runs3, # 包含最近3轮对话 # 用户记忆 enable_agentic_memoryTrue, # 自主模式 update_memory_on_runTrue, # 同时自动提取 # 会话摘要 enable_session_summariesTrue, add_session_summary_to_contextTrue, user_idxiaoxiaoer ) resp agent.run(你好,我是小小儿你是谁) print(resp.content) resp agent.run(我是谁) print(resp.content)

相关新闻

最新新闻

plsql笔记存储过程

plsql笔记存储过程

游标 cursor 定义 :游标 实际上是一个指针 指向 结果集的每一行数据,初始的时候 指向第一行数据作用 处理多行数据 ------for select语法declarecursor 游标名 is select语句;-------1 声明游标beginopen 游标名;-----------------------2 打开游标fe…

2026/8/29 7:06:19
极域电子教室控制专杀程序

极域电子教室控制专杀程序

功能介绍使用cmd的taskkill指令强制结束StudentMain.exe&#xff0c;达到脱离老师控制的目的。代码C代码&#xff08;最直观&#xff0c;最好&#xff09;#include<iostream> #include<windows.h> #include<sstream> using namespace std;int main() {ShowWi…

2026/8/29 7:06:19
C# UDP 广播通信

C# UDP 广播通信

一、UDP广播核心必考原理1.1 广播地址定义255.255.255.255&#xff1a;全局局域网广播地址&#xff0c;向该地址发送的数据包&#xff0c;局域网内所有监听对应端口的设备都能收到。1.2 UDP广播独有特性基于UDP无连接协议&#xff0c;无需握手、无需一对一绑定广播服务端不需要…

2026/8/29 7:06:19
MLIR中文翻译项目:系统梳理方言、Pass与代码生成全流程

MLIR中文翻译项目:系统梳理方言、Pass与代码生成全流程

简介&#xff1a;编译器中间表示&#xff08;IR&#xff09;是连接高级语言与目标机器的桥梁&#xff0c;传统单层IR已难以应对AI加速器、GPU等异构计算的优化需求。MLIR作为多级中间表示框架&#xff0c;通过方言&#xff08;Dialect&#xff09;机制让不同抽象层次的IR协同工…

2026/8/29 7:06:19
钉钉面试全流程复盘:技术考察、算法手撕与HR面细节

钉钉面试全流程复盘:技术考察、算法手撕与HR面细节

前段时间刚走完阿里钉钉事业部的完整面试流程&#xff0c;从内推到收到意向书大概持续了三周半。整体感受是&#xff1a;钉钉技术团队在阿里的体系里属于典型的B端业务导向&#xff0c;面试风格既保留了互联网大厂通用的算法和八股考察&#xff0c;又非常看重你对业务场景的理解…

2026/8/29 7:06:19
AI应用工程化:从分析式思维到稳定交付的完整实践路线

AI应用工程化:从分析式思维到稳定交付的完整实践路线

实际开发 AI 应用时&#xff0c;真正决定项目走多远的往往不是某个模型的效果参数&#xff0c;而是一套稳定的分析式工作方法。这里说的“分析式垄断”&#xff0c;并不是指某家厂商垄断了 AI 技术&#xff0c;而是指当前 AI 工程实践中的一种事实&#xff1a;把模糊需求拆成可…

2026/8/29 7:01:19