概述
记忆负责管理 AgentScope 中智能体的对话历史和上下文。AgentScope 提供两种类型的记忆:- 短期记忆 (Short-term Memory):存储当前会话的对话历史,需要结合 Session 进行持久化和恢复
- 长期记忆 (Long-term Memory):存储跨会话的用户偏好和知识,依赖外部记忆组件(如 Mem0、ReMe)自动持久化
记忆架构
在 ReActAgent 中,短期记忆与长期记忆协同工作:- 短期记忆:存储当前会话消息,提供给 LLM 作为上下文,支持推理循环
-
长期记忆(独立组件):
- 内部集成 LLM(记忆提取/总结)和向量数据库(存储/检索)
- 召回:对话开始时,召回相关记忆注入短期记忆
- 存储:回复用户后,异步存入长期记忆进行提取和持久化
Memory 接口
所有短期记忆实现都扩展Memory 接口:
Memory 继承自 StateModule,支持状态序列化和反序列化,可结合 SessionManager 实现持久化。
短期记忆 (Short-term Memory)
InMemoryMemory
默认的短期记忆实现,在内存中存储消息。 特点:- 简单的内存存储
- 没有上下文管理能力,消息会无限增长
- 适用于简单短对话场景
短期记忆持久化
短期记忆需要结合SessionManager 实现持久化,以支持重启恢复会话。
agentscope-examples/documentation/quickstart/src/main/java/io/agentscope/examples/quickstart/SessionExample.java
长期记忆 (Long-term Memory)
LongTermMemory 接口
长期记忆用于存储和召回跨会话的用户偏好和知识:STATIC_CONTROL:静态控制模式,框架自动在推理前召回记忆、回复后记录记忆AGENT_CONTROL:Agent 控制模式,通过工具让 Agent 自主决定何时记录和召回BOTH:同时启用两种模式
Mem0LongTermMemory
基于 Mem0 的长期记忆实现。背景说明
Mem0 的自建部署和 Platform 提供的 OpenAPI 接口不一致(端点路径和响应格式不同)。Mem0LongTermMemory 内部提供了兼容适配机制,通过 apiType 参数指定 Mem0 部署类型,自动选择正确的 API 端点和响应解析方式。
使用示例
Platform Mem0(默认):apiType:可选参数,指定 Mem0 部署类型Mem0ApiType.PLATFORM(默认):使用 Platform Mem0 的 API 端点Mem0ApiType.SELF_HOSTED:使用自建 Mem0 的 API 端点
apiBaseUrl:Mem0 服务的基地址- Platform Mem0:通常为
https://api.mem0.ai - 自建 Mem0:通常为
http://localhost:8000或您的服务器地址
- Platform Mem0:通常为
apiKey:API 密钥(可选)- Platform Mem0:必需
- 自建 Mem0:取决于您的服务配置,可能不需要
agentscope-examples/documentation/advanced/src/main/java/io/agentscope/examples/advanced/Mem0Example.java
运行示例:
ReMeLongTermMemory
基于 ReMe 的长期记忆实现。 使用示例:agentscope-examples/documentation/advanced/src/main/java/io/agentscope/examples/advanced/ReMeExample.java
运行示例:
BailianLongTermMemory
基于 百炼记忆库 的长期记忆实现。 使用示例:apiKey:阿里云 DashScope API 密钥(必需)userId:用户 ID(必需)memoryLibraryId:百炼记忆库 ID(可选)projectId:百炼记忆片段规则 ID(可选)profileSchema:百炼用户画像规则 ID(可选)
agentscope-examples/documentation/advanced/src/main/java/io/agentscope/examples/advanced/BailianMemoryExample.java
运行示例: