用途
mem0-test-integration 用于验证由 /mem0-integrate 生成的 Mem0 集成。它在同一工作区、同一功能分支上运行,采用松耦合设计——速度快,能捕获编译和运行时错误,但不捕获逻辑错误。
主要能力
- 前置条件检查:要求仓库根目录存在 .mem0-integration/ 目录,其中 product.json、goal.md、plan.md 可读且一致;当前分支名以 mem0-integrate/ 开头;工作树干净;集成使用的 API key 在环境中可用(Platform 用 MEM0_API_KEY,OSS 用 OPENAI_API_KEY)。
- 依赖安装:按 product.json 指定的语言执行安装命令(Python 用 pip,TypeScript/JavaScript 用 npm/pnpm/yarn)。
- 静态检查:包括导入检查、版本检查、类型检查(TS)、Lint 检查、模块级提前初始化检查。
- 单元测试两遍:Pass A 关闭功能开关运行原有测试套件,必须全部通过;Pass B 打开功能开关运行完整测试套件。
- 冒烟测试:执行真实 API 调用的最短往返流程,使用一次性随机 user_id 并清理。
- 端到端测试:按 plan.md 中的 E2E 配方启动应用、触发写入和读取路径,并验证 read_assert。
- 生成评分卡:输出 .mem0-integration/scorecard.md 和 scorecard.json。
使用方式
调用方式:
/mem0-test-integration # 交互式,全部步骤
/mem0-test-integration --ci # 非交互式
/mem0-test-integration --skip-smoke # 不调用 API,不做 E2E
/mem0-test-integration --skip-e2e # 仅单元测试 + 冒烟测试
/mem0-test-integration --only-smoke # 仅冒烟测试
/mem0-test-integration --only-e2e # 仅 E2E(假定依赖已安装)
--skip-* 可叠加使用,--only-* 与其他标志互斥。
适用场景
- 在 /mem0-integrate 完成后,需要验证集成是否引入回归。
- 在 CI 中自动运行验证并消费评分卡 JSON。
- 需要快速确认 SDK 调用能正常工作的场景。
限制
- 不修改源文件,是只读验证。
- 不修复损坏的测试;失败的单元测试被视为集成错误的信号。
- 不进行深层逻辑正确性判断,E2E 只证明“用户之前说的内容后来能返回”,不证明选取了正确的事实、user_id 作用域正确或冲突解决合理。
- 不自我修复;配对 /mem0-integrate 的默认 --heal 模式消费此评分卡并驱动修复循环。退出码 7 表示非侵入性违规,修复循环必须停止。
- 不做跨分支比较,评分卡仅反映当前分支。
- 不针对生产数据运行,冒烟测试使用一次性随机 user_id 并清理。
退出码
- 0:全部检查通过
- 1:前置条件失败
- 2:缺少环境密钥或依赖安装失败
- 3:静态检查失败
- 4:单元测试失败(Pass B)
- 5:冒烟测试失败
- 6:E2E 测试失败
- 7:非侵入性违规(Pass A 失败)
- 8:内部错误
产物
所有产物位于 .mem0-integration/ 下,包括 scorecard.md、scorecard.json、test-stdout-flag-off.log、test-stdout-flag-on.log、smoke-stdout.log、e2e-app.log、e2e-calls.log,每次运行覆盖。评分卡文件不提交,位于 gitignore 中。