agentic_huge_data_base / wiki
页面 Mem0 · 14.3 持续集成与持续交付管线·DeepWiki 中文全文译文

14.3 · 持续集成与持续交付管线(CI/CD Pipeline)

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

项目Mem0 章节14.3 状态全文译文 模块测试、发布与运维、文档对象与元数据、工作流与编排、安装与启动
源码线索
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/documentation_issue.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/advanced-issue-labeler.yml
  • .github/workflows/cd.yml
  • .github/workflows/ci.yml
  • .github/workflows/cli-node-cd.yml
  • .github/workflows/issue-labeler.yml
模块标签
  • 测试、发布与运维
  • 文档对象与元数据
  • 工作流与编排
  • 安装与启动
  • 界面与交互

章节正文

持续集成与持续交付管线

持续集成与持续交付管线

相关源文件

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

  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/documentation_issue.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/advanced-issue-labeler.yml
  • .github/workflows/cd.yml
  • .github/workflows/ci.yml
  • .github/workflows/cli-node-cd.yml
  • .github/workflows/issue-labeler.yml
  • .github/workflows/openclaw-cd.yml
  • .github/workflows/stale.yml
  • .github/workflows/ts-sdk-cd.yml
  • .github/workflows/ts-sdk-ci.yml
  • .github/workflows/vercel-ai-cd.yml
  • CONTRIBUTING.md
  • docs/changelog/sdk.mdx
  • mem0-ts/jest.config.js
  • mem0-ts/jest.setup.ts
  • mem0-ts/src/global.d.ts
  • mem0-ts/src/oss/src/utils/telemetry.ts
  • mem0-ts/tsup.config.ts

本文档描述了 Mem0 仓库的持续集成(CI)和持续部署(CD)基础设施。CI 管线在多个 Python 版本和组件(mem0 和 embedchain)上校验代码质量,而 CD 管线则自动将包发布到 PyPI 和 npm。

工作流总览

Mem0 的 CI/CD 基础设施由多个 GitHub Actions 工作流组成,这些工作流负责处理 Python 和 TypeScript 生态系统的测试与部署。

CI/CD 工作流架构与作业依赖关系

Mem0 · 工作流总览 · 图 1
Mem0 · 工作流总览 · 图 1

来源: .github/workflows/ci.yml:1-118, .github/workflows/cd.yml:1-46, .github/workflows/ts-sdk-cd.yml:1-10, .github/workflows/cli-node-cd.yml:1-10

CI 工作流架构

工作流触发器

CI 工作流由事件触发,并附带路径特定的过滤器以优化构建执行:

事件监控路径
pushmainmem0/**, tests/**, embedchain/**, .github/workflows/**, pyproject.toml
pull_requestmem0/**, tests/**, embedchain/**, pyproject.toml

来源: .github/workflows/ci.yml:3-17

变更日志强制检查

对于拉取请求,changelog_check 作业确保 pyproject.toml 中的任何版本提升都伴随有 docs/changelog/sdk.mdx 中的条目 .github/workflows/ci.yml:20-58。它使用一个自定义的 shell 函数 extract_version 来比较 base_version(来自目标分支)和 head_version(来自 PR 分支).github/workflows/ci.yml:35-40

来源: .github/workflows/ci.yml:20-58

基于路径的变更检测

check_changes 作业使用 dorny/paths-filter@v2 来确定哪些组件发生了变更:

Mem0 · 基于路径的变更检测 · 图 2
Mem0 · 基于路径的变更检测 · 图 2

来源: .github/workflows/ci.yml:59-77

矩阵测试策略

构建作业:build_mem0

当 mem0 相关路径发生变更时,此作业会被执行。它会通过移除大型未使用的工具集(如 .NETAndroid SDKCodeQL)来清理磁盘空间,以便容纳向量存储和大语言模型(LLM)提供商的依赖树 .github/workflows/ci.yml:91-97

  1. 环境:Python 3.10、3.11、3.12 .github/workflows/ci.yml:84
  2. 系统依赖:安装 libgeos-dev 以支持地理空间操作 .github/workflows/ci.yml:106-107
  3. Python 依赖:安装带有额外功能的包:pip install -e ".[test,graph,vector_stores,llms,extras]" .github/workflows/ci.yml:111
  4. 校验:运行 make lintmake test .github/workflows/ci.yml:114-117

来源: .github/workflows/ci.yml:78-118

CD 工作流:多包发布

Mem0 使用标签前缀策略将发布路由到正确的注册表和包。

标签前缀映射
注册表标签前缀工作流文件
mem0ai(Python)PyPIv*cd.yml
mem0ai(TypeScript)npmts-v*ts-sdk-cd.yml
@mem0/cli(Node)npmcli-node-v*cli-node-cd.yml
mem0-cli(Python)PyPIcli-v*不适用
@mem0/vercel-ai-providernpmvercel-ai-v*vercel-ai-cd.yml
@mem0/openclaw-mem0npmopenclaw-v*openclaw-cd.yml

来源: CONTRIBUTING.md:65-78

Python 发布(PyPI)

cd.yml 工作流使用 hatch build --clean 来生成分发制品 .github/workflows/cd.yml:32。它通过 pypa/gh-action-pypi-publish 使用 OIDC 可信发布,需要 permissions: id-token: write 权限 .github/workflows/cd.yml:12-13, 41-46

来源: .github/workflows/cd.yml:1-46

TypeScript/Node 发布(npm)

TypeScript 工作流(例如 ts-sdk-cd.yml)遵循标准的 Node.js 构建与发布模式:

  1. 设置:使用 pnpm 版本 10 和 Node.js 22 .github/workflows/ts-sdk-cd.yml:20-28
  2. 构建:运行 pnpm run build,该命令会调用 tsup .github/workflows/ts-sdk-cd.yml:36-37
  3. 遥测版本管理tsuppackage.json 中的版本内联到 __MEM0_SDK_VERSION__ 全局常量中 mem0-ts/tsup.config.ts:27-29
  4. 发布:使用 --provenance 进行安全的 npm 发布 .github/workflows/ts-sdk-cd.yml:43-45

来源: .github/workflows/ts-sdk-cd.yml:1-47, mem0-ts/tsup.config.ts:1-49

遥测与版本管理

CI/CD 管线确保 SDK 版本被正确传播到构建制品中,以用于遥测目的。

遥测版本流转

Mem0 · 遥测与版本管理 · 图 3
Mem0 · 遥测与版本管理 · 图 3

在 TypeScript SDK 中,UnifiedTelemetry 使用此版本来标记每个捕获的事件 mem0-ts/src/oss/src/utils/telemetry.ts:53。如果全局常量 __MEM0_SDK_VERSION__ 未定义(例如在未打包的测试环境中),版本会默认为 "dev" mem0-ts/src/oss/src/utils/telemetry.ts:10-11

来源: mem0-ts/tsup.config.ts:27-29, mem0-ts/src/oss/src/utils/telemetry.ts:1-127, mem0-ts/src/global.d.ts:1-4

质量标准与测试

Python 测试

测试通过 make test 使用 pytest 执行 .github/workflows/ci.yml:117。该项目支持由 hatch 管理的多个 Python 环境 CONTRIBUTING.md:19-33

代码检查与格式化
  • Python:使用 ruff 进行代码检查 .github/workflows/ci.yml:112-115
  • TypeScript:构建过程使用 tsup,该工具会执行类型检查和打包 mem0-ts/tsup.config.ts:31-49
  • 预提交钩子:鼓励开发者在推送前运行 pre-commit install 以在本地执行这些检查 CONTRIBUTING.md:35-41

来源: .github/workflows/ci.yml:112-117, CONTRIBUTING.md:35-62