CLI 配置与智能体模式
CLI 配置与代理模式
相关源文件
本章引用的主要源码文件:
.github/workflows/cli-python-cd.ymlcli/CLI_SPECIFICATION.mdcli/README.mdcli/cli-spec.jsoncli/node/README.mdcli/node/package.jsoncli/node/src/backend/platform.tscli/node/src/branding.tscli/node/src/commands/init.tscli/node/src/config.tscli/node/src/index.tscli/node/src/telemetry.tscli/node/telemetry-sender.cjscli/node/tests/branding.test.tscli/python/Makefilecli/python/README.mdcli/python/development.mdcli/python/pyproject.tomlcli/python/src/mem0_cli/__init__.pycli/python/src/mem0_cli/app.pycli/python/src/mem0_cli/backend/platform.pycli/python/src/mem0_cli/branding.pycli/python/src/mem0_cli/commands/init_cmd.pycli/python/src/mem0_cli/commands/utils.pycli/python/src/mem0_cli/config.pycli/python/src/mem0_cli/telemetry.pycli/python/src/mem0_cli/telemetry_sender.pycli/python/tests/test_cli_integration.pycli/python/tests/test_commands.pydocs/platform/cli.mdx
Mem0 CLI 提供了一个统一的接口,用于在 Python 和 Node.js 环境中与 Mem0 记忆层进行交互。本页面详细介绍了配置生命周期、设置的优先级规则,以及"代理模式"——该模式通过结构化的 JSON 通信,实现了与 AI 工具循环的无缝集成。
配置生命周期
CLI 通过多层方法管理配置,确保开发者可以轻松地在本地默认值、环境特定覆盖值和每个命令的标志之间切换。
配置优先级
设置按以下顺序解析(从高到低):
- CLI 标志:显式传递的参数,如
--api-key或--user-idcli/node/src/config.ts:5-9。 - 环境变量:诸如
MEM0_API_KEY和MEM0_USER_ID之类的变量cli/python/src/mem0_cli/config.py:3-8。 - 本地配置文件:存储在
~/.mem0/config.json的 JSON 文件cli/node/src/config.ts:15-16。 - 硬编码默认值:内置的回退值(例如
https://api.mem0.ai)cli/python/src/mem0_cli/config.py:22-23。
配置模式
Mem0Config 类(Python)和接口(Node.js)定义了本地状态的结构:
| 部分 | 字段 | 描述 |
|---|---|---|
platform | api_key | Mem0 平台的认证令牌 cli/node/src/config.ts:21。 |
platform | base_url | API 端点(默认为 api.mem0.ai)cli/python/src/mem0_cli/config.py:29。 |
defaults | user_id | 记忆操作的默认作用域(如果未提供)cli/node/src/config.ts:27。 |
defaults | agent_id | 默认代理作用域 cli/python/src/mem0_cli/config.py:36。 |
telemetry | anonymous_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 配置解析
来源: 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: agentcli/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_KEY | platform.api_key | 主要认证 cli/python/src/mem0_cli/config.py:96-98。 |
MEM0_BASE_URL | platform.base_url | 指向私有或本地实例 cli/node/src/config.ts:95-96。 |
MEM0_USER_ID | defaults.user_id | 全局用户上下文 cli/python/src/mem0_cli/config.py:103-107。 |
MEM0_AGENT_ID | defaults.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 到平台的通信
来源: 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