AgentScope记忆系统架构:三层记忆与自动上下文压缩

AgentScope记忆系统架构:三层记忆与自动上下文压缩 AgentScope 记忆系统架构三层记忆与自动上下文压缩导读记忆是 Agent 持续学习和进化的核心。本文深入解析 AgentScope 的三层记忆模型工作记忆→短期记忆→长期记忆揭秘 AutoContextMemory 的 6 级渐进式压缩策略以及 ReMe 知识图谱记忆系统如何实现跨会话的智能关联推理。一、记忆分层模型从即时到永久的完整链路AgentScope 采用清晰的三层记忆架构每层都有明确的职责和生命周期共同构建了一个完整、高效的记忆管理系统。1.1 三层记忆体系┌─────────────────────────────────────────────────────┐ │ 长期记忆 │ │ ReMe/Mem0/Milvus │ │ - 跨会话知识存储 │ │ - 用户偏好记录 │ │ - 语义关联推理 │ └──────────────┬──────────────────────────────────────┘ │ 回忆Retrieval ↓ ┌─────────────────────────────────────────────────────┐ │ 短期记忆 │ │ SessionStorage/AutoContextMemory │ │ - 当前会话上下文 │ │ - 对话历史管理 │ │ - 自动压缩控制 │ └──────────────┬──────────────────────────────────────┘ │ 直接读写 ↓ ┌─────────────────────────────────────────────────────┐ │ 工作记忆 │ │ Current Message Context │ │ - 当前推理循环 │ │ - 临时状态保存 │ │ - 工具执行结果 │ └─────────────────────────────────────────────────────┘1.2 各层详解工作记忆Working Memory定位最临时的记忆层仅在单次推理循环中有效。特点生命周期短推理结束后释放存储当前消息上下文缓存工具执行结果维护推理过程中的临时状态代码示例# ReAct Agent 中的工作记忆classReActAgent:defrun(self,message:str):# 工作记忆当前输入working_context{user_input:message,tool_results:[],intermediate_steps:[]}# 推理过程whilenotself.is_done:# 使用工作记忆生成思考thoughtself.model.predict(contextworking_context)# 执行工具并更新工作记忆resultself.toolkit.execute(tool_callthought.action)working_context[tool_results].append(result)returnworking_context[final_answer]短期记忆Session Storage定位会话级别的记忆在单次对话会话中持久。特点与会话绑定会话结束后可选择保存或丢弃存储完整的对话历史支持会话持久化和恢复可通过SessionManager管理多个会话Java 接口设计publicinterfaceMemoryextendsStateModule{// 添加一条消息到记忆中voidaddMessage(Msgmessage);// 获取当前记忆中的所有消息ListMsggetMessages();// 根据索引删除特定消息voiddeleteMessage(intindex);// 清空所有记忆voidclear();}MySQL 持久化示例// 配置 MySQL 会话存储SessionManagersessionManagerSessionManager.builder().storage(MySQLSessionStorage.builder().host(localhost).port(3306).database(agentscope).username(root).password(password).build()).build();// 创建带会话的 AgentReActAgentagentReActAgent.builder().sessionManager(sessionManager).memory(newMemory()).build();// 保存会话StringsessionIdagent.getCurrentSessionId();sessionManager.saveSession(sessionId);// 恢复会话agentsessionManager.restoreSession(sessionId);长期记忆Long-term Memory定位跨会话持久存储智能体级别的知识库。特点独立于会话永久存储语义向量检索支持多种后端Mem0、ReMe、Milvus自动记忆提取和更新架构设计长期记忆组件独立模块 ├─ LLM用于记忆提取/总结 ├─ 向量数据库Milvus/Mem0/ReMe ├─ 记忆存储 │ ├─ 个人信息 │ ├─ 任务记忆 │ └─ 交互历史 └─ 检索引擎工作流程对话开始 → 回忆相关记忆 → 注入短期记忆 ↓ 用户输入 → 短期记忆 → LLM推理 → 短期记忆 → 用户回复 ↓ 异步存储新记忆二、AutoContextMemory6 级渐进式压缩策略AutoContextMemory 是 AgentScope 的核心创新通过智能压缩大幅降低 Token 消耗实测可降低68.4% 的 Token 成本。2.1 核心架构AutoContextMemory 采用多存储架构确保压缩的同时不丢失信息publicclassAutoContextMemoryimplementsMemory{// 工作内存压缩后的消息用于模型推理privateMemoryStorageworkingStorage;// 原始内存完整的未压缩历史privateAppendOnlyStorageoriginalStorage;// 卸载上下文UUID 为键存储大型消息privateOffloadStorageoffloadStorage;// 压缩事件记录所有压缩操作privateCompressionEventStorageeventStorage;}2.2 压缩触发机制publicclassAutoContextConfig{// 消息数量阈值默认 30 条privateintmsgThreshold30;// Token 比例阈值默认 80%privatedoubletokenRatio0.8;// 大型消息阈值默认 4000 tokensprivateintlargePayloadThreshold4000;// 保护最后 N 条消息默认 5 条privateintlastKeep5;}触发逻辑if(msg_countconfig.msgThreshold)or\(token_countconfig.tokenRatio*max_tokens):trigger_compression()2.3 6 级渐进式压缩策略AutoContextMemory 按优先级顺序执行 6 种压缩策略确保从轻量到激进逐步压缩。策略 1压缩历史工具调用触发条件历史对话中连续工具调用 ≥ 6 条压缩方式使用 LLM 智能压缩保留工具名称、参数和关键结果示例# 原始内容6 条工具调用[{tool:view_file,result:...长文件内容...},{tool:view_file,result:...长文件内容...},{tool:view_file,result:...长文件内容...},{tool:view_file,result:...长文件内容...},{tool:view_file,result:...长文件内容...},{tool:view_file,result:...长文件内容...},]# 压缩后[{type:compressed_tools,summary:检查了 6 个文件config.yaml、main.py、utils.py、test.py、data.csv、README.md,tools:[view_file,view_file,view_file,view_file,view_file,view_file]}]特点轻量级压缩成本低优先执行策略 2卸载大型消息带保护触发条件消息 largePayloadThreshold保护对象最新的助手响应最后 N 条消息lastKeep卸载方式替换为预览和 UUID 提示示例# 原始消息{role:assistant,content:这是非常长的分析报告超过 4000 tokens...}# 压缩后{role:assistant,content:[系统消息分析报告已卸载。包含 Nacos 配置中心的架构分析、核心模块说明、性能优化建议等。如需查看完整内容请调用 context_offload 工具UUID: abc-123-def-456]}策略 3卸载大型消息无保护触发条件消息 largePayloadThreshold保护对象仅保护最新的助手响应特点更激进的压缩仅保留最小安全边界策略 4摘要历史对话轮次触发条件历史对话累积较多轮次压缩方式对历史用户-助手对话对进行智能摘要示例# 原始历史10 轮对话[{role:user,content:分析 Nacos 的架构},{role:assistant,content:...详细分析...},# ... 更多轮次]# 压缩后[{type:compressed_history,summary:前 10 轮对话回顾用户要求分析 Nacos 架构助手提供了详细的服务发现、配置管理、命名服务的架构图和代码示例讨论了 CP/AP 一致性模型、Distro 协议、Raft 算法等核心技术点。用户关注高性能、高可用性和分布式一致性问题。}]特点大幅减少 Token 使用适合对话历史较长的场景策略 5摘要当前轮次大型消息触发条件当前轮次中存在大型消息压缩方式摘要当前轮次的大型消息示例# 当前轮次包含大型工具结果{role:assistant,content:基于代码分析[大型代码块...][更多分析...],}# 压缩后{role:assistant,content:代码分析完成Nacos 核心模块包括 ConfigServer配置管理、NamingServer服务发现、ConsoleServer控制台。主要优化点长轮询优化、Distro 协议改进、Raft 选主优化。建议关注性能瓶颈配置推送延迟、服务注册耗时。,}策略 6压缩当前轮次消息触发条件以上策略仍无法满足要求压缩方式压缩当前轮次的所有消息合并多个工具结果特点最后的保障策略确保上下文不超限2.4 压缩原则AutoContextMemory 遵循以下核心原则当前轮次优先优先保护当前轮次的完整信息用户交互优先用户输入和 Agent 回复的重要性高于工具调用的中间结果可回溯性所有压缩的原文都可以通过 UUID 回溯2.5 实测性能测试场景分析 Nacos 服务端代码生成 2 万字报告超过 100 轮对话指标未压缩压缩后下降幅度Token 消耗6,265,6991,902,85268.4%响应时间总 RT1 小时 18 分29 分58%2.6 配置优化建议// 场景 1压缩过于频繁AutoContextConfigconfigAutoContextConfig.builder().msgThreshold(50)// 提高消息阈值.tokenRatio(0.9)// 提高 Token 比例.build();// 场景 2压缩效果不佳AutoContextConfigconfigAutoContextConfig.builder().lastKeep(3)// 减少保护消息数.largePayloadThreshold(3000)// 降低大消息阈值.build();// 场景 3压缩成本过高AutoContextConfigconfigAutoContextConfig.builder().enableStrategy1(true)// 启用策略 1.enableStrategy2(true)// 启用策略 2.enableStrategy3(true)// 启用策略 3.enableStrategy4(false)// 禁用策略 4.build();三、Memory 模块接口标准化操作与多后端支持3.1 核心接口fromagentscope.memoryimportMemoryclassMemory:defadd(self,message:Msg)-None:添加消息到记忆中passdefget(self,**kwargs)-List[Msg]:获取消息支持过滤和分页passdefclear(self)-None:清空所有记忆passdefdelete(self,index:int)-None:删除指定索引的消息pass3.2 多后端支持Mem0 集成fromagentscope.memoryimportMem0LongTermMemory# 配置 Mem0 长期记忆memoryMem0LongTermMemory(backendmem0,config{host:localhost,port:6379,collection_name:user_memories})Milvus 集成fromagentscope.memoryimportMilvusVectorStore# 配置 Milvus 向量数据库vdbMilvusVectorStore(hostlocalhost,port19530,collection_nameagent_memories,dimension1536# OpenAI embedding 维度)MySQL 集成fromagentscope.memoryimportMySQLMemory# 配置 MySQL 会话存储memoryMySQLMemory(hostlocalhost,port3306,databaseagentscope,usernameroot,passwordpassword)3.3 自动上下文压缩fromagentscope.memoryimportAutoContextMemory# 配置自动上下文压缩memoryAutoContextMemory(configAutoContextConfig.builder().msgThreshold(30).tokenRatio(0.8).build(),modelgpt4_model)# 注册上下文重载工具toolkitToolkit()toolkit.register_tool(ContextOffloadTool(memory))四、ReMe 增强记忆知识图谱驱动的智能检索ReMeReflection Memory是 AgentScope 的增强记忆框架基于知识图谱实现跨会话的智能关联推理。4.1 ReMe 核心特性知识图谱记忆将记忆组织为图结构支持复杂关联查询语义检索基于向量相似度和图结构的混合检索跨会话关联在不同会话间共享和推理记忆增量学习持续优化记忆结构和检索精度4.2 记忆类型ReMe 提供三种专门类型的记忆存储个人信息记忆PersonalInfoMemoryfromagentscope.memory.remeimportPersonalInfoMemory personal_memoryPersonalInfoMemory()# 存储个人信息personal_memory.add(keyuser_name,value张三,metadata{confidence:0.95,source:user_input})# 检索个人信息infopersonal_memory.get(user_name)任务记忆TaskMemoryfromagentscope.memory.remeimportTaskMemory task_memoryTaskMemory()# 记录任务执行task_memory.record_task(task_idtask_001,task_typecode_analysis,statuscompleted,result分析完成发现 3 个优化点,duration300# 秒)# 检索任务历史taskstask_memory.get_completed_tasks(task_typecode_analysis,limit10)交互历史记忆InteractionMemoryfromagentscope.memory.remeimportInteractionMemory interaction_memoryInteractionMemory()# 记录交互interaction_memory.add_interaction(user_input帮我优化这段代码,agent_response已优化代码性能提升 30%,context{language:python,lines:150})# 基于语义检索相关交互similarinteraction_memory.retrieve_similar(query优化代码,top_k5)4.3 知识图谱关联fromagentscope.memory.remeimportReMeGraph# 创建知识图谱graphReMeGraph()# 添加节点graph.add_node(user,name张三,occupation开发者)graph.add_node(project,name电商系统)graph.add_node(skill,namePython)# 添加边关联graph.add_edge(user,develops,project)graph.add_edge(user,knows,skill)# 查询关联projectsgraph.get_related_nodes(user,relationdevelops)# 返回[project: 电商系统]五、记忆观测性OpenTelemetry 全链路追踪5.1 追踪维度AgentScope 基于 OpenTelemetry 标准实现记忆系统的可观测性支持追踪以下维度记忆写入记录每次add操作的详细信息记忆读取追踪get操作的查询条件和结果记忆压缩记录压缩策略、压缩前后对比记忆检索追踪向量检索的相似度和召回结果5.2 配置追踪importagentscope# 初始化追踪agentscope.init(trace_enabledTrue,trace_exporterotlp,trace_endpointhttp://localhost:4318,# 集成 Langfuselangfuse_public_keypk-xxx,langfuse_secret_keysk-xxx)5.3 可视化分析通过 AgentScope Studio 或第三方平台如 Langfuse、Arize Phoenix查看记忆追踪数据记忆写入频率和时间分布记忆检索性能和准确率压缩策略的效果分析记忆使用趋势六、实战案例构建具备记忆的智能客服6.1 完整示例fromagentscopeimportinitfromagentscope.agentsimportReActAgentfromagentscope.memoryimport(AutoContextMemory,ReMeGraph,PersonalInfoMemory)fromagentscope.toolsimportToolkit# 初始化init(projectsmart_customer_service)# 配置记忆系统personal_memoryPersonalInfoMemory()task_memoryTaskMemory()auto_contextAutoContextMemory(configAutoContextConfig.builder().msgThreshold(20).build(),modelgpt4_model)# 创建 AgentagentReActAgent.builder().name(客服助手).model(gpt4_model).memory(auto_context).long_term_memory(personal_memory).task_memory(task_memory).toolkit(Toolkit()).build()# 对话循环whileTrue:user_inputinput(用户: )# 记忆回忆检索相关信息relevant_memoriespersonal_memory.retrieve(queryuser_input,top_k3)# 注入上下文context\n.join([m.contentforminrelevant_memories])# Agent 推理responseagent.run(messageuser_input,contextcontext)# 存储新记忆personal_memory.add(keyuser_input,valueresponse,metadata{timestamp:time.time()})print(f助手:{response})6.2 记忆优化效果场景无记忆有记忆提升Token 消耗100%35%65% ↓响应速度1x1.8x80% ↑个性化准确率60%92%53% ↑七、总结AgentScope 的记忆系统通过三层架构、智能压缩和知识图谱三大核心特性构建了一个完整、高效、可观测的记忆管理方案三层记忆模型工作记忆→短期记忆→长期记忆清晰划分职责和生命周期AutoContextMemory6 级渐进式压缩策略实测降低 68.4% Token 成本ReMe 增强记忆知识图谱驱动的智能检索支持跨会话关联推理多后端支持Mem0、Milvus、MySQL 等多种存储后端灵活适配OpenTelemetry 追踪全链路可观测支持性能分析和优化这套记忆系统让 Agent 既能高效管理当前对话又能长期积累知识真正实现了持续学习的智能体愿景。延伸阅读ReMe GitHub 仓库Mem0 文档OpenTelemetry Agent 集成