Mục tiêu
- Tái hiện lỗi từ một issue hoặc PR trên GitHub với cùng hình dạng transport mà người dùng thấy.
- Thu thập artifact trước trên ref baseline trước khi áp dụng bản sửa.
- Thu thập artifact sau trên ref ứng viên sau khi áp dụng bản sửa.
- Dùng oracle xác định bất cứ khi nào có thể, chẳng hạn như đọc reaction qua Discord REST hoặc kiểm tra transcript kênh.
- Chụp ảnh màn hình khi lỗi có bề mặt UI nhìn thấy được.
- Chạy cục bộ từ CLI do agent điều khiển và chạy từ xa từ GitHub.
- Giữ đủ trạng thái máy để cứu hộ qua VNC khi đăng nhập, tự động hóa trình duyệt, hoặc xác thực provider bị kẹt.
- Đăng trạng thái ngắn gọn lên kênh Discord của operator khi lượt chạy bị chặn, cần hỗ trợ VNC thủ công, hoặc hoàn tất.
Không phải mục tiêu
- Mantis không thay thế unit test. Một lượt chạy Mantis thường nên trở thành một regression test nhỏ hơn sau khi đã hiểu bản sửa.
- Mantis không phải là cổng CI nhanh thông thường. Nó chậm hơn, dùng thông tin xác thực live, và dành riêng cho các lỗi mà môi trường live có ý nghĩa.
- Mantis không nên cần con người trong vận hành bình thường. VNC thủ công là đường cứu hộ, không phải đường vận hành lý tưởng.
- Mantis không lưu secret thô trong artifact, log, ảnh chụp màn hình, báo cáo Markdown, hoặc bình luận PR.
Quyền sở hữu
Mantis nằm trong stack QA của OpenClaw.- OpenClaw sở hữu runtime kịch bản, adapter transport, schema bằng chứng, và
CLI cục bộ dưới
pnpm openclaw qa mantis. - QA Lab sở hữu các phần harness transport live, helper chụp trình duyệt, và writer artifact.
- Crabbox sở hữu các máy Linux đã được làm nóng khi cần VM từ xa.
- GitHub Actions sở hữu entrypoint workflow từ xa và thời gian giữ artifact.
- ClawSweeper sở hữu định tuyến bình luận GitHub: phân tích lệnh maintainer, dispatch workflow, và đăng bình luận PR cuối cùng.
- Các agent OpenClaw điều khiển Mantis qua Codex khi một kịch bản cần thiết lập agentic, gỡ lỗi, hoặc báo cáo trạng thái bị kẹt.
Hình dạng lệnh
Lệnh cục bộ đầu tiên xác minh bot Discord, guild, kênh, gửi tin nhắn, gửi reaction, và đường dẫn artifact:--allow-failures, rồi
ghi baseline/, candidate/, comparison.json, và mantis-report.md. Với
kịch bản Discord đầu tiên, xác minh thành công nghĩa là trạng thái baseline là
fail và trạng thái candidate là pass.
Probe trước/sau thứ hai của Discord nhắm tới attachment trong thread:
message.thread-reply của OpenClaw với filePath cục bộ trong repo,
rồi poll thread để tìm phản hồi SUT và tên file attachment. Ảnh chụp baseline
hiển thị phản hồi không có attachment; ảnh chụp candidate hiển thị attachment
mantis-thread-report.md như kỳ vọng.
Primitive VM/trình duyệt đầu tiên là smoke desktop:
--provider, --crabbox-bin, hoặc
OPENCLAW_MANTIS_CRABBOX_PROVIDER khi chạy với một fleet Crabbox khác.
Các flag smoke desktop hữu ích:
--lease-id <cbx_...>hoặcOPENCLAW_MANTIS_CRABBOX_LEASE_IDtái sử dụng một desktop đã được làm nóng.--browser-url <url>thay đổi trang được mở trong trình duyệt nhìn thấy được.--html-file <path>render một artifact HTML cục bộ trong repo trong trình duyệt nhìn thấy được. Mantis dùng lựa chọn này để chụp timeline status-reaction Discord đã tạo thông qua một desktop Crabbox thật.--browser-profile-dir <remote-path>tái sử dụng Chrome user-data-dir từ xa để một desktop Mantis bền vững có thể duy trì đăng nhập giữa các lượt chạy. Dùng lựa chọn này cho profile viewer Discord Web chạy lâu dài.--browser-profile-archive-env <name>khôi phục một archive Chrome user-data-dir.tgzbase64 từ biến môi trường có tên trước khi khởi chạy trình duyệt. Dùng lựa chọn này cho các witness đã đăng nhập như Discord Web. Biến môi trường mặc định làOPENCLAW_MANTIS_BROWSER_PROFILE_TGZ_B64.--video-duration <seconds>điều khiển độ dài capture MP4. Dùng thời lượng dài hơn cho các ứng dụng web đã đăng nhập chậm cần thời gian ổn định.--keep-leasehoặcOPENCLAW_MANTIS_KEEP_VM=1giữ một lease mới tạo và đã pass mở để kiểm tra qua VNC. Theo mặc định, các lượt chạy thất bại sẽ giữ lease khi lease đó được tạo để operator có thể kết nối lại.--class,--idle-timeout, và--ttltinh chỉnh kích thước máy và vòng đời lease.
thread-reply của SUT, và kiểm tra attachment thông qua Discord REST. Khi
đặt OPENCLAW_QA_DISCORD_CAPTURE_UI_METADATA=1, kịch bản cũng ghi một artifact
URL Discord Web. Khi đặt OPENCLAW_QA_DISCORD_KEEP_THREADS=1, nó để thread đó
tồn tại đủ lâu để trình duyệt đã đăng nhập mở và ghi lại.
Workflow GitHub mở URL thread candidate trong Discord Web, chụp ảnh màn hình,
ghi MP4, và tạo bản xem trước GIF đã cắt theo chuyển động khi tooling media của
Crabbox có sẵn. Nên dùng đường dẫn profile viewer bền vững được cấu hình qua
MANTIS_DISCORD_VIEWER_CHROME_PROFILE_DIR, vì archive profile Chrome đầy đủ có
thể vượt giới hạn kích thước secret của GitHub. Với các profile nhỏ/bootstrap,
workflow cũng có thể khôi phục một archive .tgz base64 từ
MANTIS_DISCORD_VIEWER_CHROME_PROFILE_TGZ_B64. Nếu không cấu hình nguồn profile
nào, workflow vẫn xuất bản ảnh chụp attachment baseline/candidate xác định và
ghi notice rằng witness Discord Web đã đăng nhập đã bị bỏ qua.
Primitive transport desktop đầy đủ đầu tiên là smoke desktop Slack:
pnpm openclaw qa slack bên trong VM đó, mở Slack Web trong trình duyệt
VNC, chụp desktop nhìn thấy được, và sao chép cả artifact QA Slack lẫn ảnh chụp
VNC về thư mục đầu ra cục bộ. Đây là hình dạng Mantis đầu tiên trong đó Gateway
OpenClaw SUT và trình duyệt đều sống trong cùng một VM desktop Linux.
Với --gateway-setup, lệnh chuẩn bị một OpenClaw home dùng một lần nhưng bền
vững tại $HOME/.openclaw-mantis/slack-openclaw, vá cấu hình Slack Socket Mode
cho kênh đã chọn, khởi động openclaw gateway run trên cổng 38973, và giữ
Chrome chạy trong phiên VNC. Đây là chế độ “để lại cho tôi một desktop Linux với
Slack và một claw đang chạy”; lane QA Slack bot-to-bot vẫn là mặc định khi bỏ qua
--gateway-setup.
Đầu vào bắt buộc cho --credential-source env:
OPENCLAW_QA_SLACK_CHANNEL_IDOPENCLAW_QA_SLACK_DRIVER_BOT_TOKENOPENCLAW_QA_SLACK_SUT_BOT_TOKENOPENCLAW_QA_SLACK_SUT_APP_TOKENOPENCLAW_LIVE_OPENAI_KEYcho lane model từ xa. Nếu chỉ đặtOPENAI_API_KEYcục bộ, Mantis ánh xạ nó sangOPENCLAW_LIVE_OPENAI_KEYtrước khi gọi Crabbox để cơ chế chuyển tiếp envOPENCLAW_*của Crabbox có thể mang nó vào VM.
--gateway-setup --credential-source convex, Mantis lease thông tin xác thực
Slack SUT từ pool dùng chung trước khi tạo VM và chuyển tiếp channel id đã lease,
Socket Mode app token, và bot token dưới dạng env runtime OPENCLAW_MANTIS_SLACK_*
bên trong desktop. Điều đó giữ cho workflow GitHub gọn: chúng chỉ cần secret
broker Convex, không cần token bot hoặc app Slack thô.
Các flag desktop Slack hữu ích:
--lease-id <cbx_...>chạy lại trên một máy nơi operator đã đăng nhập Slack Web qua VNC.--gateway-setupkhởi động một Gateway Slack OpenClaw bền vững trong VM thay vì chỉ chạy lane QA bot-to-bot.--keep-leasegiữ VM Gateway mở để kiểm tra qua VNC sau khi thành công;--no-keep-leasedừng nó sau khi thu thập artifact.--slack-url <url>mở một URL Slack Web cụ thể. Nếu không có, Mantis suy rahttps://app.slack.com/client/<team>/<channel>từ Slackauth.testkhi có SUT bot token.--slack-channel-id <id>điều khiển allowlist kênh Slack dùng bởi thiết lập Gateway.OPENCLAW_MANTIS_SLACK_BROWSER_PROFILE_DIRđiều khiển profile Chrome bền vững bên trong VM. Mặc định là$HOME/.config/openclaw-mantis/slack-chrome-profile, nên đăng nhập Slack Web thủ công sẽ tồn tại qua các lượt chạy lại trên cùng lease.--credential-source convex --credential-role cidùng pool thông tin xác thực dùng chung thay vì token env Slack trực tiếp.--provider-mode,--model,--alt-model, và--fasttruyền tiếp vào lane live Slack.
slack-desktop-smoke.png
chỉ là bằng chứng của Slack Web khi lease dùng một profile trình duyệt đã làm
nóng và đã đăng nhập.
Workflow smoke GitHub là Mantis Discord Smoke. Workflow GitHub trước và sau
cho kịch bản thực đầu tiên là Mantis Discord Status Reactions. Nó chấp nhận:
baseline_ref: ref được kỳ vọng sẽ tái hiện hành vi chỉ queued.candidate_ref: ref được kỳ vọng sẽ hiển thịqueued -> thinking -> done.
discord-status-reactions-tool-only với từng worktree, và tải lên
baseline/, candidate/, comparison.json, và mantis-report.md dưới dạng
artifact Actions. Nó cũng render HTML timeline của từng lane trong trình duyệt
desktop Crabbox và xuất bản các ảnh chụp VNC đó bên cạnh các PNG timeline xác
định trong bình luận PR. Cùng bình luận PR đó nhúng các bản xem trước GIF nhẹ đã
cắt theo chuyển động được tạo bởi crabbox media preview, liên kết tới các clip
MP4 đã cắt theo chuyển động tương ứng, và giữ các file MP4 desktop đầy đủ để
kiểm tra sâu. Ảnh chụp màn hình vẫn được nhúng inline để review nhanh. Workflow
build CLI Crabbox từ openclaw/crabbox main để có thể dùng các flag lease
desktop/trình duyệt hiện tại trước khi bản phát hành binary Crabbox tiếp theo
được cắt.
Mantis Scenario là điểm vào thủ công chung. Nó nhận scenario_id,
candidate_ref, baseline_ref tùy chọn và pr_number tùy chọn, rồi
điều phối workflow do kịch bản sở hữu. Wrapper này được cố ý giữ mỏng:
các workflow kịch bản vẫn sở hữu phần thiết lập transport, thông tin xác thực,
lớp VM, oracle kỳ vọng và manifest artifact.
Mantis Slack Desktop Smoke là workflow VM Slack đầu tiên. Nó checkout ref
ứng viên đáng tin cậy trong một worktree riêng, thuê một desktop Linux Crabbox,
chạy pnpm openclaw qa mantis slack-desktop-smoke --gateway-setup trên ứng
viên đó, mở Slack Web trong trình duyệt VNC, ghi hình desktop, tạo bản xem trước
đã cắt theo chuyển động bằng crabbox media preview, tải lên toàn bộ thư mục
artifact, và tùy chọn đăng bình luận bằng chứng nội tuyến trên PR đích.
Mặc định lane này dùng AWS cho lease desktop và cung cấp input provider thủ công
để operator có thể chuyển sang Hetzner khi dung lượng AWS chậm hoặc không khả dụng.
Dùng lane này khi bạn muốn “một desktop Linux có Slack và một claw đang chạy”
thay vì chỉ một transcript Slack bot-với-bot.
Mantis Telegram Live bọc lane QA live Telegram hiện có trong cùng pipeline
bằng chứng PR. Nó checkout ref ứng viên đáng tin cậy trong một worktree riêng,
chạy pnpm openclaw qa telegram --credential-source convex --credential-role ci, ghi manifest mantis-evidence.json từ tóm tắt QA
Telegram, qa-evidence.json và các artifact báo cáo, render HTML bằng chứng
đã biên tập qua trình duyệt desktop Crabbox, tạo GIF đã cắt theo chuyển động
bằng crabbox media preview, và đăng bình luận bằng chứng PR nội tuyến khi có
số PR. Lane này là hình ảnh bằng chứng QA chứ không phải bằng chứng Telegram Web
đã đăng nhập: Telegram Bot API cung cấp bằng chứng tin nhắn live ổn định, nhưng
trạng thái đăng nhập Telegram Web không bắt buộc cho tự động hóa Mantis thông thường.
Mantis Telegram Desktop Proof là wrapper agentic before/after cho Telegram
Desktop native. Maintainer có thể kích hoạt từ bình luận PR bằng
@openclaw-mantis telegram desktop proof, từ giao diện Actions với hướng dẫn
tự do, hoặc thông qua dispatcher chung Mantis Scenario. Workflow chuyển PR,
ref mốc cơ sở, ref ứng viên và hướng dẫn của maintainer cho Codex.
Agent đọc PR, quyết định hành vi hiển thị trên Telegram nào chứng minh thay đổi,
chạy lane bằng chứng Telegram Desktop Crabbox bằng người dùng thật cho mốc cơ sở
và ứng viên, lặp cho đến khi các GIF native hữu ích, ghi các artifact
motionPreview theo cặp vào mantis-evidence.json, tải bundle lên, và đăng
bảng bằng chứng PR 2 cột khi có số PR.
Để thiết lập Telegram desktop có con người tham gia, dùng trình dựng kịch bản:
openclaw gateway run
trên cổng 38974, đăng thông báo sẵn sàng từ driver-bot vào nhóm riêng đã thuê,
rồi chụp ảnh màn hình và MP4 từ desktop VNC đang hiển thị. Token bot không bao giờ
đăng nhập vào Telegram Desktop; nó chỉ cấu hình OpenClaw. Trình xem desktop là
một phiên người dùng Telegram riêng được khôi phục từ
--telegram-profile-archive-env <name> hoặc được tạo thủ công qua VNC và giữ
sống bằng --keep-lease.
Các flag hữu ích cho trình dựng Telegram desktop:
--lease-id <cbx_...>chạy lại trên một VM nơi operator đã đăng nhập vào Telegram Desktop.--telegram-profile-archive-env <name>đọc archive hồ sơ Telegram Desktop.tgzdạng base64 từ biến env đó và khôi phục trước khi khởi chạy.--telegram-profile-dir <remote-path>điều khiển thư mục hồ sơ Telegram Desktop từ xa. Mặc định là$HOME/.local/share/TelegramDesktop.--no-gateway-setupcài đặt và mở Telegram Desktop mà không cấu hình OpenClaw.--credential-source convex --credential-role cidùng broker thông tin xác thực dùng chung thay vì token env Telegram trực tiếp.
mantis-evidence.json cạnh báo cáo của nó.
Schema này là điểm bàn giao giữa mã kịch bản và bình luận GitHub:
path của artifact là đường dẫn tương đối với thư mục manifest.
Giá trị targetPath là đường dẫn tương đối dưới prefix artifact Mantis R2/S3
đã cấu hình. Publisher từ chối path traversal và bỏ qua các mục được đánh dấu
"required": false khi bản xem trước hoặc video tùy chọn không khả dụng.
Các loại artifact được hỗ trợ:
timeline: ảnh chụp màn hình kịch bản xác định, thường là before/after.desktopScreenshot: ảnh chụp màn hình desktop VNC/trình duyệt.motionPreview: GIF động nội tuyến được tạo từ bản ghi desktop.motionClip: MP4 đã cắt theo chuyển động, loại bỏ phần tĩnh đầu và cuối.fullVideo: bản ghi MP4 đầy đủ để kiểm tra sâu.metadata: sidecar JSON/log.report: báo cáo Markdown.
scripts/mantis/publish-pr-evidence.mjs. Các workflow
gọi nó với manifest, PR đích, gốc đích artifact, marker bình luận, URL artifact
Actions, URL run và nguồn yêu cầu. Nó tải các artifact đã khai báo lên bucket
Mantis R2/S3 đã cấu hình, xây dựng bình luận PR ưu tiên tóm tắt với hình ảnh/bản
xem trước nội tuyến và video được liên kết, rồi cập nhật bình luận marker hiện có
hoặc tạo bình luận mới. Các workflow xuất bản lên openclaw-crabbox-artifacts
với URL công khai dưới https://artifacts.openclaw.ai. Chúng cung cấp trực tiếp
các giá trị bucket, region và URL công khai. Publisher tái sử dụng yêu cầu:
MANTIS_ARTIFACT_R2_ACCESS_KEY_IDMANTIS_ARTIFACT_R2_SECRET_ACCESS_KEYMANTIS_ARTIFACT_R2_BUCKETMANTIS_ARTIFACT_R2_ENDPOINTMANTIS_ARTIFACT_R2_REGIONMANTIS_ARTIFACT_R2_PUBLIC_BASE_URL
telegram-status-command. Maintainer có thể ghi đè candidate=...,
provider=aws|hetzner và lease=<cbx_...> khi cần một ref cụ thể hoặc một
desktop Crabbox đã được làm nóng trước.
Ví dụ lệnh ClawSweeper:
Vòng đời chạy
- Lấy thông tin xác thực.
- Cấp phát hoặc tái sử dụng một VM.
- Chuẩn bị hồ sơ desktop/trình duyệt khi kịch bản cần bằng chứng UI.
- Chuẩn bị một checkout sạch cho ref mốc cơ sở.
- Cài đặt dependency và chỉ build những gì kịch bản cần.
- Khởi động một OpenClaw Gateway con với thư mục trạng thái cô lập.
- Cấu hình transport live, provider, model và hồ sơ trình duyệt.
- Chạy kịch bản và thu thập bằng chứng mốc cơ sở.
- Dừng gateway và giữ lại log.
- Chuẩn bị ref ứng viên trong cùng VM.
- Chạy cùng kịch bản đó và thu thập bằng chứng ứng viên.
- So sánh kết quả oracle và bằng chứng hình ảnh.
- Ghi Markdown, JSON, log, ảnh chụp màn hình và artifact trace tùy chọn.
- Tải lên artifact GitHub Actions.
- Đăng thông báo trạng thái PR hoặc Discord ngắn gọn.
- Tái hiện lỗi: mốc cơ sở thất bại theo cách kỳ vọng.
- Lỗi harness: thiết lập môi trường, thông tin xác thực, Discord API, trình duyệt hoặc provider thất bại trước khi oracle lỗi có ý nghĩa.
MVP Discord
Kịch bản đầu tiên nên nhắm tới phản ứng trạng thái Discord trong các kênh guild nơi chế độ gửi phản hồi nguồn làmessage_tool_only.
Vì sao đây là hạt giống Mantis tốt:
- Nó hiển thị trong Discord dưới dạng phản ứng trên tin nhắn kích hoạt.
- Nó có oracle REST mạnh thông qua trạng thái phản ứng tin nhắn Discord.
- Nó kiểm tra một OpenClaw Gateway thật, xác thực bot Discord, điều phối tin nhắn, chế độ gửi phản hồi nguồn, trạng thái phản ứng trạng thái và vòng đời lượt model.
- Nó đủ hẹp để giữ cho triển khai đầu tiên trung thực.
messages.statusReactions.enabled được bật rõ ràng.
Lát cắt có thể thực thi đầu tiên là kịch bản QA live Discord opt-in:
visibleReplies: "message_tool", ackReaction: "👀" và phản ứng trạng thái rõ ràng. Oracle
poll tin nhắn kích hoạt Discord thật và kỳ vọng chuỗi quan sát được
👀 -> 🤔 -> 👍. Artifact bao gồm discord-qa-reaction-timelines.json,
discord-status-reactions-tool-only-timeline.html và
discord-status-reactions-tool-only-timeline.png.
Các thành phần QA hiện có
Mantis nên xây dựng trên stack QA riêng hiện có thay vì bắt đầu từ số không:pnpm openclaw qa discordđã chạy một lane Discord live với driver và bot SUT.- Runner transport live đã ghi báo cáo, bằng chứng QA và artifact theo transport
dưới
.artifacts/qa-e2e/. - Lease thông tin xác thực Convex đã cung cấp quyền truy cập độc quyền vào thông tin xác thực transport live dùng chung.
- Dịch vụ điều khiển trình duyệt đã hỗ trợ ảnh chụp màn hình, snapshot, hồ sơ được quản lý headless và hồ sơ CDP từ xa.
- QA Lab đã có UI debugger và bus cho kiểm thử theo dạng transport.
Mô hình bằng chứng
Mỗi lượt chạy ghi một thư mục artifact ổn định:mantis-summary.json phải là nguồn sự thật có thể đọc bằng máy. Báo cáo
Markdown dùng cho bình luận PR và rà soát của con người.
Bản tóm tắt phải bao gồm:
- refs và SHA đã kiểm thử
- transport và scenario id
- nhà cung cấp máy và machine id hoặc lease id
- nguồn thông tin xác thực không kèm giá trị bí mật
- kết quả baseline
- kết quả candidate
- lỗi có tái hiện trên baseline hay không
- candidate có sửa được lỗi hay không
- đường dẫn artifact
- sự cố thiết lập hoặc dọn dẹp đã được làm sạch dữ liệu nhạy cảm
Trình duyệt và VNC
Lane trình duyệt có hai chế độ:- Tự động hóa headless: mặc định cho CI. Chrome chạy với CDP được bật, và Playwright hoặc điều khiển trình duyệt OpenClaw chụp ảnh màn hình.
- Cứu hộ VNC: được bật trên cùng VM khi đăng nhập, MFA, chống tự động hóa của Discord hoặc gỡ lỗi trực quan cần con người.
- run id
- scenario id
- nhà cung cấp máy
- thư mục artifact
- hướng dẫn kết nối VNC hoặc noVNC nếu có
- văn bản ngắn mô tả điểm chặn
Máy
Mantis nên ưu tiên AWS thông qua Crabbox cho triển khai từ xa đầu tiên. Crabbox cung cấp máy đã được làm nóng, theo dõi lease, hydration, nhật ký, kết quả và dọn dẹp. Nếu dung lượng AWS quá chậm hoặc không khả dụng, thêm một nhà cung cấp Hetzner phía sau cùng giao diện máy. Yêu cầu VM tối thiểu:- Linux có cài đặt Chrome hoặc Chromium hỗ trợ desktop
- quyền truy cập CDP cho tự động hóa trình duyệt
- VNC hoặc noVNC để cứu hộ
- Node 22 và pnpm
- checkout OpenClaw và bộ nhớ đệm phụ thuộc
- bộ nhớ đệm trình duyệt Playwright Chromium khi dùng Playwright
- đủ CPU và bộ nhớ cho một OpenClaw Gateway, một trình duyệt và một lần chạy mô hình
- quyền truy cập outbound tới Discord, GitHub, nhà cung cấp mô hình và credential broker
Bí mật
Bí mật nằm trong GitHub organization hoặc repository secrets cho các lần chạy từ xa, và trong một tệp bí mật cục bộ do operator kiểm soát cho các lần chạy cục bộ. Tên bí mật được khuyến nghị:OPENCLAW_QA_DISCORD_MANTIS_BOT_TOKENOPENCLAW_QA_DISCORD_DRIVER_BOT_TOKENOPENCLAW_QA_DISCORD_SUT_BOT_TOKENOPENCLAW_QA_DISCORD_GUILD_IDOPENCLAW_QA_DISCORD_CHANNEL_IDOPENCLAW_QA_DISCORD_NOTIFY_CHANNEL_IDOPENCLAW_QA_REDACT_PUBLIC_METADATA=1cho tải artifact GitHub công khai lênOPENCLAW_QA_CONVEX_SITE_URLOPENCLAW_QA_CONVEX_SECRET_CIOPENCLAW_QA_MANTIS_CRABBOX_COORDINATOROPENCLAW_QA_MANTIS_CRABBOX_COORDINATOR_TOKEN
CRABBOX_COORDINATOR và CRABBOX_COORDINATOR_TOKEN
mà Crabbox CLI mong đợi. Tên GitHub secret CRABBOX_* thuần vẫn được
chấp nhận làm fallback tương thích.
Mantis runner không bao giờ được in:
- token bot Discord
- khóa API nhà cung cấp
- cookie trình duyệt
- nội dung hồ sơ xác thực
- mật khẩu VNC
- payload thông tin xác thực thô
OPENCLAW_QA_REDACT_PUBLIC_METADATA=1 vì lý do này.
Nếu một token bị dán nhầm vào issue, PR, chat hoặc log, hãy xoay vòng token đó
sau khi secret mới đã được lưu trữ.
Hiện vật GitHub và bình luận PR
Các workflow Mantis phải tải lên toàn bộ gói bằng chứng dưới dạng hiện vật Actions có thời hạn ngắn. Khi workflow được chạy cho một báo cáo lỗi hoặc PR sửa lỗi, nó cũng phải xuất bản media nội tuyến đã được biên tập lại lên bucket Mantis R2/S3 đã cấu hình và upsert một bình luận trên lỗi hoặc PR sửa lỗi đó với ảnh chụp màn hình trước/sau nội tuyến. Không đăng bằng chứng chính chỉ trên một PR tự động hóa QA chung. Log thô, thông báo quan sát được và các bằng chứng cồng kềnh khác nằm trong hiện vật Actions. Các workflow production phải đăng các bình luận đó bằng Mantis GitHub App, không phải bằnggithub-actions[bot]. Lưu app id và private key dưới dạng
secret GitHub Actions MANTIS_GITHUB_APP_ID và MANTIS_GITHUB_APP_PRIVATE_KEY.
Workflow dùng một marker ẩn làm khóa upsert, cập nhật
bình luận đó khi token có thể chỉnh sửa nó, và tạo một bình luận mới do Mantis sở hữu khi
marker cũ do bot sở hữu không thể chỉnh sửa.
Bình luận PR nên ngắn gọn và trực quan:
Ghi chú triển khai riêng tư
Một triển khai riêng tư có thể đã có ứng dụng Discord Mantis. Hãy tái sử dụng ứng dụng đó thay vì tạo app khác khi nó có đúng quyền bot và có thể được xoay vòng an toàn. Thiết lập kênh thông báo ban đầu cho operator thông qua secret hoặc cấu hình triển khai. Trước tiên, kênh này có thể trỏ tới một kênh maintainer hoặc vận hành hiện có, rồi chuyển sang một kênh Mantis chuyên dụng sau khi kênh đó tồn tại. Không đặt guild ids, channel ids, bot tokens, browser cookies hoặc VNC passwords trong tài liệu này. Lưu chúng trong GitHub secrets, credential broker hoặc kho secret cục bộ của operator.Thêm một kịch bản
Một kịch bản Mantis phải khai báo:- id và tiêu đề
- transport
- thông tin xác thực bắt buộc
- chính sách baseline ref
- chính sách candidate ref
- bản vá cấu hình OpenClaw
- các bước thiết lập
- stimulus
- oracle baseline kỳ vọng
- oracle candidate kỳ vọng
- mục tiêu chụp trực quan
- ngân sách timeout
- các bước cleanup
- Trạng thái reaction Discord cho lỗi reaction
- Tham chiếu message Discord cho lỗi threading
- thread ts và trạng thái API reaction của Slack cho lỗi Slack
- message ids và headers của email cho lỗi email
- ảnh chụp màn hình trình duyệt khi UI là quan sát đáng tin cậy duy nhất
Mở rộng provider
Sau Discord, cùng runner đó có thể thêm:- Slack: reactions, threads, app mentions, modals, file uploads.
- Email: xác thực Gmail và threading message bằng
gogkhi connector không đủ. - WhatsApp: đăng nhập QR, tái định danh, gửi message, media, reactions.
- Telegram: chặn group mention, commands, reactions khi có sẵn.
- Matrix: phòng được mã hóa, quan hệ thread hoặc reply, resume sau restart.
Câu hỏi mở
- Bot Discord nào nên là driver, và bot nào nên là SUT, khi bot Mantis hiện có được tái sử dụng?
- Đăng nhập trình duyệt observer nên dùng tài khoản Discord của con người, tài khoản test, hay chỉ bằng chứng REST mà bot đọc được cho giai đoạn đầu?
- GitHub nên lưu giữ hiện vật Mantis cho PR trong bao lâu?
- Khi nào ClawSweeper nên tự động đề xuất Mantis thay vì chờ lệnh maintainer?
- Ảnh chụp màn hình nên được biên tập lại hay cắt trước khi tải lên cho PR công khai?