Mô hình lưu trữ
Mantis sử dụng ba lớp lưu trữ:- Ảnh nhà cung cấp - thuộc quyền quản lý của Crabbox, được lưu trong tài khoản nhà cung cấp đám mây. Chứa các khả năng của máy (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, công cụ dựng mã gốc) và các thư mục bộ nhớ đệm trống.
- Trạng thái phiên thuê đã làm nóng - thuộc quyền quản lý của phiên vận hành hiện tại. Có thể chứa
hồ sơ trình duyệt đã đăng nhập,
/var/cache/crabbox/pnpmvà bản lấy mã nguồn đã chuẩn bị trong thời gian phiên thuê còn hoạt động. - Tạo tác Mantis - thuộc quyền quản lý của lượt chạy OpenClaw. Nằm trong
.artifacts/qa-e2e/mantis/...; GitHub Actions tải chúng lên và Ứng dụng GitHub Mantis bình luận bằng chứng nội tuyến trên PR.
node_modules hoặc dist/ vào ảnh nhà cung cấp.
Kích hoạt GitHub
Chạy quy trình làm việc từmain:
candidate_ref bị hạn chế vì quy trình làm việc sử dụng thông tin xác thực trực tiếp: giá trị này
phải phân giải thành một phần lịch sử của main hiện tại, một thẻ phát hành hoặc đầu nhánh của một PR đang mở trong
openclaw/openclaw.
Quy trình làm việc tạo ra:
- tạo tác được tải lên
mantis-slack-desktop-smoke-<run-id>-<attempt> - bình luận nội tuyến trên PR từ Ứng dụng 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- nhật ký từ xa:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
CLI cục bộ
Bằng chứng mã nguồn trên máy lạnh:--hydrate-mode prehydrated khi không gian làm việc từ xa được tái sử dụng đã có
node_modules và dist/ đã được dựng; nếu không, Mantis sẽ từ chối thực thi theo hướng an toàn.
Chứng minh giao diện phê duyệt Slack gốc:
--approval-checkpoints loại trừ lẫn nhau với --gateway-setup. Cờ này chạy
các kịch bản chọn tham gia slack-approval-exec-native và slack-approval-plugin-native,
trừ khi bạn truyền một --scenario điểm kiểm tra phê duyệt cụ thể; các kịch bản
Slack khác sẽ bị từ chối trước khi máy ảo khởi động. Trình chạy Slack QA ghi
từng tệp JSON điểm kiểm tra từ thông báo API Slack thực mà nó quan sát được, sau đó
trình theo dõi từ xa kết xuất thông báo đó thành
approval-checkpoints/<scenario>-pending.png và
approval-checkpoints/<scenario>-resolved.png. Lượt chạy thất bại nếu thiếu hoặc để trống
bất kỳ JSON điểm kiểm tra, bằng chứng thông báo, JSON xác nhận hoặc ảnh chụp màn hình đã kết xuất nào.
Các phiên thuê GitHub Actions lạnh không có cookie Slack Web, vì vậy bản chụp trình duyệt
có thể dừng ở màn hình đăng nhập Slack. Đối với bằng chứng điểm kiểm tra phê duyệt, hãy tin cậy
các ảnh điểm kiểm tra đã kết xuất và tạo tác Slack QA thay vì
slack-desktop-smoke.png. Chỉ sử dụng phiên thuê đã làm nóng được giữ lại với hồ sơ
Slack Web đã đăng nhập thủ công khi chính ảnh chụp trình duyệt phải hiển thị
Slack Web.
Chế độ chuẩn bị
GitHub Actions luôn chuẩn bị bản lấy mã nguồn ứng viên trước khi chạy máy ảo. Kho pnpm của nó
được lưu đệm theo hệ điều hành, phiên bản Node và tệp khóa. Lượt chạy
source trên máy ảo
cũng tái sử dụng /var/cache/crabbox/pnpm khi có.
Diễn giải thời gian
mantis-slack-desktop-smoke-report.md bao gồm thời gian của các giai đoạn:
crabbox.warmup- khởi động nhà cung cấp đám mây, mức sẵn sàng của desktop/trình duyệt, SSH.crabbox.inspect- tra cứu siêu dữ liệu phiên thuê.credentials.prepare- nhận phiên thuê thông tin xác thực Convex.crabbox.remote_run- đồng bộ, khởi chạy trình duyệt, cài đặt/dựng OpenClaw hoặc xác thực trạng thái chuẩn bị, khởi động Gateway, chụp ảnh màn hình và quay video.artifacts.copy- đồng bộ ngược từ máy ảo bằng rsync.
crabbox.remote_run có thể hiển thị accepted khi Crabbox trả về trạng thái từ xa khác 0
nhưng Mantis đã sao chép siêu dữ liệu chứng minh rằng quá trình thiết lập Gateway OpenClaw
đã hoàn tất hoặc chính lệnh Slack QA đã thoát thành công. Hãy coi
accepted là đạt kèm giải thích, không phải kịch bản thất bại.
Nếu lượt chạy chậm:
- Giai đoạn làm nóng chiếm phần lớn thời gian: tạo sẵn hoặc nâng cấp lên ảnh nhà cung cấp Crabbox tốt hơn.
remote_runchiếm phần lớn thời gian ở chế độsource: sử dụng phiên thuê đã làm nóng, cải thiện khả năng tái sử dụng kho pnpm hoặc chuyển các điều kiện tiên quyết của máy vào ảnh nhà cung cấp.remote_runchiếm phần lớn thời gian ở chế độprehydrated: không gian làm việc từ xa chưa thực sự sẵn sàng hoặc quá trình thiết lập Gateway/trình duyệt/Slack chậm.- Sao chép tạo tác chiếm phần lớn thời gian: kiểm tra kích thước video và nội dung thư mục tạo tác.
Danh sách kiểm tra bằng chứng
Một bình luận PR tốt hiển thị:- mã kịch bản và SHA của ứng viên
- URL lượt chạy GitHub Actions và URL tạo tác
- ảnh chụp màn hình điểm kiểm tra phê duyệt nội tuyến hoặc ảnh chụp Slack Web từ một phiên thuê đã làm nóng và đã đăng nhập
- bản xem trước động nội tuyến khi có
- liên kết đến MP4 đầy đủ và MP4 đã cắt gọn
- trạng thái đạt/không đạt và bản tóm tắt thời gian của báo cáo
Xử lý lỗi
Nếu quy trình làm việc thất bại trước khi chạy máy ảo, trước tiên hãy kiểm tra tác vụ Actions. Nguyên nhân thường gặp:candidate_ref không đáng tin cậy, thiếu bí mật môi trường hoặc
cài đặt/dựng ứng viên thất bại.
Nếu lượt chạy máy ảo thất bại nhưng ảnh chụp màn hình đã được sao chép ngược, hãy kiểm tra:
crabbox vnc ...
trong báo cáo, sau đó dừng phiên thuê khi hoàn tất:
--lease-id. Không đưa hồ sơ trình duyệt đó vào ảnh nhà cung cấp.