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

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

长期记忆与上下文管理 · 本章是 Mem0 DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目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
模块标签
  • 测试、发布与运维
  • 文档对象与元数据
  • 工作流与编排
  • 安装与启动
  • 界面与交互

中文译文

持续集成与持续交付管线(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/mem0ai/mem0/14.3-ci-cd-pipeline
翻译时间:2026-05-27T08:45:09.511Z
翻译模型:deepseek-chat
原文字符数:9424
项目:Mem0 (mem0)

---

持续集成与持续交付管线

相关源文件

以下文件被用作生成此 Wiki 页面的上下文:

  • .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 工作流架构与作业依赖关系

graph TB
    subgraph "事件触发器"
        PushMain["on: push<br/>branches: [main]"]
        PullRequest["on: pull_request"]
        Release["on: release<br/>types: [published]"]
    end

    subgraph "ci.yml 工作流"
        ChangelogCheck["作业: changelog_check<br/>if: pull_request"]
        CheckChanges["作业: check_changes<br/>dorny/paths-filter@v2"]
        BuildMem0["作业: build_mem0<br/>needs: check_changes<br/>matrix: [3.10, 3.11, 3.12]"]
        BuildEmbedchain["作业: build_embedchain<br/>needs: check_changes<br/>matrix: [3.9, 3.10, 3.11, 3.12]"]
    end

    subgraph "CD 工作流(发布触发)"
        PythonCD["cd.yml<br/>发布到 PyPI"]
        TS_SDK_CD["ts-sdk-cd.yml<br/>发布 mem0ai 到 npm"]
        CLI_Node_CD["cli-node-cd.yml<br/>发布 @mem0/cli 到 npm"]
        Vercel_CD["vercel-ai-cd.yml<br/>发布 @mem0/vercel-ai-provider"]
        OpenClaw_CD["openclaw-cd.yml<br/>发布 @mem0/openclaw-mem0"]
    end

    PushMain --> CheckChanges
    PullRequest --> ChangelogCheck
    PullRequest --> CheckChanges

    CheckChanges -->|"outputs.mem0_changed"| BuildMem0
    CheckChanges -->|"outputs.embedchain_changed"| BuildEmbedchain

    Release --> PythonCD
    Release --> TS_SDK_CD
    Release --> CLI_Node_CD
    Release --> Vercel_CD
    Release --> OpenClaw_CD

来源: .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 来确定哪些组件发生了变更:

graph LR
    Input["代码变更"]
    Filter["dorny/paths-filter@v2"]
    Mem0Output["mem0_changed"]
    EmbedchainOutput["embedchain_changed"]

    Input --> Filter
    Filter --> Mem0Output
    Filter --> EmbedchainOutput

    Mem0Output -.->|"过滤器:<br/>mem0/**<br/>tests/**<br/>pyproject.toml"| Rule1
    EmbedchainOutput -.->|"过滤器:<br/>embedchain/**"| Rule2

来源: .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 版本被正确传播到构建制品中,以用于遥测目的。

遥测版本流转

graph LR
    PkgJson["package.json<br/>version: '1.2.3'"]
    TsupConfig["tsup.config.ts<br/>define: { __MEM0_SDK_VERSION__ }"]
    BuildStep["pnpm run build"]
    GlobalD["global.d.ts<br/>declare const __MEM0_SDK_VERSION__"]
    TelemetryCode["telemetry.ts<br/>version = __MEM0_SDK_VERSION__"]

    PkgJson --> TsupConfig
    TsupConfig --> BuildStep
    BuildStep --> TelemetryCode
    GlobalD -.-> TelemetryCode

在 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