开发(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/mem0ai/mem0/14-development
翻译时间:2026-05-27T08:45:04.790Z
翻译模型:deepseek-chat
原文字符数:8002
项目:Mem0 (mem0)
---
开发
相关源文件
以下文件被用作生成此 Wiki 页面的上下文:
.github/workflows/cd.yml.github/workflows/ci.yml.github/workflows/cli-node-cd.yml.github/workflows/openclaw-cd.yml.github/workflows/ts-sdk-cd.yml.github/workflows/ts-sdk-ci.yml.github/workflows/vercel-ai-cd.ymlCONTRIBUTING.mddocs/changelog/sdk.mdxmem0-ts/jest.config.jsmem0-ts/jest.setup.tsmem0-ts/src/global.d.tsmem0-ts/src/oss/src/utils/telemetry.tsmem0-ts/tsup.config.ts
本页面概述了为 Mem0 代码库贡献代码的开发工作流。它涵盖了从环境搭建到测试、再到跨多种语言(Python、TypeScript)和平台的部署的完整开发生命周期。有关生产部署信息,请参见部署模型。有关托管平台详情,请参见托管平台概述。
开发工作流概述
Mem0 的开发工作流遵循一个结构化的流程,从环境搭建到代码贡献和自动化部署。下图展示了完整的开发者旅程:
开发者工作流图:
graph TB
Setup["环境搭建<br/>hatch shell dev_py_3_XX"]
PreCommit["安装 pre-commit 钩子<br/>pre-commit install"]
Branch["创建功能分支<br/>feature/feature-name"]
Code["编写代码"]
Quality["质量检查"]
Test["运行测试<br/>make test / pnpm test"]
Submit["提交 PR"]
CI["GitHub Actions CI<br/>.github/workflows/ci.yml"]
Review["代码评审"]
Merge["合并到 main 分支"]
Release["创建发布<br/>使用标签前缀"]
CD["GitHub Actions CD<br/>.github/workflows/*-cd.yml"]
Publish["发布到 PyPI / npm"]
Setup --> PreCommit
PreCommit --> Branch
Branch --> Code
Code --> Quality
Quality --> Test
Test --> Submit
Submit --> CI
CI --> Review
Review --> Merge
Merge --> Release
Release --> CD
CD --> Publish
Quality --> Lint["make lint / ruff"]
Quality --> Format["make format / ruff format"]
来源:CONTRIBUTING.md:5-16, CONTRIBUTING.md:65-85, .github/workflows/ci.yml:1-118
贡献者快速入门
基本设置过程使用 hatch 进行 Python 包管理,使用 pnpm 管理 TypeScript 组件:
# Python:激活 Python 3.11 环境
hatch shell dev_py_3_11
# 安装 pre-commit 钩子
pre-commit install
# TypeScript:安装依赖
cd mem0-ts && pnpm install
详情请参见开发环境搭建。
来源:CONTRIBUTING.md:19-41
测试概述
Mem0 使用 pytest 进行 Python 测试,使用 jest 进行 TypeScript 测试。测试按组件和平台组织:
| 目录 | 用途 | 工具 |
|---|---|---|
tests/ | 核心 Mem0 Python 功能 | pytest |
mem0-ts/ | TypeScript SDK 和 OSS 组件 | jest |
embedchain/tests/ | 遗留 Embedchain 系统 | pytest |
基本测试命令:
# Python
make test # 使用默认 Python 运行测试
# TypeScript
cd mem0-ts && pnpm run test:unit # 运行单元测试
cd mem0-ts && pnpm run test:integration # 运行集成测试
详情请参见测试。
来源:CONTRIBUTING.md:43-59, .github/workflows/ts-sdk-ci.yml:96-147
持续集成与持续交付管线概述
Mem0 仓库使用 GitHub Actions 进行自动化测试和部署。该管线采用基于路径的过滤来优化构建时间。
CI/CD 架构图:
graph TB
subgraph "持续集成 (.github/workflows/ci.yml)"
PushPR["推送 / 拉取请求"]
CheckChanges["check_changes<br/>dorny/paths-filter@v2"]
BuildMem0["build_mem0<br/>Python 3.10-3.12"]
BuildEmbedchain["build_embedchain<br/>Python 3.9-3.12"]
Changelog["changelog_check<br/>版本升级必需"]
PushPR --> CheckChanges
CheckChanges -->|"mem0/**"| BuildMem0
CheckChanges -->|"embedchain/**"| BuildEmbedchain
PushPR --> Changelog
end
subgraph "持续部署"
Release["GitHub 发布已发布"]
CD_Python["cd.yml<br/>前缀:v*"]
CD_TS["ts-sdk-cd.yml<br/>前缀:ts-v*"]
CD_CLI["cli-node-cd.yml<br/>前缀:cli-node-v*"]
CD_OpenClaw["openclaw-cd.yml<br/>前缀:openclaw-v*"]
Release --> CD_Python
Release --> CD_TS
Release --> CD_CLI
Release --> CD_OpenClaw
end
来源:.github/workflows/ci.yml:1-118, .github/workflows/cd.yml:1-46, .github/workflows/ts-sdk-cd.yml:1-47, .github/workflows/openclaw-cd.yml:1-10
发布流程
发布通过创建带有特定标签前缀的 GitHub Release 来触发。所有包都使用 OIDC 可信发布以确保安全。
| 包 | 注册表 | 标签前缀 | 工作流 |
|---|---|---|---|
mem0ai (Python) | PyPI | v* | cd.yml |
mem0ai (TS) | npm | ts-v* | ts-sdk-cd.yml |
@mem0/cli (Node) | npm | cli-node-v* | cli-node-cd.yml |
@mem0/openclaw-mem0 | npm | openclaw-v* | openclaw-cd.yml |
详情请参见CI/CD 管线。
来源:CONTRIBUTING.md:65-85, .github/workflows/openclaw-cd.yml:1-10
贡献指南
Mem0 遵循 fork-and-pull-request 工作流。PR 的一个关键要求是 changelog_check,当在 pyproject.toml(Python)或 package.json(TypeScript)中检测到版本升级时,它会强制要求在 docs/changelog/sdk.mdx 中更新文档。
提交前必需:
- Fork 并克隆仓库。
- 创建功能分支
feature/f1。 - 为新功能或错误修复添加测试。
- 确保所有测试在支持的版本上通过。
- 如果版本号发生变化,更新文档和
docs/changelog/sdk.mdx。
详情请参见贡献指南。
来源:CONTRIBUTING.md:5-16, .github/workflows/ci.yml:20-57, .github/workflows/ts-sdk-ci.yml:27-62
文档系统
Mem0 的文档使用 Mintlify,位于 docs/ 目录中。它跟踪 Python SDK、TypeScript SDK 和相关工具的变更。最近的主要更新包括 V3 记忆管线,该管线已过渡到仅 ADD 事件和混合搜索。
详情请参见文档系统。
来源:docs/changelog/sdk.mdx:1-5, docs/changelog/sdk.mdx:41-69
遥测与分析
SDK 包含一个使用 PostHog 的遥测系统,用于跟踪使用情况并改进系统。
遥测实现:
- Python: 通过
MEM0_TELEMETRY环境变量管理。 - TypeScript: 在
UnifiedTelemetry类中实现mem0-ts/src/oss/src/utils/telemetry.ts:40-90。它使用 API 密钥和主机来捕获事件mem0-ts/src/oss/src/utils/telemetry.ts:18-19。 - 采样: OSS 事件以默认速率 0.1 进行采样
mem0-ts/src/oss/src/utils/telemetry.ts:23,而生命周期事件(init、reset)绕过采样mem0-ts/src/oss/src/utils/telemetry.ts:38。 - 版本跟踪: SDK 版本在构建时使用
__MEM0_SDK_VERSION__标识符注入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:14-38, mem0-ts/src/oss/src/utils/telemetry.ts:40-90, mem0-ts/tsup.config.ts:27-29