SuperAPI AI 工具集

crabbox

部署与运维

查看项目

更新于 10-16 13:08

技能介绍

用途

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 重试再替换租约。

暂未提供

关于收费、价格、具体平台支持矩阵之外的细节、效果指标等资料未提供。