Get started
Операційний посібник для настільного клієнта Mantis Slack
Mantis Slack desktop QA — це смуга з реальним UI для помилок класу Slack, які потребують Linux desktop, аварійного доступу VNC, Slack Web, справжнього OpenClaw Gateway, знімків екрана, відео та коментаря з доказами в PR.
Використовуйте її, коли модульні тести або headless Slack live lane не можуть довести помилку.
Модель зберігання
Mantis використовує три різні рівні зберігання:
- Образ провайдера: належить Crabbox і зберігається в обліковому записі хмарного провайдера. Він містить можливості машини, як-от Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, нативні інструменти складання та порожні каталоги кешу.
- Стан теплого lease: належить поточній сесії оператора. Він може містити
профіль браузера з виконаним входом,
/var/cache/crabbox/pnpmі підготовлений вихідний checkout, доки lease активний. - Артефакти Mantis: належать запуску OpenClaw. Вони розміщуються в
.artifacts/qa-e2e/mantis/..., потім GitHub Actions завантажує їх, а Mantis GitHub App коментує inline-докази в PR.
Ніколи не додавайте секрети, cookies браузера, стан входу Slack, checkout-и репозиторію,
node_modules або dist/ у попередньо запечений образ провайдера.
GitHub dispatch
Запустіть workflow з 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 навмисно вузькі, оскільки workflow
використовує живі облікові дані: поточна історія main, release tags або head відкритого PR
з openclaw/openclaw.
Workflow записує:
- завантажений артефакт:
mantis-slack-desktop-smoke-<run-id>-<attempt>; - inline-коментар PR від Mantis GitHub App;
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
Холодне доведення з source:
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
Повторно використати теплий lease:
pnpm openclaw qa mantis slack-desktop-smoke \
--provider aws \
--lease-id <cbx_id-or-slug> \
--gateway-setup \
--scenario slack-canary \
--hydrate-mode source
Використовуйте --hydrate-mode prehydrated лише тоді, коли повторно використаний віддалений workspace уже
має node_modules і зібраний dist/. Mantis завершується закрито, якщо вони
відсутні.
Режими hydrate
| Режим | Коли використовувати | Віддалена поведінка | Компроміс |
|---|---|---|---|
source |
Звичайне доведення PR, холодні машини, CI | Запускає pnpm install --frozen-lockfile --prefer-offline і pnpm build всередині VM |
Найповільніше, найсильніше доведення з source-checkout |
prehydrated |
Ви навмисно підготували повторний lease | Вимагає наявних node_modules і dist/; пропускає install/build |
Швидко, але чинно лише для контрольованих оператором теплих lease |
GitHub Actions завжди готує checkout кандидата перед запуском VM. Його
pnpm store кешується за OS, версією Node і lockfile. Запуск source у VM також
використовує /var/cache/crabbox/pnpm, коли він наявний.
Інтерпретація таймінгів
mantis-slack-desktop-smoke-report.md містить таймінги фаз:
crabbox.warmup: запуск хмарного провайдера, готовність desktop/browser і SSH.crabbox.inspect: пошук метаданих lease.credentials.prepare: отримання lease облікових даних Convex.crabbox.remote_run: синхронізація, запуск браузера, install/build OpenClaw або перевірка hydrate, запуск Gateway, знімок екрана та захоплення відео.artifacts.copy: rsync назад із VM.
crabbox.remote_run може бути позначено як accepted, коли Crabbox повертає ненульовий
віддалений статус після того, як Mantis скопіював метадані, що доводять, що OpenClaw Gateway
живий і setup завершено. Вважайте accepted проходженням із поясненням,
а не проваленим сценарієм.
Якщо запуск повільний:
- домінує warmup: prebake або просуньте кращий образ провайдера Crabbox;
- домінує remote_run у
source: використайте теплий lease, поліпшіть повторне використання pnpm store або перенесіть передумови машини в образ провайдера; - домінує remote_run у
prehydrated: віддалений workspace насправді не був готовий або setup Gateway/browser/Slack повільний; - домінує копіювання артефактів: перевірте розмір відео та вміст каталогу артефактів.
Контрольний список доказів
Якісний коментар PR має показувати:
- id сценарію та SHA кандидата;
- URL запуску GitHub Actions;
- URL артефакту;
- inline-знімок екрана;
- inline-анімований preview, коли доступний;
- посилання на повне MP4 і обрізане MP4;
- статус pass/fail;
- підсумок таймінгів у прикріпленому звіті.
Не commit-іть знімки екрана чи відео в репозиторій. Зберігайте їх в артефактах GitHub Actions або коментарі PR.
Обробка збоїв
Якщо workflow падає до запуску VM, спершу перевірте job Actions. Типові
причини — недовірений candidate_ref, відсутні секрети середовища або збій
install/build кандидата.
Якщо запуск VM падає, але знімки екрана були скопійовані назад, перевірте:
cat mantis-slack-desktop-smoke-report.md
cat mantis-slack-desktop-smoke-summary.json
cat slack-desktop-command.log
cat openclaw-gateway.log
cat chrome.log
cat ffmpeg.log
Якщо запуск залишив lease, відкрийте VNC командою crabbox vnc ... зі звіту.
Зупиніть lease після завершення:
crabbox stop --provider aws <cbx_id-or-slug>
Якщо вхід Slack протермінувався, відремонтуйте його у VNC на збереженому lease і повторно запустіть із
--lease-id. Не запікайте цей профіль браузера в образ провайдера.