Model przechowywania
Mantis używa trzech różnych warstw przechowywania:- Obraz dostawcy: zarządzany przez Crabbox i przechowywany na koncie dostawcy chmurowego. Zawiera możliwości maszyny, takie jak Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, natywne narzędzia build i puste katalogi pamięci podręcznej.
- Ciepły stan dzierżawy: zarządzany przez bieżącą sesję operatora. Może zawierać
zalogowany profil przeglądarki,
/var/cache/crabbox/pnpmoraz przygotowany checkout źródeł, dopóki dzierżawa jest aktywna. - Artefakty Mantis: zarządzane przez przebieg OpenClaw. Znajdują się w
.artifacts/qa-e2e/mantis/..., następnie GitHub Actions je przesyła, a aplikacja GitHub Mantis komentuje dowody inline w PR.
node_modules ani dist/ we wstępnie przygotowanym obrazie dostawcy.
Dispatch GitHub
Uruchom workflow zmain:
candidate_ref są celowo wąskie, ponieważ workflow
używa poświadczeń live: bieżące pochodzenie main, tagi wydań albo głowica otwartego PR
z openclaw/openclaw.
Workflow zapisuje:
- przesłany artefakt:
mantis-slack-desktop-smoke-<run-id>-<attempt>; - komentarz inline w PR z aplikacji GitHub Mantis;
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;- zdalne logi, takie jak
slack-desktop-command.log,openclaw-gateway.log,chrome.logiffmpeg.log.
<!-- mantis-slack-desktop-smoke -->.
Lokalne CLI
Dowód ze świeżych źródeł:--hydrate-mode prehydrated tylko wtedy, gdy ponownie używana zdalna przestrzeń robocza
ma już node_modules i zbudowane dist/. Mantis odmawia kontynuacji, jeśli ich
brakuje.
Udowodnij natywny UI zatwierdzania Slack:
--gateway-setup. Uruchamia
opcjonalne scenariusze slack-approval-exec-native i slack-approval-plugin-native,
chyba że przekażesz jawne flagi punktów kontrolnych zatwierdzania --scenario; inne
scenariusze Slack są odrzucane przed startem VM. Runner QA Slack zapisuje
każdy plik JSON punktu kontrolnego z prawdziwej wiadomości API Slack, którą zaobserwował,
a następnie zdalny watcher renderuje migawkę tej wiadomości do
approval-checkpoints/<scenario>-pending.png i
approval-checkpoints/<scenario>-resolved.png. Przebieg kończy się niepowodzeniem, jeśli brakuje
jakiegokolwiek JSON punktu kontrolnego, dowodu wiadomości, JSON ack albo wyrenderowanego zrzutu ekranu,
albo jeśli są puste.
Zimne dzierżawy GitHub Actions nie mają ciasteczek Slack Web, więc ich przechwytywanie
przeglądarki może trafić na logowanie Slack. W przypadku dowodu punktu kontrolnego zatwierdzania ufaj
wyrenderowanym obrazom punktów kontrolnych i artefaktom QA Slack zamiast
slack-desktop-smoke.png. Użyj zachowanej ciepłej dzierżawy z ręcznie zalogowanym profilem
Slack Web tylko wtedy, gdy sam zrzut ekranu przeglądarki musi pokazywać Slack Web.
Tryby hydrate
| Tryb | Użyj, gdy | Zachowanie zdalne | Kompromis |
|---|---|---|---|
source | Normalny dowód PR, zimne maszyny, CI | Uruchamia pnpm install --frozen-lockfile --prefer-offline i pnpm build wewnątrz VM | Najwolniejszy, najsilniejszy dowód z checkoutu źródeł |
prehydrated | Celowo przygotowano ponownie używaną dzierżawę | Wymaga istniejących node_modules i dist/; pomija install/build | Szybki, ale poprawny tylko dla ciepłych dzierżaw kontrolowanych przez operatora |
/var/cache/crabbox/pnpm, gdy jest dostępny.
Interpretacja czasu
mantis-slack-desktop-smoke-report.md zawiera czasy faz:
crabbox.warmup: rozruch dostawcy chmurowego, gotowość pulpitu/przeglądarki oraz SSH.crabbox.inspect: wyszukiwanie metadanych dzierżawy.credentials.prepare: pozyskanie dzierżawy poświadczeń Convex.crabbox.remote_run: synchronizacja, uruchomienie przeglądarki, instalacja/build OpenClaw albo walidacja hydrate, start Gateway, zrzut ekranu i przechwytywanie wideo.artifacts.copy: rsync z powrotem z VM.
crabbox.remote_run może być oznaczone jako accepted, gdy Crabbox zwraca niezerowy
zdalny status po tym, jak Mantis skopiował metadane dowodzące, że albo konfiguracja Gateway
OpenClaw została ukończona, albo samo polecenie QA Slack zakończyło się pomyślnie.
Traktuj accepted jako zaliczenie z wyjaśnieniem, a nie nieudany scenariusz.
Jeśli przebieg jest wolny:
- dominuje warmup: wstępnie przygotuj albo wypromuj lepszy obraz dostawcy Crabbox;
- dominuje remote_run w
source: użyj ciepłej dzierżawy, popraw ponowne użycie magazynu pnpm albo przenieś wymagania maszyny do obrazu dostawcy; - dominuje remote_run w
prehydrated: zdalna przestrzeń robocza nie była faktycznie gotowa albo konfiguracja Gateway/przeglądarki/Slack jest wolna; - dominuje kopiowanie artefaktów: sprawdź rozmiar wideo i zawartość katalogu artefaktów.
Lista kontrolna dowodów
Dobry komentarz w PR powinien pokazywać:- identyfikator scenariusza i SHA kandydata;
- URL przebiegu GitHub Actions;
- URL artefaktu;
- zrzut ekranu punktu kontrolnego zatwierdzania inline albo zrzut ekranu Slack Web z zalogowanej ciepłej dzierżawy;
- animowany podgląd inline, gdy jest dostępny;
- linki do pełnego MP4 i przyciętego MP4;
- status powodzenia/niepowodzenia;
- podsumowanie czasu w załączonym raporcie.
Obsługa niepowodzeń
Jeśli workflow zawiedzie przed uruchomieniem VM, najpierw sprawdź zadanie Actions. Typowe przyczyny to niezaufanycandidate_ref, brakujące sekrety środowiska albo niepowodzenie
instalacji/buildu kandydata.
Jeśli przebieg VM zawiedzie, ale zrzuty ekranu zostały skopiowane z powrotem, sprawdź:
crabbox vnc ... z raportu.
Zatrzymaj dzierżawę po zakończeniu:
--lease-id. Nie wypiekaj tego profilu przeglądarki w obrazie dostawcy.