CLI
CLI
相关源文件
本章引用的主要源码文件:
cli/CLI_SPECIFICATION.mdcli/README.mdcli/node/package.jsoncli/node/src/backend/platform.tscli/node/src/config.tscli/node/src/index.tscli/node/src/telemetry.tscli/node/telemetry-sender.cjscli/python/Makefilecli/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/config.pycli/python/src/mem0_cli/telemetry.pycli/python/src/mem0_cli/telemetry_sender.pydocs/platform/cli.mdx
Mem0 CLI 提供了一个统一的命令行界面,用于与 Mem0 记忆层进行交互。它既可作为 Python 包(mem0-cli)使用,也可作为 Node.js 包(@mem0/cli)使用,在不同开发环境中提供相同的功能来管理记忆、实体和配置。
CLI 主要与 Mem0 平台 API(SaaS)交互,允许用户直接在终端中对记忆执行增删改查操作、搜索关系型知识以及检查后台处理事件。
系统交互图
下图展示了 CLI 组件如何在用户命令与底层平台 API 实体之间建立桥梁。
CLI 实体映射
来源:cli/python/src/mem0_cli/app.py:23-55, cli/node/src/index.ts:139-158, cli/python/src/mem0_cli/backend/platform.py:14-30, cli/node/src/backend/platform.ts:20-33, cli/python/pyproject.toml:42-42
安装与命令
CLI 可以通过 pip 或 npm 安装。安装后,它提供了一套丰富的命令用于记忆管理,包括 add、search、list 和 delete。它还支持高级实体和事件检查。
有关具体命令语法和使用示例的详细信息,请参见 CLI 安装与命令。
| 特性 | Python 实现 | Node.js 实现 |
|---|---|---|
| 包名 | mem0-cli | @mem0/cli |
| 框架 | typer | commander |
| 安装方式 | pip install mem0-cli | npm install -g @mem0/cli |
| 版本 | 0.2.4 | 0.2.4 |
来源:cli/python/pyproject.toml:6-7, cli/node/package.json:2-3, cli/python/src/mem0_cli/app.py:23-32, cli/node/src/index.ts:139-157, cli/python/src/mem0_cli/__init__.py:3-3
配置与代理模式
CLI 在 ~/.mem0/config.json 维护一个本地配置文件。该文件存储 API 密钥、基础 URL 以及默认的作用域 ID(用户 ID、代理 ID、应用 ID 和运行 ID)。CLI 遵循严格的配置优先级:CLI 标志覆盖环境变量,环境变量覆盖配置文件,配置文件覆盖硬编码的默认值。
代理模式逻辑
CLI 包含一个专门的 --agent(或 --json)模式。启用后,CLI 会抑制人类可读的"品牌"输出(颜色、旋转动画、边框),并返回原始 JSON。这使得 AI 代理可以在循环中将 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:194-211, cli/node/src/index.ts:92-97, cli/python/src/mem0_cli/backend/platform.py:33-35, cli/node/src/backend/platform.ts:48-49
有关配置模式以及如何将 CLI 集成到代理工作流中的详细信息,请参见 CLI 配置与代理模式。
遥测
两种 CLI 实现都包含通过 PostHog 进行的匿名使用跟踪,以帮助维护者了解命令频率和错误率。遥测是非阻塞的;它会生成一个分离的子进程(telemetry_sender.py 或 telemetry-sender.cjs),这样主 CLI 执行永远不会因向遥测采集服务器的网络请求而延迟。
- 退出机制: 可以通过设置环境变量
MEM0_TELEMETRY=false来禁用遥测。 - 身份标识: 系统会尝试使用用户的电子邮件(从
ping检查中缓存)、API 密钥的 MD5 哈希值或配置文件中存储的持久匿名 ID 来解析稳定的distinct_id。 - 子进程逻辑: 如果电子邮件尚未缓存,
telemetry_sender会通过/v1/ping/端点处理电子邮件解析,确保父进程保持快速响应。
来源:cli/python/src/mem0_cli/telemetry.py:26-48, cli/node/src/telemetry.ts:24-53, cli/python/src/mem0_cli/telemetry_sender.py:23-38, cli/node/src/telemetry.ts:88-153