Model penyimpanan
Mantis menggunakan tiga lapisan penyimpanan:- Citra penyedia - dimiliki oleh Crabbox, disimpan di akun penyedia cloud. Menampung kemampuan mesin (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, alat pembangunan native) dan direktori cache kosong.
- Status lease hangat - dimiliki oleh sesi operator saat ini. Dapat menampung
profil peramban yang sudah masuk,
/var/cache/crabbox/pnpm, dan checkout sumber yang telah disiapkan selama lease masih aktif. - Artefak Mantis - dimiliki oleh proses OpenClaw. Berada di
.artifacts/qa-e2e/mantis/...; GitHub Actions mengunggahnya dan Aplikasi GitHub Mantis memberikan komentar bukti sebaris pada PR.
node_modules, atau dist/ ke dalam citra penyedia.
Pengiriman GitHub
Jalankan alur kerja darimain:
candidate_ref dibatasi karena alur kerja menggunakan kredensial langsung: referensi ini
harus mengarah ke leluhur main saat ini, tag rilis, atau head PR terbuka di
openclaw/openclaw.
Alur kerja menghasilkan:
- artefak yang diunggah
mantis-slack-desktop-smoke-<run-id>-<attempt> - komentar PR sebaris dari Aplikasi GitHub 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- log jarak jauh:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
CLI lokal
Bukti sumber dingin:--hydrate-mode prehydrated hanya ketika ruang kerja jarak jauh yang digunakan kembali sudah
memiliki node_modules dan dist/ yang telah dibangun; jika tidak, Mantis akan gagal secara tertutup.
Buktikan UI persetujuan native Slack:
--approval-checkpoints tidak dapat digunakan bersamaan dengan --gateway-setup. Opsi ini menjalankan
skenario pilihan slack-approval-exec-native dan slack-approval-plugin-native,
kecuali jika Anda meneruskan --scenario titik pemeriksaan persetujuan secara eksplisit; skenario
Slack lainnya ditolak sebelum VM dimulai. Pelaksana QA Slack menulis
setiap berkas JSON titik pemeriksaan dari pesan API Slack nyata yang diamatinya, lalu
pemantau jarak jauh merender pesan tersebut ke
approval-checkpoints/<scenario>-pending.png dan
approval-checkpoints/<scenario>-resolved.png. Proses gagal jika ada
JSON titik pemeriksaan, bukti pesan, JSON konfirmasi, atau tangkapan layar hasil render yang hilang
atau kosong.
Lease GitHub Actions dingin tidak memiliki cookie Slack Web, sehingga tangkapan perambannya
dapat berakhir di layar masuk Slack. Untuk bukti titik pemeriksaan persetujuan, percayai
gambar titik pemeriksaan hasil render dan artefak QA Slack, bukan
slack-desktop-smoke.png. Gunakan lease hangat yang dipertahankan dengan profil
Slack Web yang telah masuk secara manual hanya ketika tangkapan layar peramban itu sendiri harus menampilkan
Slack Web.
Mode hidrasi
GitHub Actions selalu menyiapkan checkout kandidat sebelum VM dijalankan. Penyimpanan
pnpm-nya di-cache berdasarkan OS, versi Node, dan lockfile. Proses
source di VM
juga menggunakan kembali /var/cache/crabbox/pnpm jika tersedia.
Interpretasi waktu
mantis-slack-desktop-smoke-report.md menyertakan waktu setiap fase:
crabbox.warmup- boot penyedia cloud, kesiapan desktop/peramban, SSH.crabbox.inspect- pencarian metadata lease.credentials.prepare- perolehan lease kredensial Convex.crabbox.remote_run- sinkronisasi, peluncuran peramban, pemasangan/pembangunan OpenClaw atau validasi hidrasi, startup Gateway, tangkapan layar, dan perekaman video.artifacts.copy- rsync kembali dari VM.
crabbox.remote_run dapat menampilkan accepted ketika Crabbox mengembalikan status jarak jauh
bukan nol, tetapi Mantis menyalin metadata yang membuktikan bahwa penyiapan Gateway OpenClaw
telah selesai atau perintah QA Slack itu sendiri berhasil keluar. Perlakukan
accepted sebagai lulus-dengan-penjelasan, bukan skenario yang gagal.
Jika proses berjalan lambat:
- Warmup mendominasi: buat terlebih dahulu atau promosikan citra penyedia Crabbox yang lebih baik.
remote_runmendominasi dalamsource: gunakan lease hangat, tingkatkan penggunaan kembali penyimpanan pnpm, atau pindahkan prasyarat mesin ke dalam citra penyedia.remote_runmendominasi dalamprehydrated: ruang kerja jarak jauh sebenarnya belum siap, atau penyiapan Gateway/peramban/Slack lambat.- Penyalinan artefak mendominasi: periksa ukuran video dan isi direktori artefak.
Daftar periksa bukti
Komentar PR yang baik menampilkan:- ID skenario dan SHA kandidat
- URL proses GitHub Actions dan URL artefak
- tangkapan layar titik pemeriksaan persetujuan sebaris, atau tangkapan layar Slack Web dari lease hangat yang sudah masuk
- pratinjau animasi sebaris jika tersedia
- tautan MP4 lengkap dan MP4 yang dipangkas
- status lulus/gagal dan ringkasan waktu laporan
Penanganan kegagalan
Jika alur kerja gagal sebelum VM dijalankan, periksa tugas Actions terlebih dahulu. Penyebab umum:candidate_ref tidak tepercaya, rahasia lingkungan tidak tersedia, atau
kegagalan pemasangan/pembangunan kandidat.
Jika proses VM gagal tetapi tangkapan layar berhasil disalin kembali, periksa:
crabbox vnc ...
dari laporan, lalu hentikan lease setelah selesai:
--lease-id. Jangan sertakan profil peramban tersebut ke dalam citra penyedia.