Модель зберігання
Mantis використовує три рівні зберігання:- Образ провайдера — належить Crabbox і зберігається в обліковому записі хмарного провайдера. Містить можливості машини (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, нативні інструменти збирання) і порожні каталоги кешу.
- Стан прогрітої оренди — належить поточному сеансу оператора. Може містити
профіль браузера з виконаним входом,
/var/cache/crabbox/pnpmі підготовлену робочу копію вихідного коду, доки оренда активна. - Артефакти Mantis — належать запуску OpenClaw. Розташовані в
.artifacts/qa-e2e/mantis/...; GitHub Actions завантажує їх, а GitHub App Mantis додає в PR вбудовані докази.
node_modules або dist/ в образ провайдера.
Запуск через GitHub
Запустіть робочий процес ізmain:
candidate_ref обмежено, оскільки робочий процес використовує чинні облікові дані: він
має відповідати поточній історії main, тегу випуску або головній гілці відкритого PR у
openclaw/openclaw.
Робочий процес створює:
- завантажений артефакт
mantis-slack-desktop-smoke-<run-id>-<attempt> - вбудований коментар у PR від GitHub App Mantis
slack-desktop-smoke.png,slack-desktop-smoke.mp4slack-desktop-smoke-preview.gif,slack-desktop-smoke-change.mp4mantis-slack-desktop-smoke-summary.json,mantis-slack-desktop-smoke-report.md- віддалені журнали:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
Локальний CLI
Перевірка вихідного коду на холодній машині:--hydrate-mode prehydrated лише тоді, коли повторно використовуваний віддалений робочий простір уже
має node_modules і зібраний dist/; інакше Mantis завершує роботу з помилкою.
Підтвердьте нативний інтерфейс схвалення Slack:
--approval-checkpoints і --gateway-setup є взаємовиключними. Якщо не передати явний
сценарій контрольної точки схвалення через --scenario, запускаються сценарії
slack-approval-exec-native і slack-approval-plugin-native, які вмикаються окремо; інші
сценарії Slack відхиляються до запуску віртуальної машини. Засіб виконання QA Slack записує
кожен JSON-файл контрольної точки зі справжнього повідомлення API Slack, яке він спостерігав, після чого
віддалений спостерігач відтворює це повідомлення у файлах
approval-checkpoints/<scenario>-pending.png і
approval-checkpoints/<scenario>-resolved.png. Запуск завершується невдало, якщо будь-який
JSON контрольної точки, доказ повідомлення, JSON підтвердження або відтворений знімок екрана відсутній
чи порожній.
Холодні оренди GitHub Actions не мають файлів cookie Slack Web, тому під час захоплення браузера
може відкритися екран входу в Slack. Для підтвердження контрольних точок схвалення покладайтеся на
відтворені зображення контрольних точок і артефакти QA Slack, а не на
slack-desktop-smoke.png. Використовуйте лише збережену прогріту оренду з профілем
Slack Web, у якому вхід виконано вручну, коли сам знімок браузера має показувати
Slack Web.
Режими підготовки
GitHub Actions завжди готує робочу копію кандидата перед запуском віртуальної машини. Його
сховище pnpm кешується за ОС, версією Node і файлом блокування. Запуск
source у віртуальній машині
також повторно використовує /var/cache/crabbox/pnpm, якщо він наявний.
Інтерпретація тривалості
mantis-slack-desktop-smoke-report.md містить тривалість етапів:
crabbox.warmup— запуск у хмарного провайдера, готовність робочого столу й браузера, SSH.crabbox.inspect— пошук метаданих оренди.credentials.prepare— отримання оренди облікових даних Convex.crabbox.remote_run— синхронізація, запуск браузера, встановлення/збирання OpenClaw або перевірка підготовки, запуск Gateway, створення знімка екрана та запис відео.artifacts.copy— зворотна синхронізація через rsync із віртуальної машини.
crabbox.remote_run може мати стан accepted, коли Crabbox повертає ненульовий
віддалений статус, але Mantis скопіював метадані, які підтверджують, що налаштування Gateway
OpenClaw завершилося або сама команда QA Slack успішно завершила роботу. Вважайте
accepted успішним результатом із поясненням, а не невдалим сценарієм.
Якщо запуск повільний:
- Переважає прогрівання: попередньо зберіть або просуньте кращий образ провайдера Crabbox.
remote_runпереважає вsource: використайте прогріту оренду, покращте повторне використання сховища pnpm або перенесіть необхідні компоненти машини в образ провайдера.remote_runпереважає вprehydrated: віддалений робочий простір насправді не був готовий або налаштування Gateway, браузера чи Slack виконується повільно.- Переважає копіювання артефактів: перевірте розмір відео та вміст каталогу артефактів.
Контрольний список доказів
Хороший коментар у PR містить:- ідентифікатор сценарію та SHA кандидата
- URL запуску GitHub Actions і URL артефакту
- вбудований знімок екрана контрольної точки схвалення або знімок Slack Web із прогрітої оренди, де виконано вхід
- вбудований анімований попередній перегляд, якщо доступний
- посилання на повний і обрізаний MP4
- стан успіху/невдачі та зведення тривалості зі звіту
Обробка помилок
Якщо робочий процес завершується невдало до запуску віртуальної машини, спочатку перевірте завдання Actions. Типові причини: ненадійнийcandidate_ref, відсутні секрети середовища або
помилка встановлення/збирання кандидата.
Якщо запуск віртуальної машини завершується невдало, але знімки екрана було скопійовано назад, перевірте:
crabbox vnc ...
зі звіту, а після завершення зупиніть оренду:
--lease-id. Не вбудовуйте цей профіль браузера в образ провайдера.