Community程式設計與開發github.com

CrabBox 遠端測試箱

透過 Crabbox 與 Blacksmith Testbox 進行隔離式、跨平台 E2E 測試、診斷與清理。

CrabBox 遠端測試箱 是什麼?

CrabBox 是一個以開發者為中心的技能,專為簡化與自動化隔離式遠端測試而設計。它整合了 Blacksmith 的 Testbox、直接 AWS 租用、本機容器與 SSH 存取等後端服務,提供統一的介面與強大的預檢流程。此技能降低在開發工作流程中取得及管理遠端測試環境的心智負擔,特別適用於 Claude Code、Cursor 與 Codex 等 AI 代理工具。其明確區分「信任」與「不信任」的程式碼執行內容,對不信任的工作負載會強制使用無機密的 CI 環境,並嚴格驗證 AWS 執行個體的 IAM 角色。CrabBox 優先使用最輕量的獲取設定檔,並強制要求必須有記錄的記憶體或成本效益證據,才能提升資源規模。該技能也涵蓋了跨平台 E2E 測試、桌面應用程式互動、以及透過 Blacksmith 目錄下載與 Crabbox 日誌檢查等功能,確保可觀測性與健全的除錯能力。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/crabbox

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

CrabBox 遠端測試箱 是做什麼的?

  • 審慎遠端證明:遵循證明政策。 優先使用合格且可用主機上的有界本機證明。昂貴或 平台特定的工作可採用遠端資源。已佇列:停止自己擁有的租用; 改用 PR CI 或安全的本機範圍,並回報未涵蓋的需求。
  • 絕不等待佇列或鏈結供應商備援。

後端:

  • blacksmith-testbox:受信任維護者來源。已準備 CI。tbx_...。
  • aws:直接經紀的 Crabbox。全新 PR。自訂同步/環境/擷取。cbx_...。
  • local-container:Docker 備援。非遠端證明。
  • ssh:現有操作者主機。macOS/Windows/WSL2。

務必回報供應商、ID、執行 URL、指令、結果。絕不將 Testbox 稱爲「AWS Crabbox」。

儲存庫合約

  • 根據受信任消費者指示,解析範例指令、引導程式、容器映像、PR。絕不自行發明指令或複製其他消費者的設定。
  • 消費者專屬設定需保留在可攜式技能之外。請參閱預留位置定義。

授權與隔離

  • 任務所需之建立、重複使用、清理、暫時狀態、乾淨簽出:已預先核准。保留現有分支、簽出、無關編輯。
  • 來源信任、憑證、正式環境存取、預算、發佈仍是權限界限。隔離狀態;未經每項任務核准,絕不觸碰操作者閘道。

優先路由

  • 保留已解析的供應商:Testbox 用於受信任來源;當 AWS 語意必要時直接使用 AWS;無機密 CI/AWS 用於不信任程式碼。絕不於本機執行不信任的包裝器/設定,或灌入不信任的租用。
  • 在指令就緒時取得;重複使用已擁有的 ID;完成後停止。
  • 最小已證明設定檔。較大設定檔:需要記錄的記憶體證據或測量到的總成本效益,而非一般的失敗/延遲/逾時。不要以提高工作者數量來補償。
  • Testbox 大小設定:--blacksmith-workflow,絕不直接使用 --class/--type;設定檔變更需要全新租用。
  • 大小、持續時間、灌入失敗、容量絕不能授權覆寫供應商;必須有明確的使用者選擇或必要的後端語意。

預檢

受信任儲存庫根目錄:讀取 .crabbox.yaml,解析已安裝的二進位檔,檢查供應商/指令:

export CRABBOX="$(command -v crabbox)"
test -n "$CRABBOX"
"$CRABBOX" --version
"$CRABBOX" config show --json | jq '{provider, profile, target}'
"$CRABBOX" run --help
  • 使用消費者的受信任包裝器/安裝指示。
  • 修復:驗證上游;使用乾淨的任務自有簽出;保留已安裝的二進位檔 + 無關來源。切勿僅憑名稱信任兄弟簽出。

受信任的 Testbox

已解析的供應商 = Testbox(或明確要求):指令保留它。僅在明確覆寫時才加上 --provider blacksmith-testbox:

"$CRABBOX" run --timing-json -- CI=1 <check-command>

多個指令:預熱一次,儲存 ID,重複使用,停止。

"$CRABBOX" warmup --keep --timing-json
"$CRABBOX" run --id <tbx_id> --timing-json -- <check-command>
"$CRABBOX" stop <tbx_id>

規則:

  • 一個租用,一個作用中的指令。執行期間不得同步或回收。
  • 偏好 bash -c;登入設定檔可能變更目錄。在執行 shell 中, 確認實際簽出 + 預期的來源/修補;HEAD 本身 ≠ 髒同步證明。 遵循消費者記錄的灌入 shell 合約。
  • 原生 Testbox 會執行自己的同步,包括重複使用的 --id 執行。絕不依賴 --no-sync 作為遠端基準:Blacksmith 沒有原生繞過方式;已釋出的 Crabbox 版本可能靜默忽略此旗標。未經變更的有意重新執行 ≠ 例外。
  • --reclaim 僅用於明確的簽出路徑擁有權轉移。
  • 基礎/頂端變更:停止;重新預熱。無過期租用覆寫。
  • 原始 SHA 對於 warmup --ref 不可靠;請使用分支/標籤。
  • blacksmith testbox list 會隱藏狀態。使用 list --all 或 status --id <tbx_id>。
  • Testbox 狀態/停止:--id。狀態無 --json。
  • 委派供應商拒絕 --fresh-pr、--full-resync、--script*、 --env-helper、擷取/下載旗標。

Blacksmith 目錄下載

遞迴下載 + 必要的遠端結尾斜線: 目錄下載。

不信任的 AWS

  • 乾淨的受信任預設分支簽出。已安裝受信任的 Crabbox 二進位檔。
  • 每個經審查的完整 HEAD SHA 使用全新租用。無執行個體角色、Tailscale、灌入。
  • 僅轉送 CI。在 --fresh-pr 旁上傳受信任的引導程式。
cd <clean-trusted-default-branch-checkout>
env -u CRABBOX_AWS_INSTANCE_PROFILE \
  "$CRABBOX" config show --json | \
  jq -e '.aws.instanceProfile == ""' >/dev/null

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  -u CRABBOX_TAILSCALE \
  -u CRABBOX_TAILSCALE_AUTH_KEY \
  -u CRABBOX_TAILSCALE_AUTH_KEY_ENV \
  -u CRABBOX_TAILSCALE_EXIT_NODE \
  -u CRABBOX_TAILSCALE_EXIT_NODE_ALLOW_LAN_ACCESS \
  -u CRABBOX_TAILSCALE_HOSTNAME_TEMPLATE \
  -u CRABBOX_TAILSCALE_TAGS \
  "$CRABBOX" warmup \
  --provider aws --network public --tailscale=false \
  --tailscale-exit-node= \
  --tailscale-exit-node-allow-lan-access=false \
  --keep --timing-json

"$CRABBOX" inspect --provider aws --id <cbx_id> --json | \
  jq -e '.network == "public" and .tailscale == null' >/dev/null

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  CRABBOX_ENV_ALLOW=CI \
  "$CRABBOX" run \
  --provider aws --id <cbx_id> \
  --fresh-pr <owner/repo#number> \
  --no-hydrate --timing-json \
  --script <trusted-bootstrap-script> -- \
  <expected_full_head_sha> <check-command>

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  "$CRABBOX" stop --provider aws <cbx_id>
  • 受信任的引導程式必須證明 IMDSv2 IAM 憑證回傳 404;驗證 SHA; 移除執行階段注入變數;鎖定工具鏈;在安裝/測試前隔離 HOME。
  • 變更 HEAD:全新租用。缺少遠端 PR 或無角色證明:無機密分支 CI。

直接 AWS

  • 受信任的 AWS 指令、認證診斷、重新同步、乾淨的 PR/容器執行:請參閱 直接供應商。
  • 容器執行時保留 --no-hydrate;將本機容器證明回報為本機。

可觀測性

  • 收集成品/注入憑證:請參閱 擷取與環境旗標。
  • 確切的金鑰,一個指令。絕不輸出密碼、寫入儲存庫,或放入 shell 歷史記錄。
  • 無安全注入路徑:即時認證被封鎖;假金鑰證明不足。

真實 E2E

  • 使用隔離的消費者狀態來練習要求的使用者進入點,而不僅是遠端單元測試。
  • 對於安裝/供應商/互動式證明 + 安全的修訂版比較:請參閱 E2E 程序。

桌面 / 跨作業系統

SSH 目標、付費 macOS 預檢、WebVNC、應用程式交接驗證:請參閱 桌面與跨作業系統指令。

故障分類

識別包裝器、供應商、灌入、同步、SSH 或指令失敗:

"$CRABBOX" doctor
"$CRABBOX" status --id <id>
"$CRABBOX" inspect --id <id> --json
"$CRABBOX" logs <run_id>
"$CRABBOX" results <run_id>
blacksmith testbox list --all
blacksmith testbox status --id <tbx_id>
  • 已佇列容量:停止自己擁有的租用;遵循證明政策。無重試風暴 或切換供應商。
  • 過期同步:--debug --timing-json,然後對直接供應商使用一次 --full-resync。
  • 在聚焦重新執行前,讀取失敗階段/JUnit。損壞的包裝器:使用已安裝的 CLI 在同一供應商上診斷;透過消費者的受信任路徑更新。
  • 僅停止自己擁有的 ID;stop 不接受 --timing-json。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

相關技能