Crabbox 把仓库命令放到一次性的“盒子”里执行——可以是本机容器,也可以是租用的远程机器。它同步工作树、运行一条命令、流式返回输出,并以该命令的退出码退出。基本循环为:lease(租用)-> sync(同步)-> run(运行)-> read output(读取输出)-> stop(停止)。
用途与安装:crabbox --version 检查是否已安装;brew install openclaw/tap/crabbox 或从 GitHub Releases 安装;crabbox doctor --provider local-container 做就绪检查,会列出容器运行时、已有租约和所用镜像。
首次运行(无需账号):在任意 Git 仓库中,Docker 或 Podman 运行时可执行 git init(如尚非仓库)与 crabbox run --provider local-container -- uname -a。首次约 30-45 秒,主要耗在容器启动,最初一次还会拉取镜像。
注意基础镜像很精简:默认为纯 Ubuntu,只有 git、curl、tar、python3、rsync 和免密 sudo,没有 node、npm、make、gcc、go、cargo、java。需要运行时请先在热盒子里安装。-- 后的内容按原样作为 argv;若要使用 &&、管道或重定向,需加 --shell 并把 shell 源码作为一个带引号的参数传入。
热盒子复用:crabbox warmup --provider local-container 会打印 slug;之后用 crabbox run --provider local-container --id <slug> -- ./run-tests.sh 和 crabbox status 复用同一容器。热运行约 4 秒,冷运行 33-45 秒。
同步内容:按 Git 过滤的脏工作树,未跟踪但未被忽略的文件也会上传,但排除 node_modules、dist、target、.venv、pycache 等依赖与构建产物;可用 .crabboxignore 追加排除,crabbox sync-plan 可在不启动容器的情况下预览文件数、总字节与最大文件。
错误码:2 表示缺少 --provider,6 表示目录不是 Git 仓库,7 表示无法访问运行时,4 表示 --id 没有对应存活租约。命令自身退出码原样透传,需阅读消息判断。
环境变量默认不传入,需通过 --allow-env 或仓库配置的 env.allow 按名允许。证据标志如 --results-auto 可自动发现并汇总 JUnit XML 报告。用 warmup 或 --keep 保留的盒子需显式执行 crabbox stop --provider local-container <slug> 停止,crabbox list 可查看剩余租约。涉及已有配置文件、其他 provider、命名作业、密钥转发等场景时,应改用完整的 crabbox 技能。