Speichermodell
Mantis verwendet drei Speicherebenen:- Provider-Image – im Besitz von Crabbox und im Cloud-Provider-Konto gespeichert. Enthält Maschinenfunktionen (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, native Build-Werkzeuge) und leere Cache-Verzeichnisse.
- Status der warmen Lease – im Besitz der aktuellen Operatorsitzung. Kann ein
angemeldetes Browserprofil,
/var/cache/crabbox/pnpmund einen vorbereiteten Quellcode- Checkout enthalten, solange die Lease aktiv ist. - Mantis-Artefakte – im Besitz des OpenClaw-Laufs. Befinden sich unter
.artifacts/qa-e2e/mantis/...; GitHub Actions lädt sie hoch, und die Mantis GitHub App kommentiert Inline-Evidenz im PR.
node_modules oder dist/ in ein Provider-Image ein.
GitHub-Auslösung
Führen Sie den Workflow übermain aus:
candidate_ref ist eingeschränkt, da der Workflow Live-Anmeldedaten verwendet: Er
muss auf die aktuelle Abstammung von main, ein Release-Tag oder den Head eines offenen PRs in
openclaw/openclaw aufgelöst werden.
Der Workflow erzeugt:
- hochgeladenes Artefakt
mantis-slack-desktop-smoke-<run-id>-<attempt> - Inline-PR-Kommentar der Mantis GitHub App
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- Remote-Protokolle:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke --> direkt aktualisiert.
Lokale CLI
Nachweis mit kaltem Quellcode:--hydrate-mode prehydrated nur, wenn der wiederverwendete Remote-Arbeitsbereich bereits
über node_modules und ein gebautes dist/ verfügt; andernfalls verweigert Mantis die Ausführung.
Native Slack-Genehmigungs-UI nachweisen:
--approval-checkpoints und --gateway-setup schließen sich gegenseitig aus. Dabei werden
die optionalen Szenarien slack-approval-exec-native und slack-approval-plugin-native
ausgeführt, sofern Sie nicht ausdrücklich einen Genehmigungs-Checkpoint --scenario übergeben; andere
Slack-Szenarien werden abgelehnt, bevor die VM startet. Der Slack-QA-Runner schreibt
jede Checkpoint-JSON-Datei aus der tatsächlich beobachteten Slack-API-Nachricht; anschließend
rendert der Remote-Watcher diese Nachricht in
approval-checkpoints/<scenario>-pending.png und
approval-checkpoints/<scenario>-resolved.png. Der Lauf schlägt fehl, wenn eine
Checkpoint-JSON-Datei, Nachrichtenevidenz, Bestätigungs-JSON-Datei oder ein gerenderter Screenshot fehlt
oder leer ist.
Kalte GitHub-Actions-Leases besitzen keine Slack-Web-Cookies, daher kann ihre Browseraufnahme
auf dem Slack-Anmeldebildschirm landen. Verlassen Sie sich für den Nachweis von Genehmigungs-Checkpoints auf die
gerenderten Checkpoint-Bilder und Slack-QA-Artefakte statt auf
slack-desktop-smoke.png. Verwenden Sie nur dann eine beibehaltene warme Lease mit einem manuell
angemeldeten Slack-Web-Profil, wenn der Browser-Screenshot selbst
Slack Web zeigen muss.
Hydratisierungsmodi
GitHub Actions bereitet den Kandidaten-Checkout immer vor dem VM-Lauf vor. Sein
pnpm-Store wird nach Betriebssystem, Node-Version und Lockdatei zwischengespeichert. Der
source-Lauf der VM
verwendet außerdem /var/cache/crabbox/pnpm wieder, sofern vorhanden.
Interpretation der Zeitmessung
mantis-slack-desktop-smoke-report.md enthält Phasenzeiten:
crabbox.warmup– Start des Cloud-Providers, Desktop-/Browserbereitschaft, SSH.crabbox.inspect– Abruf der Lease-Metadaten.credentials.prepare– Abruf der Convex-Anmeldedaten-Lease.crabbox.remote_run– Synchronisierung, Browserstart, Installation/Build von OpenClaw oder Hydratisierungsvalidierung, Gateway-Start, Screenshot- und Videoaufnahme.artifacts.copy– Rücksynchronisierung von der VM per rsync.
crabbox.remote_run kann accepted anzeigen, wenn Crabbox einen von null verschiedenen
Remote-Status zurückgibt, Mantis jedoch Metadaten kopiert hat, die belegen, dass entweder die Einrichtung des OpenClaw-Gateways
abgeschlossen wurde oder der Slack-QA-Befehl selbst erfolgreich beendet wurde. Behandeln Sie
accepted als bestanden mit Erläuterung, nicht als fehlgeschlagenes Szenario.
Wenn ein Lauf langsam ist:
- Warmup dominiert: Erstellen Sie vorab ein besseres Crabbox-Provider-Image oder stufen Sie eines hoch.
remote_rundominiert insource: Verwenden Sie eine warme Lease, verbessern Sie die Wiederverwendung des pnpm-Stores oder verschieben Sie Maschinenvoraussetzungen in das Provider-Image.remote_rundominiert inprehydrated: Der Remote-Arbeitsbereich war nicht tatsächlich bereit, oder die Einrichtung von Gateway, Browser oder Slack ist langsam.- Das Kopieren von Artefakten dominiert: Prüfen Sie die Videogröße und den Inhalt des Artefaktverzeichnisses.
Evidenz-Checkliste
Ein guter PR-Kommentar zeigt:- Szenario-ID und Kandidaten-SHA
- URL des GitHub-Actions-Laufs und Artefakt-URL
- Inline-Screenshot des Genehmigungs-Checkpoints oder einen Slack-Web-Screenshot aus einer angemeldeten warmen Lease
- animierte Inline-Vorschau, sofern verfügbar
- Links zur vollständigen und gekürzten MP4-Datei
- Bestanden-/Fehlgeschlagen-Status und die Zeitübersicht des Berichts
Fehlerbehandlung
Wenn der Workflow vor dem VM-Lauf fehlschlägt, prüfen Sie zuerst den Actions-Job. Typische Ursachen: nicht vertrauenswürdigescandidate_ref, fehlende Umgebungs-Secrets oder ein
Fehler bei Installation/Build des Kandidaten.
Wenn der VM-Lauf fehlschlägt, die Screenshots jedoch zurückkopiert wurden, prüfen Sie:
crabbox vnc ...
aus dem Bericht und stoppen Sie anschließend die Lease:
--lease-id aus. Betten Sie dieses Browserprofil nicht in ein Provider-Image ein.