Mantis Slack desktop runbook
Mantis Slack 桌面版 QA 是針對需要 Linux 桌面、VNC 救援、Slack Web、真正的 OpenClaw 閘道、螢幕截圖、影片以及 PR 證據註解的 Slack 級別錯誤的真實 UI 通道。
當單元測試或無頭 Slack 即時通道無法證明該錯誤時,請使用此通道。
Mantis 使用三種不同的儲存層:
- 提供者映像檔:由 Crabbox 擁有並儲存在雲端提供者帳戶中。 它包含機器功能,例如 Chrome/Chromium、ffmpeg、scrot、 Node/corepack/pnpm、原生建置工具以及空的快取目錄。
- Warm lease 狀態:由目前操作員 session 擁有。在租約存續期間,它可以包含已登入的瀏覽器設定檔、
/var/cache/crabbox/pnpm,以及準備好的來源 checkout。 - Mantis 產出成果:由 OpenClaw 執行擁有。它們位於
.artifacts/qa-e2e/mantis/...下,接著 GitHub Actions 會將其上傳,且 Mantis GitHub App 會在 PR 上評論內嵌證據。
切勿將機密、瀏覽器 Cookie、Slack 登入狀態、儲存庫 checkout、node_modules 或 dist/ 放入預先建置的提供者映像檔中。
GitHub 分派
Section titled “GitHub 分派”從 main 執行工作流程:
gh workflow run mantis-slack-desktop-smoke.yml \ --ref main \ -f candidate_ref=<trusted-ref-or-sha> \ -f pr_number=<pr-number> \ -f scenario_id=slack-canary \ -f crabbox_provider=aws \ -f keep_vm=false \ -f hydrate_mode=source允許的 candidate_ref 值被有意限制,因為工作流程使用即時憑證:目前的 main 祖系、發行標籤,或來自 openclaw/openclaw 的開放 PR head。
工作流程會寫入:
- 已上傳的產出成果:
mantis-slack-desktop-smoke-<run-id>-<attempt>; - 來自 Mantis GitHub App 的內嵌 PR 註解;
slack-desktop-smoke.png;slack-desktop-smoke.mp4;slack-desktop-smoke-preview.gif;slack-desktop-smoke-change.mp4;mantis-slack-desktop-smoke-summary.json;mantis-slack-desktop-smoke-report.md;- 遠端記錄檔,例如
slack-desktop-command.log、openclaw-gateway.log、chrome.log和ffmpeg.log。
PR 評論會透過隱藏的 <!-- mantis-slack-desktop-smoke --> 標記就地更新。
本機 CLI
Section titled “本機 CLI”冷來源驗證:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --gateway-setup \ --credential-source convex \ --credential-role maintainer \ --provider-mode live-frontier \ --model openai/gpt-5.4 \ --alt-model openai/gpt-5.4 \ --scenario slack-canary \ --hydrate-mode source保留 VM 以供 VNC 救援:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --gateway-setup \ --scenario slack-canary \ --keep-lease開啟 VNC:
crabbox vnc --provider aws --id <cbx_id> --open重用溫熱租用:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --lease-id <cbx_id-or-slug> \ --gateway-setup \ --scenario slack-canary \ --hydrate-mode source只有在重複使用的遠端工作區已經有 node_modules 和建置好的 dist/ 時,才使用 --hydrate-mode prehydrated。如果缺少這些,Mantis 將會以封閉式失敗結束。
驗證原生 Slack 核准 UI:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainer \ --hydrate-mode sourceApproval checkpoint 模式與 --gateway-setup 互斥。除非您傳遞明確的 approval checkpoint --scenario 標誌,否則它會執行 opt-in 的 slack-approval-exec-native 和 slack-approval-plugin-native 情境;其他的 Slack 情境會在 VM 啟動前被拒絕。Slack QA runner 會根據觀察到的真實 Slack API 訊息寫入每個 checkpoint JSON 檔案,然後遠端監看器會將該訊息快照渲染為 approval-checkpoints/<scenario>-pending.png 和 approval-checkpoints/<scenario>-resolved.png。如果缺少任何 checkpoint JSON、訊息證據、ack JSON 或渲染後的螢幕截圖,或是這些檔案為空,則執行會失敗。
Cold GitHub Actions 租用沒有 Slack Web cookies,因此它們的瀏覽器擷取可能會停留在 Slack 登入頁面。對於 approval checkpoint 證明,請信任渲染後的 checkpoint 影像和 Slack QA 成果,而不是 slack-desktop-smoke.png。只有在瀏覽器螢幕截圖本身必須顯示 Slack Web 時,才使用保留的溫租用 (warm lease) 搭配手動登入的 Slack Web 設定檔。
Hydrate 模式
Section titled “Hydrate 模式”| 模式 | 使用時機 | 遠端行為 | 權衡 |
|---|---|---|---|
source | 一般 PR 證明、冷機器、CI | 在 VM 內執行 pnpm install --frozen-lockfile --prefer-offline 和 pnpm build | 最慢,最強的 source-checkout 證明 |
prehydrated | 您刻意準備了可重複使用的租用 | 需要現有的 node_modules 和 dist/;跳過安裝/建構 | 快速,但僅適用於操作員控制的溫租用 |
GitHub Actions 總是在 VM 執行前準備候選的 checkout。其 pnpm store 會依 OS、Node 版本和 lockfile 進行快取。VM source 執行也會在存在時使用 /var/cache/crabbox/pnpm。
mantis-slack-desktop-smoke-report.md 包含階段時間:
crabbox.warmup:雲端供應商啟動、桌面/瀏覽器就緒度以及 SSH。crabbox.inspect:租用元資料查詢。credentials.prepare:Convex 憑證租用取得。crabbox.remote_run:同步、瀏覽器啟動、OpenClaw 安裝/建構或 hydrate 驗證、閘道啟動、螢幕截圖和視訊擷取。artifacts.copy:從 VM 進行 rsync 回傳。
crabbox.remote_run 可以被標記為 accepted,前提是 Crabbox 在 Mantis 複製了證明 OpenClaw
網關設定已完成或 Slack QA 指令本身已成功退出的元數據後,返回非零的
遠端狀態。
將 accepted 視為帶解釋的通過,而非失敗的場景。
如果運行速度較慢:
- warmup 佔主導:預先烘焙或升級更好的 Crabbox provider 映像檔;
- remote_run 在
source中佔主導:使用 warm lease,改善 pnpm store 的重複使用, 或將機器前置需求移入 provider 映像檔中; - remote_run 在
prehydrated中佔主導:遠端工作空間實際上並未 準備就緒,或是 gateway/browser/Slack 設定緩慢; - artifact copy 佔主導:檢查影片大小和 artifact 目錄內容。
證據檢查清單
Section titled “證據檢查清單”一個好的 PR 評論應該顯示:
- scenario id 和 candidate SHA;
- GitHub Actions run URL;
- artifact URL;
- inline approval checkpoint 截圖,或是來自已登入 warm lease 的 Slack Web 截圖;
- inline 動畫預覽(如果可用);
- 完整 MP4 和裁剪後的 MP4 連結;
- pass/fail 狀態;
- 附加報告中的時間摘要。
請勿將截圖或影片提交到儲存庫中。請將它們保留在 GitHub Actions artifacts 或 PR 評論中。
如果 workflow 在 VM 執行之前失敗,請先檢查 Actions job。典型
原因是不受信任的 candidate_ref、遺失環境 secrets,或是 candidate
安裝/建置失敗。
如果 VM 執行失敗但截圖已被複製回來,請檢查:
cat mantis-slack-desktop-smoke-report.mdcat mantis-slack-desktop-smoke-summary.jsoncat slack-desktop-command.logcat openclaw-gateway.logcat chrome.logcat ffmpeg.log如果執行保留了 lease,請使用報告中的 crabbox vnc ... 指令開啟 VNC。
完成後停止 lease:
crabbox stop --provider aws <cbx_id-or-slug>如果 Slack 登入過期,請在保留的 lease 上透過 VNC 修復並使用
--lease-id 重新執行。請勿將該瀏覽器設定檔烘焙到 provider 映像檔中。