agentic_huge_data_base / wiki
页面 Mem0 · 13.2 CLI 配置与智能体模式·DeepWiki 中文全文译文

13.2 · CLI 配置与智能体模式(CLI Configuration and Agent Mode)

长期记忆与上下文管理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mem0 章节13.2 状态全文译文 模块测试、发布与运维、配置治理、接口与服务契约、图谱与关系
源码线索
  • .github/workflows/cli-python-cd.yml
  • cli/CLI_SPECIFICATION.md
  • cli/README.md
  • cli/cli-spec.json
  • cli/node/README.md
  • cli/node/package.json
  • cli/node/src/backend/platform.ts
  • cli/node/src/branding.ts
  • cli/node/src/commands/init.ts
  • cli/node/src/config.ts
模块标签
  • 测试、发布与运维
  • 配置治理
  • 接口与服务契约
  • 图谱与关系
  • 文档对象与元数据

章节正文

CLI 配置与智能体模式

CLI 配置与代理模式

相关源文件

本章引用的主要源码文件:

  • .github/workflows/cli-python-cd.yml
  • cli/CLI_SPECIFICATION.md
  • cli/README.md
  • cli/cli-spec.json
  • cli/node/README.md
  • cli/node/package.json
  • cli/node/src/backend/platform.ts
  • cli/node/src/branding.ts
  • cli/node/src/commands/init.ts
  • cli/node/src/config.ts
  • cli/node/src/index.ts
  • cli/node/src/telemetry.ts
  • cli/node/telemetry-sender.cjs
  • cli/node/tests/branding.test.ts
  • cli/python/Makefile
  • cli/python/README.md
  • cli/python/development.md
  • cli/python/pyproject.toml
  • cli/python/src/mem0_cli/__init__.py
  • cli/python/src/mem0_cli/app.py
  • cli/python/src/mem0_cli/backend/platform.py
  • cli/python/src/mem0_cli/branding.py
  • cli/python/src/mem0_cli/commands/init_cmd.py
  • cli/python/src/mem0_cli/commands/utils.py
  • cli/python/src/mem0_cli/config.py
  • cli/python/src/mem0_cli/telemetry.py
  • cli/python/src/mem0_cli/telemetry_sender.py
  • cli/python/tests/test_cli_integration.py
  • cli/python/tests/test_commands.py
  • docs/platform/cli.mdx

Mem0 CLI 提供了一个统一的接口,用于在 Python 和 Node.js 环境中与 Mem0 记忆层进行交互。本页面详细介绍了配置生命周期、设置的优先级规则,以及"代理模式"——该模式通过结构化的 JSON 通信,实现了与 AI 工具循环的无缝集成。

配置生命周期

CLI 通过多层方法管理配置,确保开发者可以轻松地在本地默认值、环境特定覆盖值和每个命令的标志之间切换。

配置优先级

设置按以下顺序解析(从高到低):

  1. CLI 标志:显式传递的参数,如 --api-key--user-id cli/node/src/config.ts:5-9
  2. 环境变量:诸如 MEM0_API_KEYMEM0_USER_ID 之类的变量 cli/python/src/mem0_cli/config.py:3-8
  3. 本地配置文件:存储在 ~/.mem0/config.json 的 JSON 文件 cli/node/src/config.ts:15-16
  4. 硬编码默认值:内置的回退值(例如 https://api.mem0.aicli/python/src/mem0_cli/config.py:22-23
配置模式

Mem0Config 类(Python)和接口(Node.js)定义了本地状态的结构:

部分字段描述
platformapi_keyMem0 平台的认证令牌 cli/node/src/config.ts:21
platformbase_urlAPI 端点(默认为 api.mem0.aicli/python/src/mem0_cli/config.py:29
defaultsuser_id记忆操作的默认作用域(如果未提供)cli/node/src/config.ts:27
defaultsagent_id默认代理作用域 cli/python/src/mem0_cli/config.py:36
telemetryanonymous_id用于匿名使用跟踪的唯一 ID cli/node/src/config.ts:34

来源: cli/node/src/config.ts:20-42, cli/python/src/mem0_cli/config.py:26-52, cli/cli-spec.json:35-86

配置数据流

下图展示了 CLI 如何解析配置并为请求准备后端。

CLI 配置解析

Mem0 · 配置数据流 · 图 1
Mem0 · 配置数据流 · 图 1

来源: cli/python/src/mem0_cli/config.py:72-120, cli/node/src/config.ts:69-104, cli/python/src/mem0_cli/app.py:100-152, cli/node/src/index.ts:28-83

代理模式

代理模式是一种专门为程序化消费设计的执行状态,特别适用于将 CLI 作为工具使用的 AI 代理。它通过 --agent--json 标志触发 cli/node/src/index.ts:92-97, cli/python/src/mem0_cli/app.py:221-232

代理模式的功能变化

当代理模式激活时,CLI 的行为会发生显著变化:

  • 输出转换:所有标准输出(STDOUT)被抑制,取而代之的是结构化的 JSON 信封 cli/node/src/branding.ts:85-93
  • 交互抑制:交互式提示(如 mem0 init 中的提示)被禁用,以防止在自动化环境中挂起 cli/python/src/mem0_cli/commands/init_cmd.py:210-218
  • 旋转动画/品牌标识移除:UI 元素(如 Node 中的 ora 旋转动画或 Python 中的 rich 状态)被绕过 cli/node/src/branding.ts:141-144, cli/python/src/mem0_cli/branding.py:46
  • 调用者标识:发出的 HTTP 请求包含请求头 X-Mem0-Caller-Type: agent cli/python/src/mem0_cli/backend/platform.py:35, cli/node/src/backend/platform.ts:48-49
JSON 信封结构

在代理模式下,CLI 使用一致的架构来通信结果和错误:

{
  "status": "success | error",
  "command": "add",
  "data": { ... },
  "error": "Error message if status is error"
}

来源: cli/node/src/branding.ts:85-93, cli/python/src/mem0_cli/backend/platform.py:32-51

环境变量

CLI 会自动检测多个环境变量,以便在持续集成/持续部署(CI/CD)和容器化部署中无需配置文件即可使用。

变量配置映射用途
MEM0_API_KEYplatform.api_key主要认证 cli/python/src/mem0_cli/config.py:96-98
MEM0_BASE_URLplatform.base_url指向私有或本地实例 cli/node/src/config.ts:95-96
MEM0_USER_IDdefaults.user_id全局用户上下文 cli/python/src/mem0_cli/config.py:103-107
MEM0_AGENT_IDdefaults.agent_id全局代理上下文 cli/node/src/config.ts:99-100

来源: cli/node/src/config.ts:92-102, cli/python/src/mem0_cli/config.py:95-119, cli/cli-spec.json:41-85

后端实现与数据流

CLI 充当 PlatformBackend 的瘦客户端。当执行命令时,它会解析用户身份并在继续之前验证 API 密钥。

带身份验证的请求流

CLI 在初始化期间执行"快速 ping"以验证凭证并解析用户的电子邮件,用于遥测目的。

CLI 到平台的通信

Mem0 · 带身份验证的请求流 · 图 2
Mem0 · 带身份验证的请求流 · 图 2

来源: cli/python/src/mem0_cli/app.py:100-152, cli/node/src/index.ts:28-83, cli/python/src/mem0_cli/backend/platform.py:14-51, cli/node/src/backend/platform.ts:20-94

ID 解析逻辑

CLI 采用特定的逻辑来解析实体 ID(用户、代理、应用、运行),以防止意外过度过滤:

  • 如果通过标志显式提供了任何 ID,CLI 会使用这些显式 ID cli/python/src/mem0_cli/app.py:178-185
  • 如果没有提供显式 ID,它会回退到 ~/.mem0/config.json 中的所有已配置默认值 cli/node/src/index.ts:129-134

来源: cli/python/src/mem0_cli/app.py:164-191, cli/node/src/index.ts:106-135