外部 Mem0 记忆服务
连接内置适配器,选择协议与 scope,并明确写入审批和未知结果。
This page has not been translated into English yet. The original Chinese version is shown below.
Mem0 连接外部记忆服务,已包含在主 CLI 包中,不需要另装 @qwen-code/external-context-mem0 或手工注册 MCP。
配置连接
在用户设置中加入,再在可信项目重启:
{
"memory": {
"mem0": {
"baseUrl": "https://memory.example.com",
"protocol": "mem0-v2",
"envKey": "MEM0_API_KEY"
}
}
}地址是占位示例。Key 可从非空进程环境、用户 .env 或 settings.env 提供,优先级依次降低;envKey 是变量名,默认 MEM0_API_KEY。credentialEnv 是旧别名,同时出现必须名称相同,否则报错。
baseUrl 为服务 origin,可带反向代理前缀,不加具体 /v2/memories/search 操作路径。timeoutMs 默认 5000,合法范围 1–30000。
协议
| 名称 | 契约 |
|---|---|
| mem0-v2(默认) | PolarDB 风格 Token 认证,V2 search 用 limit,V1 write |
| mem0-v3 | Mem0 Platform V3,Token 认证,V3 search/add |
| mem0-oss-2026-08 | 固定 OSS REST,X-API-Key,/search 和 /memories |
这些是完整请求响应契约,不是任意服务版本的兼容别名。历史 aliyun-polardb-mysql-2026-08 保留 top_k 和原始搜索内容,不应只改 URL 就推断兼容。
可信 HTTP 私网端点还需 allowInsecureHttp:true,凭据会明文传输;这不解决路由或来源 IP 白名单。
注册冲突与查询
内置路径自动注册 external-context 并发现 context_search;按用户任务搜索,不在每轮自动召回或发送内容。
operator/session/--mcp-config 中同名 server 会冲突,应移除旧手工配置。工作区和项目 .mcp.json 同名项被覆盖,同名扩展也被现有 MCP 优先级遮蔽;使用内置路径时应禁用旧 advanced extension,并移除旧手工写确认 Hook,避免重复提示。
scope 与工作区
默认用户/仓库 scope 跨重启、从 Git 子目录启动保持一致;移动仓库或另一个 checkout 会改变,包括临时 worktree。要共享已知 scope,V2/OSS 设置 scope.userId,V3 设置 scope.appId;scope.agentId 只适用于 V2/OSS。
这些标识是查询范围,不是服务商访问控制。工作区设置不能配置此 binding;bare/safe、未信任或 provisional、SSH 工作区不启用它。
写入必须显式开启
enableWrites:true 后重启交互 CLI,才能请求保存。内置 Hook 展示并询问准确内容,YOLO 也要确认;拒绝不发写请求。非交互/ACP 或禁用 Hooks 的会话仍只搜索。
写入使用 infer:false。mem0-v2 对标记 infer:false 的 PolarDB 单用户消息 JSON 数组恢复原文本;历史 preset、普通文本和其他协议不做同样转换。
| 状态 | 下一步 |
|---|---|
| stored | 返回有效同步 ID,表示已存储 |
| accepted | 异步接收,不代表持久化完成 |
| failed | 明确拒绝,先修原因再重试 |
| unknown | 可能已写入,不自动重试以免重复 |
401/403 查 Key 和协议,超时查路由、白名单与服务可用性。源码运行需构建出 dist/mem0/main.js 与 write-confirmation.js;主发布包已包含它们。