Overview
Long-term memory lets an agent store and retrieve durable information across sessions — user preferences, past decisions, and knowledge that should persist beyond a single conversation. In AgentScope, memory extraction and storage services (such as mem0 and ReMe) serve as long-term memory backends, integrated into agents as middleware. Each memory middleware is aMiddlewareBase subclass that can hook into any position of the agent lifecycle as needed. For example:
on_reply— search the store before a reply and write the new exchange back afterward.on_system_prompt— advertise memory tools to the model.list_tools— contribute agent-callable memory tools, such assearch_memory/add_memory.
Agent(middlewares=[...]), and you can compose it with any other middleware.
AgentScope currently ships the following long-term memory backend, with more (e.g. ReMe) planned:
Mem0
Mem0Middleware is a drop-in long-term memory backend powered by mem0. It works with both mem0.AsyncMemory (open-source) and mem0.AsyncMemoryClient (hosted Platform). With mem0.AsyncMemory (open-source), it can route mem0’s own memory extraction and embedding through your existing AgentScope models — so mem0 needs no separate provider key.
Installation
Mem0Middleware’s dependencies are available as an optional extra in AgentScope:
Quick start
The fastest path is to pass your AgentScope chat and embedding models; the middleware builds an open-source mem0 store internally and wires both extraction and embedding through them.Mem0Middleware contributes its search_memory / add_memory tools through list_tools(), which the agent does not call automatically. To make the tools available to the agent, collect them yourself and pass them into the toolkit — Toolkit(tools=await mw.list_tools()). In static_control mode list_tools() returns an empty list.Control modes
Themode parameter decides how the agent interacts with mem0. It defaults to "both", matching AgentScope 1.x’s ReActAgent.long_term_memory_mode.
Construction paths
Mem0Middleware supports three ways to wire up the mem0 backend:
- AgentScope models
- Models + custom config
- Pre-built client
Pass AgentScope models and let the middleware build an open-source
AsyncMemory internally (mem0’s default Qdrant store). The embedding model’s dimensions must match the vector store (the default Qdrant expects 1536).Key parameters
Agent-callable tools
Inagent_control and both modes, the middleware contributes two tools the model can invoke on demand:
search_memory(keywords, limit=5)— retrieves memories using a list of short, targeted keywords. Each keyword is issued as an independent query; results are merged and deduplicated.add_memory(thinking, content)— records durable facts. Onlycontent(a list of standalone sentences) is persisted to mem0;thinkingstays in the transcript for auditability.
user_id / agent_id directly from the middleware instance, so they require no extra wiring beyond adding them to the toolkit.