agentic_huge_data_base / wiki
页面 Mem0 · 13.1 CLI 安装与命令·DeepWiki 中文全文译文

13.1 · CLI 安装与命令(CLI Installation and Commands)

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

项目Mem0 章节13.1 状态全文译文 模块测试、发布与运维、图谱与关系、系统架构、工作流与编排
源码线索
  • .github/workflows/cli-python-cd.yml
  • cli/cli-spec.json
  • cli/node/README.md
  • cli/node/package.json
  • cli/node/src/backend/base.ts
  • cli/node/src/backend/platform.ts
  • cli/node/src/branding.ts
  • cli/node/src/commands/config.ts
  • cli/node/src/commands/init.ts
  • cli/node/src/commands/memory.ts
模块标签
  • 测试、发布与运维
  • 图谱与关系
  • 系统架构
  • 工作流与编排
  • 检索、召回与索引

章节正文

CLI 安装与命令

CLI 安装与命令

相关源文件

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

  • .github/workflows/cli-python-cd.yml
  • cli/cli-spec.json
  • cli/node/README.md
  • cli/node/package.json
  • cli/node/src/backend/base.ts
  • cli/node/src/backend/platform.ts
  • cli/node/src/branding.ts
  • cli/node/src/commands/config.ts
  • cli/node/src/commands/init.ts
  • cli/node/src/commands/memory.ts
  • cli/node/src/commands/utils.ts
  • cli/node/src/config.ts
  • cli/node/src/globals.d.ts
  • cli/node/src/index.ts
  • cli/node/src/output.ts
  • cli/node/src/telemetry.ts
  • cli/node/telemetry-sender.cjs
  • cli/node/tests/branding.test.ts
  • cli/node/tests/cli-integration.test.ts
  • cli/node/tests/commands.test.ts
  • cli/node/tests/config.test.ts
  • cli/python/README.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/base.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/memory.py
  • cli/python/src/mem0_cli/commands/utils.py
  • cli/python/src/mem0_cli/config.py
  • cli/python/src/mem0_cli/output.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

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 到代码实体映射

Mem0 · CLI 组件关系 · 图 1
Mem0 · CLI 组件关系 · 图 1

来源: cli/python/src/mem0_cli/app.py:100-152cli/node/src/index.ts:28-83cli/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
  • 分页: 支持 pagepage_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 showconfig set <key> <value>config reset
  • 逻辑: 使用 set_nested_valueget_nested_value 遍历 Mem0Config 数据类 cli/python/src/mem0_cli/config.py:160-196
7. 实体

管理实体(用户、代理、应用、运行)。

  • 子命令: listdelete
  • 映射: 将 CLI 实体类型映射到 API 端点(例如,users -> usercli/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 使用严格的优先级顺序进行配置:

  1. CLI 标志(例如 --api-key
  2. 环境变量(例如 MEM0_API_KEY
  3. 配置文件~/.mem0/config.json
  4. 默认值

来源: cli/python/src/mem0_cli/config.py:3-8cli/node/src/config.ts:4-9

配置结构

Mem0Config 类将设置组织为逻辑部分:

部分字段描述
platformapi_keyMem0 平台 API 密钥 cli/python/src/mem0_cli/config.py:28-28
platformbase_urlAPI 端点(默认值:https://api.mem0.aicli/python/src/mem0_cli/config.py:29-29
defaultsuser_id用于限定操作范围的默认用户 ID cli/python/src/mem0_cli/config.py:35-35
telemetryanonymous_id用于匿名使用跟踪的唯一 ID cli/python/src/mem0_cli/config.py:43-43

技术实现细节

后端抽象

CLI 定义了一个 Backend 接口,由 PlatformBackend 实现。

后端接口实现

Mem0 · 后端抽象 · 图 2
Mem0 · 后端抽象 · 图 2

来源: cli/python/src/mem0_cli/backend/base.pycli/python/src/mem0_cli/backend/platform.py:14-30

代理模式

CLI 包含一个"代理模式"(通过 --agent--json 触发)。在此模式下:

  1. 输出: 所有结果都包装在包含 statuscommanddata 的 JSON 信封中 cli/node/src/branding.ts:85-93
  2. 遥测: 事件被标记为 is_agent: true cli/node/src/index.ts:169-177
  3. 请求头: API 请求包含 X-Mem0-Caller-Type: agent cli/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.pycli/node/src/telemetry.ts