环境与调试
测试
OpenClaw 拥有三个 Vitest 测试套件(单元/集成、端到端、实时)和一小部分 Docker 运行器。本文档是一份“我们如何测试”的指南:
- 每个套件涵盖的范围(以及它故意不涵盖的范围)
- 针对常见工作流(本地、推送前、调试)应运行哪些命令
- 实时测试如何发现凭据并选择模型/提供商
- 如何为现实世界中的模型/提供商问题添加回归测试
快速开始
大多数情况下:
- 完整门禁(推送前预期执行):
pnpm build && pnpm check && pnpm test
当你修改了测试或需要额外信心时:
- 覆盖率门禁:
pnpm test:coverage - 端到端测试套件:
pnpm test:e2e
当调试真实提供商/模型时(需要真实凭据):
- 实时测试套件(模型 + 网关工具/图像探针):
pnpm test:live
提示:当你只需要运行一个失败的用例时,建议使用下文描述的允许列表环境 变量来缩小实时测试的范围。
测试套件(分别在何处运行)
可以将这些套件视为“真实性递增”(以及不稳定性/成本递增):
单元 / 集成测试(默认)
- 命令:
pnpm test - 配置:
scripts/test-parallel.mjs(运行vitest.unit.config.ts、vitest.extensions.config.ts、vitest.gateway.config.ts) - 文件:
src/**/*.test.ts、extensions/**/*.test.ts - 范围:
- 纯单元测试
- 进程内集成测试(网关认证、路由、工具、解析、配置)
- 针对已知错误的确定性回归测试
- 期望:
- 在 CI 中运行
- 无需真实密钥
- 应快速且稳定
- 池子说明:
- OpenClaw 在 Node 22/23 上使用 Vitest
vmForks以实现更快的单元分片。 - 在 Node 24+ 上,OpenClaw 会自动回退到常规
forks,以避免 Node VM 链接错误(ERR_VM_MODULE_LINK_FAILURE/module is already linked)。 - 使用
OPENCLAW_TEST_VM_FORKS=0(强制使用forks)或OPENCLAW_TEST_VM_FORKS=1(强制使用vmForks)手动覆盖。
- OpenClaw 在 Node 22/23 上使用 Vitest
端到端测试(网关冒烟测试)
- 命令:
pnpm test:e2e - 配置:
vitest.e2e.config.ts - 文件:
src/**/*.e2e.test.ts - 运行时默认值:
- 使用 Vitest
vmForks以加快文件启动速度。 - 使用自适应工作线程(CI:2-4,本地:4-8)。
- 默认在静默模式下运行以减少控制台 I/O 开销。
- 使用 Vitest
- 有用的覆盖选项:
OPENCLAW_E2E_WORKERS=强制指定工作线程数量(上限为 16)。OPENCLAW_E2E_VERBOSE=1重新启用详细控制台输出。
- 范围:
- 多实例网关端到端行为
- WebSocket/HTTP 接口、节点配对以及更重的网络操作
- 期望:
- 在 CI 中运行(当在流水线中启用时)
- 无需真实密钥
- 比单元测试有更多移动部件(可能更慢)
实时测试(真实提供商 + 真实模型)
- 命令:
pnpm test:live