☰
Mem0 MCP Server多实体记忆管理:user/agent/app/run四级作用域与实体清理进阶
2026/11/5 3:43:54 网站建设 项目流程

【免费下载链接】mem0-mcp

项目地址:https://gitcode.com/gh_mirrors/me/mem0-mcp
点击查看免费下载

mem0-mcp 是一个把 Mem0 官方记忆 API 封装成 Model Context Protocol(MCP)服务的开源项目,让 Claude Desktop、Cursor 等客户端都能对 AI 进行长期记忆管理。本文重点讲进阶用法:如何用好 user_id、agent_id、app_id、run_id 四级实体作用域来组织记忆,以及如何安全地完成实体级清理(delete_all_memories 与 delete_entities 的区别与正确姿势)。

快速认识 mem0-mcp 的工具箱

mem0-mcp 把 Mem0 的记忆能力暴露为 9 个 MCP 工具,核心工具一览:

工具作用是否涉及实体作用域
add_memory写入一段事实、偏好或对话✅ 四级作用域全部支持
search_memories语义搜索记忆✅ 通过 filters 过滤
get_memories分页列出记忆✅ 通过 filters 过滤
get_memory/update_memory/delete_memory按memory_id操作单条❌ 操作单条记录
delete_all_memories清空某个作用域下的全部记忆(保留实体)✅
delete_entities删除实体本身并级联删除其记忆✅
list_entities查看当前有哪些 user/agent/app/run—

工具定义位于 server.py,参数模型统一声明在 schemas.py。

user/agent/app/run 四级作用域:给记忆打上"坐标系"

Mem0 用四个可选标识符来定位一条记忆属于谁,它们可以自由组合,就像给记忆打上坐标系:

作用域含义典型用法
user_id哪个用户每个登录用户一份记忆空间
agent_id哪个AI Agent区分"客服助手"与"写作助手"
app_id哪个应用多应用共用一套记忆时的隔离
run_id哪次运行/会话单次任务批次的临时记忆

add_memory写入时,四个字段都是可选参数,但至少要有一个(user_id 若未显式给出且也没指定 agent_id/run_id,会自动使用服务端默认值)。

一个常见的分层设计:

user_id = alice # 人的维度 app_id = mem0-mcp-demo # 应用的维度 agent_id = support-bot # 智能体的维度 run_id = session-2024-01 # 单次会话

这样查询时可以只过滤其中一两层,比如"alice 在 support-bot 下所有的记忆",而无需关心具体是哪次 run。

写入记忆:add_memory 的作用域用法

调用add_memory时,把目标作用域一并传入即可。服务端会自动处理一个细节:当只给了text没给messages时,text会被转换成一条role=user的对话再入库(见 server.py 中add_memory的实现)。

{ "text": "用户偏好深色模式,回复要简短", "user_id": "alice", "agent_id": "support-bot", "app_id": "mem0-mcp-demo", "run_id": "session-2024-01" }

💡 若配置了MEM0_DEFAULT_USER_ID环境变量,则user_id可省略,服务端会自动补上默认值(默认mem0-mcp)。

检索记忆:filters 是作用域管理的核心

search_memories与get_memories都支持结构化filters,且服务端会自动注入user_id(未显式提供时),防止跨用户读取。常用过滤器写法(摘自 server.py 中的工具描述):

{"AND": [{"user_id": "john"}]} {"AND": [{"agent_id": "agent_name"}]} {"AND": [{"user_id": "john"}, {"created_at": {"gte": "2024-01-01"}}]} {"AND": [{"user_id": {"in": ["john", "jane"]}}]} {"OR": [{"user_id": "john"}, {"agent_id": "agent_name"}]}
  • 单实体过滤:{"AND": [{"user_id": "john"}]}
  • 时间范围:created_at支持gte/lte等操作符
  • 跨实体查询:用OR组合不同维度
  • 还可使用"*"通配符匹配任意非空值

get_memories额外支持page/page_size分页浏览,适合"列出某用户全部记忆"的场景。

实体清理进阶:delete_all_memories 与 delete_entities 别搞混

这是新手最容易踩坑的地方。两个删除工具的语义完全不同:

工具删什么实体还在吗典型场景
delete_all_memories某作用域下的所有记忆内容✅ 保留实体"帮我清空这个用户的所有记忆,重新开始"
delete_entities实体本身 + 级联删除其全部记忆❌ 实体被移除"这个用户注销了,把 TA 整个清走"

delete_all_memories的作用域参数(user_id / agent_id / app_id / run_id)与写入时一致,user_id缺省为服务端默认用户,参数模型见 schemas.py 中的DeleteAllArgs。

而delete_entities要求至少显式提供一个user_id、agent_id、app_id 或 run_id,否则会直接返回scope_missing错误,防止误删——这是一个值得学习的防护设计。

推荐的操作顺序(三步走)

  1. 先盘点:用list_entities看看当前都有哪些用户/智能体/应用/运行;
  2. 再抽查:用get_memories或search_memories确认该作用域下要删的内容;
  3. 后清理:按需选择"清内容保实体"(delete_all_memories)或"连实体一起删"(delete_entities)。

⚠️ 两个工具都不可逆,且delete_entities是级联删除。生产环境建议先备份或在小范围作用域上验证。

配置与本地联调

环境变量与配置方式见 config.json,关键项:

  • MEM0_API_KEY:Mem0 平台 API Key(必填)
  • MEM0_DEFAULT_USER_ID:默认 user_id,缺省为mem0-mcp
  • MEM0_ENABLE_GRAPH_DEFAULT:是否默认启用图记忆(默认关闭,查询更快)

项目自带一个 Pydantic AI 交互式示例 pydantic_ai_repl.py,可以直观体验"记住我喜欢提拉米苏"→"搜索我的饮食偏好"→"删除某作用域记忆"的完整流程,示例说明见 example/README.md。

小结

  • 写:add_memory支持 user/agent/app/run 四级作用域任意组合,构建清晰的记忆坐标系
  • 查:search_memories/get_memories用AND/OR/NOT结构化过滤器精确圈定范围,user_id会自动注入
  • 删:清内容用delete_all_memories,连实体一起删用delete_entities(强制要求显式指定作用域)
  • 习惯:先list_entities盘点、再抽查确认、最后执行删除

掌握这套"四级作用域 + 双删除策略"的组合,你的 AI 应用就能在多用户、多智能体环境下保持记忆既清晰又可控。

【免费下载链接】mem0-mcp

项目地址:https://gitcode.com/gh_mirrors/me/mem0-mcp
点击查看免费下载

相关推荐

上一篇:以Qwen2.5-0.5B-Instruct-fa3为模板:如何把自己的Qwen2模型量化并部署到昇腾NPU
下一篇:Movie Narrator 参数全解析:风格预设、竖屏9:16与AI配音这样选,出片效果翻倍

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询