跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

外部 Mem0 记忆服务

连接内置适配器,选择协议与 scope,并明确写入审批和未知结果。

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-v3Mem0 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;主发布包已包含它们。