开发
开发
相关源文件
本章引用的主要源码文件:
.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 的开发工作流遵循一个结构化的流程,从环境搭建到代码贡献和自动化部署。下图展示了完整的开发者旅程:
开发者工作流图:
来源: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 架构图:
来源:.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