mcpField
M
mem0

mem0

github.com/mem0ai开发68.0k2.3k 次安装2 天前更新
代码仓库

关于 mem0

mem0 是面向 AI 应用的托管记忆层集成技能,提供 Python 和 TypeScript 客户端 SDK 的使用指引。它涵盖记忆的添加、检索、更新和删除,也说明了自托管开源版本的差异。

主要功能

  1. 01通过 API 管理用户记忆
  2. 02支持 Python 与 TypeScript 客户端
  3. 03添加、搜索、读取、更新和删除记忆
  4. 04提供异步 Python 客户端
  5. 05包含托管平台与开源版本说明

适用场景

  1. 01在对话生成前检索用户相关记忆
  2. 02将对话信息保存为用户记忆
  3. 03按用户筛选、更新或删除记忆
  4. 04接入托管平台或自托管版本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mem0ai/mem0 --skill mem0

安装后在 Claude Code 中输入/mem0确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
README.md
client/
differences.md
node.md
python.md
references/
api-reference.md
architecture.md
features.md
integration-patterns.md
quickstart.md
sdk-guide.md
use-cases.md
scripts/
mem0_doc_search.py

详细介绍

Mem0 平台集成

技能图谱: 此技能属于 Mem0 技能图谱的一部分:

Mem0 是面向 AI 应用的托管式记忆层。它通过 API 存储、检索和管理用户记忆,无需部署基础设施。若要自托管,请参阅下方客户端参考中的 OSS 部分。

步骤 1:安装并进行身份验证

Python:

pip install mem0ai
export MEM0_API_KEY="m0-your-api-key"

TypeScript/JavaScript:

npm install mem0ai
export MEM0_API_KEY="m0-your-api-key"

在此获取 API 密钥:https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=skill-mem0

没有 MEM0_API_KEY? 运行 mem0 init --agent --agent-caller <your-name> --json(先执行 pip install mem0-cli 或 npm install -g @mem0/cli),将 <your-name> 替换为你的 Agent 标识(例如 claude-code、cursor)。如果忘记传入 --agent-caller,请在初始化后运行 mem0 identify <your-name>。之后,人类用户可以通过 mem0 init --email <your-email> 认领。

步骤 2:初始化客户端

Python:

from mem0 import MemoryClient
client = MemoryClient(api_key="m0-xxx")

TypeScript:

import MemoryClient from 'mem0ai';
const client = new MemoryClient({ apiKey: 'm0-xxx' });

对于异步 Python,请使用 AsyncMemoryClient。

步骤 3:核心操作

每种 Mem0 集成都遵循相同的模式:检索 → 生成 → 存储。

添加记忆
messages = [
    {"role": "user", "content": "I'm a vegetarian and allergic to nuts."},
    {"role": "assistant", "content": "Got it! I'll remember that."}
]
client.add(messages, user_id="alice")
搜索记忆
results = client.search("dietary preferences", filters={"user_id": "alice"})
for mem in results.get("results", []):
    print(mem["memory"])
获取所有记忆
all_memories = client.get_all(filters={"user_id": "alice"})
更新记忆
client.update("memory-uuid", text="Updated: vegetarian, nut allergy, prefers organic")
删除记忆
client.delete("memory-uuid")
client.delete_all(user_id="alice")  # delete all for a user

常见集成模式

from mem0 import MemoryClient
from openai import OpenAI

mem0 = MemoryClient()
openai = OpenAI()

def chat(user_input: str, user_id: str) -> str:
    # 1. Retrieve relevant memories
    memories = mem0.search(user_input, filters={"user_id": user_id})
    context = "\n".join([m["memory"] for m in memories.get("results", [])])

    # 2. Generate response with memory context
    response = openai.chat.completions.create(
        model="gpt-5-mini",
        messages=[
            {"role": "system", "content": f"User context:\n{context}"},
            {"role": "user", "content": user_input},
        ]
    )
    reply = response.choices[0].message.content

    # 3. Store interaction for future context
    mem0.add(
        [{"role": "user", "content": user_input}, {"role": "assistant", "content": reply}],
        user_id=user_id
    )
    return reply

常见边界情况

  • 搜索结果为空: add() 是异步的,会返回 {"event_id": "...", "status": "PENDING"}(TS 客户端返回 eventId)。事件状态变为 SUCCEEDED 后,记忆即可搜索(轮询 GET /v1/event/{event_id}/,或等待几秒)。infer=False 为同步操作。另外,请确认 user_id 完全匹配(区分大小写),并使用 filters={"user_id": "..."} 语法。
  • 使用 user_id + agent_id 的 AND 筛选条件时结果为空: 实体是分别存储的。请改用 OR,或分别查询。
  • 记忆重复: 同一数据不要混用 infer=True(默认值)和 infer=False。请始终使用同一种模式。
  • 导入错误: 使用托管平台时,请使用 from mem0 import MemoryClient(异步操作则使用 AsyncMemoryClient)。from mem0 import Memory 是自托管 OSS 类,不使用 MEM0_API_KEY。
  • v3 默认值(平台): top_k=10,rerank=False。threshold 是在分数组合前应用的服务端截断值,并非返回的 score 的下限(默认值和 0.0 返回的结果相同或几乎相同)。除非你主动传入这些参数,否则客户端不会发送它们。OSS 的 Memory.search() 默认 top_k=20。请根据使用场景进行调整。

v2 兼容性

“v2”系列指 Python SDK 1.x 和 TypeScript SDK 2.x。如果你仍在使用该系列,请注意它与当前 SDK(Python 2.x、TypeScript 3.x)的以下差异:

  • 实体 ID: user_id / agent_id / run_id 可以作为顶层 kwargs 传给 search() 和 get_all()。现在这些参数必须放在 filters 中(放在顶层会报错)
  • 默认值(平台): threshold=0.3,rerank=False。OSS:top_k=100、无 threshold、rerank=True
  • 图记忆: enable_graph=True 和 relations 已移除。实体关联已内置(OSS 请参阅 client/python.md)

详情请参阅平台迁移指南和 OSS 迁移指南。

实时文档搜索

如需查找参考资料之外的最新文档,请使用文档搜索工具:

python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --query "topic"
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --page "/platform/features/graph-memory"
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --index

无需 API 密钥——可直接搜索 docs.mem0.ai。

客户端 SDK 参考

按语言分类的深入参考(平台 + OSS):

语言文件
Python(MemoryClient + AsyncMemoryClient + Memory OSS)client/python.md
TypeScript/Node.js(MemoryClient + Memory OSS)client/node.md
Python 与 TypeScript 的差异client/differences.md

平台参考

如需深入了解,可按需查阅:

主题文件
快速入门(Python、TS、cURL)references/quickstart.md
SDK 指南(两种语言的所有方法)references/sdk-guide.md
API 参考(端点、过滤器、对象架构)references/api-reference.md
架构(流水线、生命周期、范围限定、性能)references/architecture.md
平台功能(检索、图、类别、MCP 等)references/features.md
框架集成(LangChain、CrewAI、OpenAI Agents 等)references/integration-patterns.md
用例与示例(包含代码的真实场景模式)references/use-cases.md

相关 Mem0 技能

技能适用场景链接
mem0-cli终端命令、脚本编写、CI/CD、Agent 工具循环本地 / GitHub
mem0-vercel-ai-sdk提供自动记忆功能的 Vercel AI SDK 提供程序本地 / GitHub

评论

支持 Markdown