用途
Crabbox 是 OpenClaw 的远程验证包装器(wrapper)。当 OpenClaw 需要在远端获得 Linux 证明时使用,涵盖广泛测试、CI 一致性检查、密钥、托管服务、Docker/E2E/包通道、预热可复用机器、同步计时、日志与结果、缓存检查以及租约清理。
Crabbox 本身是传输/编排层,实际后端可以是:
- 代理式 AWS Crabbox:直接 provider,
provider=aws,租约 id 形如cbx_...,syncDelegated=false。 - 透过 Crabbox 的 Blacksmith Testbox:委托 provider,
provider=blacksmith-testbox,id 形如tbx_...,syncDelegated=true。
对于 OpenClaw 维护者的广泛 pnpm 门禁,当既有 Testbox 规则适用时,透过 Crabbox 包装器使用 Blacksmith Testbox 是可接受且通常更优的选择。不要将这类运行描述为 “AWS Crabbox”;应报告为 Testbox-through-Crabbox,并给出 tbx_... id 和 Actions run。
主要能力
- 远端运行命令,同步当前检出内容(Crabbox sync 镜像当前 checkout)。
- 支持多种 provider 与目标:代理式 AWS(默认 Linux 开发者镜像,eu-west-1)、Blacksmith Testbox、静态 SSH 目标(macOS、Windows 原生、Windows WSL2)。
- 可观测性标志:
--preflight、CRABBOX_ENV_ALLOW、--env-from-profile配合--allow-env、--env-helper、--script/--script-stdin、--timing-json、--capture-stdout/--capture-stderr、--capture-on-fail、--keep-on-failure等。 - 支持
--fresh-pr、--full-resync(别名--fresh-sync)等同步控制。 - 通过 JSON 摘要报告 provider、leaseId、syncDelegated、syncPhases、commandPhases、commandMs/totalMs、exitCode 等字段。
使用方式
从仓库根目录运行。先检查包装器与 provider:
command -v crabbox
../crabbox/bin/crabbox --version
pnpm crabbox:run -- --help | sed -n '1,120p'
../crabbox/bin/crabbox desktop launch --help
../crabbox/bin/crabbox webvnc --help
OpenClaw 脚本在存在时优先使用 ../crabbox/bin/crabbox;用户 PATH 中的 shim 可能已过期。
检查 .crabbox.yaml 中的直接 provider 默认值。省略 --provider 意味着当前使用代理式 AWS。
直接代理式 AWS 后端示例(changed gate / full suite / focused rerun 使用 pnpm crabbox:run -- ... --shell -- "env CI=1 ... pnpm test...")。
Blacksmith Testbox through Crabbox 示例:
node scripts/crabbox-wrapper.mjs run \
--provider blacksmith-testbox \
--blacksmith-org openclaw \
--blacksmith-workflow .github/workflows/ci-check-testbox.yml \
--blacksmith-job check \
--blacksmith-ref main \
--idle-timeout 90m \
--ttl 240m \
--timing-json \
-- \
CI=1 NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_TEST_PROJECTS_PARALLEL=6 OPENCLAW_VITEST_MAX_WORKERS=1 OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS=900000 OPENCLAW_TESTBOX=1 OPENCLAW_TESTBOX_REMOTE_RUN=1 pnpm check:changed
静态 SSH 目标示例:
../crabbox/bin/crabbox run --provider ssh --target macos --static-host mac-studio.local -- xcodebuild test
../crabbox/bin/crabbox run --provider ssh --target windows --windows-mode normal --static-host win-dev.local -- pwsh -NoProfile -Command "dotnet test"
../crabbox/bin/crabbox run --provider ssh --target windows --windows-mode wsl2 --static-host win-dev.local -- pnpm test
始终报告实际 provider 与 id。cbx_... 表示 AWS Crabbox;tbx_... 表示透过 Crabbox 的 Blacksmith Testbox。若输出只显示 blacksmith testbox list,先用 blacksmith testbox list --all 再下结论。
适用场景
- OpenClaw 维护者的广泛/重型 pnpm 门禁,需要准备好的 CI 环境时用 Blacksmith Testbox through Crabbox。
- 需要直接 AWS Crabbox 行为、持久直接 provider 租约、
--fresh-pr、--full-resync、环境转发、capture/download 支持或 provider 对比时,使用仓库.crabbox.yaml的代理式 AWS 路径。 - Windows 特有证明:原生代理式 Windows(AWS us-west-2 按需开发者镜像)。
- macOS:只有在用户明确要求代理式 macOS runner 时,确认协调器支持 EC2 Mac 主机生命周期/镜像路由,且操作者具备 AWS EC2 Mac Dedicated Host 配额和 IAM 后,才使用 Crabbox AWS macOS。
- 高效 bug E2E 验证:选择能证明所报告用户路径的最小 Crabbox lane。用户说“在 Crabbox 中测试”时,不是把测试复制到远端机器跑,而是像用户那样复制或安装 OpenClaw,运行失败过的相同 setup/update/CLI/Gateway/API 调用,并从该入口捕获行为。
限制与注意事项
- 对于紧密的编辑循环,优先本地定向测试;广泛门禁属于远端。
- 不要将继承的 shell 环境视为操作者意图。特别是本地 shell 中的
OPENCLAW_LOCAL_CHECK_MODE=throttled不是把广泛 pnpm 检查移到笔记本的许可。仅当用户在当前任务中明确要求本地证明时才使用OPENCLAW_LOCAL_CHECK_MODE=throttled|full。 crabbox actions hydrate/register目前仅限 Linux;静态 macOS 和 Windows 主机请使用普通crabbox run循环。- 不要向委托 provider 传递
--capture-*、--download、--checksum、--force-sync-large、--sync-only、--script*、--fresh-pr、--full-resync或--env-helper;Crabbox 会拒绝这些,因为 provider 拥有 sync 或命令传输。--keep-on-failure对委托一次性运行是可以的。 - 在 blacksmith-testbox 上,env 转发不受支持;密钥应放在 Testbox workflow 中。
- 实时 provider 密钥:使用配置好的密钥工作流,只将所需密钥注入该条命令的远端进程环境;不要打印、不要作为仓库文件同步、不要留在远端 shell 历史或日志中。若无密钥安全注入路径,应说明真实实时 provider 认证被阻塞,而不是静默使用假密钥。
- 不应将 AWS macOS 静默替换为普通 OpenClaw Linux 证明。付费主机阻塞应按配额、IAM、协调器部署或主机可用性报告,而不是回退到本地 macOS。
- 预热直接 provider 租约若疑似过期,先用
--full-resync重试再替换租约。
暂未提供
关于收费、价格、具体平台支持矩阵之外的细节、效果指标等资料未提供。