CLI 安装与命令
CLI 安装与命令
相关源文件
本章引用的主要源码文件:
.github/workflows/cli-python-cd.ymlcli/cli-spec.jsoncli/node/README.mdcli/node/package.jsoncli/node/src/backend/base.tscli/node/src/backend/platform.tscli/node/src/branding.tscli/node/src/commands/config.tscli/node/src/commands/init.tscli/node/src/commands/memory.tscli/node/src/commands/utils.tscli/node/src/config.tscli/node/src/globals.d.tscli/node/src/index.tscli/node/src/output.tscli/node/src/telemetry.tscli/node/telemetry-sender.cjscli/node/tests/branding.test.tscli/node/tests/cli-integration.test.tscli/node/tests/commands.test.tscli/node/tests/config.test.tscli/python/README.mdcli/python/pyproject.tomlcli/python/src/mem0_cli/__init__.pycli/python/src/mem0_cli/app.pycli/python/src/mem0_cli/backend/base.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/memory.pycli/python/src/mem0_cli/commands/utils.pycli/python/src/mem0_cli/config.pycli/python/src/mem0_cli/output.pycli/python/src/mem0_cli/telemetry.pycli/python/src/mem0_cli/telemetry_sender.pycli/python/tests/test_cli_integration.pycli/python/tests/test_commands.py
Mem0 CLI 提供了一个命令行界面,用于与 Mem0 记忆层交互,同时支持 Python 和 Node.js 环境。它充当本地开发环境与 Mem0 平台(SaaS)或开源(OSS)后端之间的桥梁,允许用户直接从终端管理记忆、实体和配置。
安装
CLI 以独立包的形式分发,同时支持 Python 和 Node.js。
Python 安装
Python CLI 需要 Python 3.10 及以上版本 cli/python/pyproject.toml:11-11。可以通过 pip 安装:
pip install mem0-cli
# 如需 OSS 支持
pip install "mem0-cli[oss]"
入口点映射到 mem0_cli.app 中的 main 函数 cli/python/pyproject.toml:42-42。
Node.js 安装
Node.js CLI 需要 Node.js 18.0.0 及以上版本 cli/node/package.json:19-19。
npm install -g @mem0/cli
二进制文件链接到编译后的 dist/index.js 文件 cli/node/package.json:7-7。
核心架构与数据流
CLI 采用分层架构,命令行解析器(Python 使用 Typer,Node.js 使用 Commander)与 Backend 抽象层交互。
CLI 组件关系
下图展示了 CLI 如何将用户输入转换为 API 调用或本地操作。
CLI 到代码实体映射
来源: cli/python/src/mem0_cli/app.py:100-152,cli/node/src/index.ts:28-83,cli/node/src/backend/platform.ts:20-33
命令参考
1. init
初始化 CLI 配置。它会运行一个交互式向导来设置 API 密钥和默认 ID cli/python/src/mem0_cli/commands/init_cmd.py:178-191。它还支持通过验证码进行基于电子邮件的登录 cli/python/src/mem0_cli/commands/init_cmd.py:106-175。
2. add
从文本、JSON 消息或文件中添加记忆。
- 实现: 调用
backend.add()cli/python/src/mem0_cli/backend/platform.py:53-95。 - 数据流: 如果通过管道输入了
stdin,CLI 会使用_read_stdin自动读取内容cli/python/src/mem0_cli/app.py:208-211。 - 关键标志:
--user-id、--agent-id、--metadata、--no-infer。
3. 检索
对记忆执行语义搜索。
- 实现: 调用
backend.search(),该函数会请求/v3/memories/search/端点cli/python/src/mem0_cli/backend/platform.py:138-177。 - 过滤器: 使用
_build_filters为 API 构建复杂的 AND/OR 逻辑cli/python/src/mem0_cli/backend/platform.py:97-136。
4. 列表
列出记忆,支持按类别或日期进行过滤。
- 实现: 使用
backend.list_memories()cli/node/src/backend/platform.ts:194-237。 - 分页: 支持
page和page_size参数cli/node/src/backend/platform.ts:198-201。
5. get / 更新 / delete
针对特定记忆 ID 的标准 CRUD 操作。
get:根据 ID 获取单条记忆cli/python/src/mem0_cli/backend/platform.py:179-180。update:修改现有记忆的文本或元数据cli/node/src/backend/platform.ts:239-254。delete:删除特定记忆cli/node/src/backend/platform.ts:256-258。
6. config
管理存储在 ~/.mem0/config.json 中的本地配置。
- 命令:
config show、config set <key> <value>、config reset。 - 逻辑: 使用
set_nested_value和get_nested_value遍历Mem0Config数据类cli/python/src/mem0_cli/config.py:160-196。
7. 实体
管理实体(用户、代理、应用、运行)。
- 子命令:
list、delete。 - 映射: 将 CLI 实体类型映射到 API 端点(例如,
users->user)cli/cli-spec.json:102-107。
8. event
检查后台处理事件。
- 端点: 与
/v1/events/通信,以跟踪异步记忆处理状态。
9. status
显示当前 CLI 配置状态,包括已验证的用户电子邮件和 API 连接状态。
- 实现: 使用
backend.ping()验证 API 密钥并获取用户详细信息cli/python/src/mem0_cli/app.py:134-140。
10. 导入
从文件批量导入记忆。
- 实现: 通常通过
add命令配合--file标志处理,或根据 SDK 版本使用专门的导入例程cli/cli-spec.json:205-205。
配置系统
CLI 使用严格的优先级顺序进行配置:
- CLI 标志(例如
--api-key) - 环境变量(例如
MEM0_API_KEY) - 配置文件(
~/.mem0/config.json) - 默认值
来源: cli/python/src/mem0_cli/config.py:3-8,cli/node/src/config.ts:4-9
配置结构
Mem0Config 类将设置组织为逻辑部分:
| 部分 | 字段 | 描述 |
|---|---|---|
platform | api_key | Mem0 平台 API 密钥 cli/python/src/mem0_cli/config.py:28-28 |
platform | base_url | API 端点(默认值:https://api.mem0.ai)cli/python/src/mem0_cli/config.py:29-29 |
defaults | user_id | 用于限定操作范围的默认用户 ID cli/python/src/mem0_cli/config.py:35-35 |
telemetry | anonymous_id | 用于匿名使用跟踪的唯一 ID cli/python/src/mem0_cli/config.py:43-43 |
技术实现细节
后端抽象
CLI 定义了一个 Backend 接口,由 PlatformBackend 实现。
后端接口实现
来源: cli/python/src/mem0_cli/backend/base.py,cli/python/src/mem0_cli/backend/platform.py:14-30
代理模式
CLI 包含一个"代理模式"(通过 --agent 或 --json 触发)。在此模式下:
- 输出: 所有结果都包装在包含
status、command和data的 JSON 信封中cli/node/src/branding.ts:85-93。 - 遥测: 事件被标记为
is_agent: truecli/node/src/index.ts:169-177。 - 请求头: API 请求包含
X-Mem0-Caller-Type: agentcli/python/src/mem0_cli/backend/platform.py:35-35。
遥测
CLI 通过 PostHog 捕获命令执行事件。这是由非阻塞的后台进程处理的,以确保 CLI 性能不受影响 cli/python/src/mem0_cli/app.py:66-76。
来源: cli/python/src/mem0_cli/telemetry.py,cli/node/src/telemetry.ts