Hedefler
- Bir GitHub issue’sundan veya PR’ından bir hatayı, kullanıcıların gördüğü aynı taşıma katmanı şekliyle yeniden üretmek.
- Düzeltmeyi uygulamadan önce temel ref üzerinde bir önce yapıtı yakalamak.
- Düzeltmeyi uyguladıktan sonra aday ref üzerinde bir sonra yapıtı yakalamak.
- Mümkün olduğunda Discord REST tepki okuması veya kanal dökümü denetimi gibi deterministik bir oracle kullanmak.
- Hatanın görünür bir kullanıcı arayüzü yüzeyi olduğunda ekran görüntüleri yakalamak.
- Bir agent kontrollü CLI’dan yerel olarak ve GitHub’dan uzaktan çalışmak.
- Oturum açma, tarayıcı otomasyonu veya sağlayıcı kimlik doğrulaması takıldığında VNC kurtarması için yeterli makine durumunu korumak.
- Çalıştırma engellendiğinde, manuel VNC yardımı gerektiğinde veya bittiğinde bir operatör Discord kanalına kısa durum göndermek.
Hedef olmayanlar
- Mantis, birim testlerin yerine geçmez. Bir Mantis çalıştırması, düzeltme anlaşıldıktan sonra genellikle daha küçük bir regresyon testine dönüşmelidir.
- Mantis, normal hızlı CI kapısı değildir. Daha yavaştır, canlı kimlik bilgileri kullanır ve canlı ortamın önemli olduğu hatalar için ayrılmıştır.
- Mantis, normal çalışma için bir insan gerektirmemelidir. Manuel VNC bir kurtarma yoludur, mutlu yol değildir.
- Mantis, ham sırları yapıtlarda, günlüklerde, ekran görüntülerinde, Markdown raporlarında veya PR yorumlarında saklamaz.
Sahiplik
Mantis, OpenClaw QA yığınında yaşar.- OpenClaw, senaryo runtime’ının, taşıma katmanı adaptörlerinin, kanıt şemasının ve
pnpm openclaw qa mantisaltındaki yerel CLI’ın sahibidir. - QA Lab, canlı taşıma katmanı harness parçalarının, tarayıcı yakalama yardımcılarının ve yapıt yazıcılarının sahibidir.
- Crabbox, uzak VM gerektiğinde ısıtılmış Linux makinelerinin sahibidir.
- GitHub Actions, uzak workflow giriş noktasının ve yapıt saklamanın sahibidir.
- ClawSweeper, GitHub yorum yönlendirmenin sahibidir: bakımcı komutlarını ayrıştırma, workflow’u dispatch etme ve son PR yorumunu gönderme.
- OpenClaw agent’ları, bir senaryonun agentic kurulum, hata ayıklama veya takılı durum raporlaması gerektirdiği durumlarda Mantis’i Codex üzerinden sürer.
Komut şekli
İlk yerel komut Discord botunu, guild’i, kanalı, mesaj göndermeyi, tepki göndermeyi ve yapıt yolunu doğrular:--allow-failures ile çalıştırır, ardından baseline/, candidate/, comparison.json ve mantis-report.md yazar. İlk Discord senaryosu için başarılı bir doğrulama, temel durumun fail ve aday durumun pass olması demektir.
İkinci Discord önce/sonra probu thread eklerini hedefler:
filePath ile OpenClaw’ın message.thread-reply eylemini çağırır, ardından SUT yanıtı ve ek dosya adı için thread’i yoklar. Temel ekran görüntüsü, yanıtı ek olmadan gösterir; aday ekran görüntüsü beklenen mantis-thread-report.md ekini gösterir.
İlk VM/tarayıcı ilkeli masaüstü smoke testidir:
--provider, --crabbox-bin veya OPENCLAW_MANTIS_CRABBOX_PROVIDER ile geçersiz kılın.
Kullanışlı masaüstü smoke bayrakları:
--lease-id <cbx_...>veyaOPENCLAW_MANTIS_CRABBOX_LEASE_IDısıtılmış bir masaüstünü yeniden kullanır.--browser-url <url>görünür tarayıcıda açılan sayfayı değiştirir.--html-file <path>repo yerel bir HTML yapıtını görünür tarayıcıda işler. Mantis bunu, oluşturulan Discord durum-tepki zaman çizelgesini gerçek bir Crabbox masaüstü üzerinden yakalamak için kullanır.--browser-profile-dir <remote-path>uzak bir Chrome user-data-dir’i yeniden kullanır, böylece kalıcı bir Mantis masaüstü çalıştırmalar arasında oturumunu açık tutabilir. Bunu uzun ömürlü Discord Web görüntüleyici profili için kullanın.--browser-profile-archive-env <name>tarayıcıyı başlatmadan önce adlandırılmış ortam değişkeninden base64.tgzChrome user-data-dir arşivini geri yükler. Bunu Discord Web gibi oturum açmış tanıklar için kullanın. Varsayılan env varOPENCLAW_MANTIS_BROWSER_PROFILE_TGZ_B64’dir.--video-duration <seconds>MP4 yakalama uzunluğunu denetler. Yerleşmek için zamana ihtiyaç duyan yavaş, oturum açılmış web uygulamaları için daha uzun süre kullanın.--keep-leaseveyaOPENCLAW_MANTIS_KEEP_VM=1, yeni oluşturulmuş başarılı bir kiralamayı VNC incelemesi için açık tutar. Başarısız çalıştırmalar, bir operatörün yeniden bağlanabilmesi için bir kiralama oluşturulduysa varsayılan olarak kiralamayı tutar.--class,--idle-timeoutve--ttlmakine boyutunu ve kiralama ömrünü ayarlar.
thread-reply’ı gönderir ve eki Discord REST üzerinden denetler. OPENCLAW_QA_DISCORD_CAPTURE_UI_METADATA=1 ayarlandığında senaryo ayrıca bir Discord Web URL yapıtı yazar. OPENCLAW_QA_DISCORD_KEEP_THREADS=1 ayarlandığında, oturum açmış bir tarayıcının açıp kaydedebilmesi için o thread’i yeterince uzun süre kullanılabilir bırakır.
GitHub workflow’u aday thread URL’sini Discord Web’de açar, ekran görüntüsü yakalar, MP4 kaydeder ve Crabbox medya araçları kullanılabildiğinde kırpılmış bir GIF önizlemesi oluşturur. MANTIS_DISCORD_VIEWER_CHROME_PROFILE_DIR üzerinden yapılandırılmış kalıcı bir görüntüleyici profil yolunu tercih edin, çünkü tam Chrome profil arşivleri GitHub’ın sır boyutu sınırını aşabilir. Küçük/bootstrap profiller için workflow ayrıca MANTIS_DISCORD_VIEWER_CHROME_PROFILE_TGZ_B64 üzerinden base64 .tgz arşivini geri yükleyebilir. Hiçbir profil kaynağı yapılandırılmamışsa workflow yine de deterministik temel/aday ek ekran görüntülerini yayımlar ve oturum açmış Discord Web tanığının atlandığını belirten bir bildirim günlüğe kaydeder.
İlk tam masaüstü taşıma katmanı ilkeli Slack masaüstü smoke testidir:
pnpm openclaw qa slack çalıştırır, VNC tarayıcısında Slack Web’i açar, görünür masaüstünü yakalar ve hem Slack QA yapıtlarını hem de VNC ekran görüntüsünü yerel çıktı dizinine geri kopyalar. Bu, SUT OpenClaw gateway’in ve tarayıcının aynı Linux masaüstü VM içinde yaşadığı ilk Mantis şeklidir.
--gateway-setup ile komut, $HOME/.openclaw-mantis/slack-openclaw konumunda kalıcı, atılabilir bir OpenClaw home hazırlar, seçili kanal için Slack Socket Mode yapılandırmasını yamalar, 38973 portunda openclaw gateway run başlatır ve Chrome’u VNC oturumunda çalışır durumda tutar. Bu, “bana Slack ve çalışan bir claw içeren bir Linux masaüstü bırak” modudur; --gateway-setup atlandığında bot-to-bot Slack QA hattı varsayılan olarak kalır.
--credential-source env için gerekli girdiler:
OPENCLAW_QA_SLACK_CHANNEL_IDOPENCLAW_QA_SLACK_DRIVER_BOT_TOKENOPENCLAW_QA_SLACK_SUT_BOT_TOKENOPENCLAW_QA_SLACK_SUT_APP_TOKEN- Uzak model hattı için
OPENCLAW_LIVE_OPENAI_KEY. Yerel olarak yalnızcaOPENAI_API_KEYayarlıysa Mantis, Crabbox’ı çağırmadan önce bunuOPENCLAW_LIVE_OPENAI_KEYile eşler, böylece Crabbox’ınOPENCLAW_*env iletimi bunu VM içine taşıyabilir.
--gateway-setup --credential-source convex ile Mantis, VM’i oluşturmadan önce Slack SUT kimlik bilgisini paylaşılan havuzdan kiralar ve kiralanmış kanal id’sini, Socket Mode app token’ını ve bot token’ını masaüstü içindeki OPENCLAW_MANTIS_SLACK_* runtime env olarak iletir. Bu, GitHub workflow’larını ince tutar: ham Slack bot veya app token’ları değil, yalnızca Convex broker sırrı gerekir.
Kullanışlı Slack masaüstü bayrakları:
--lease-id <cbx_...>bir operatörün VNC üzerinden Slack Web’e zaten giriş yaptığı bir makineye karşı yeniden çalıştırır.--gateway-setupyalnızca bot-to-bot QA hattını çalıştırmak yerine VM içinde kalıcı bir OpenClaw Slack gateway başlatır.--keep-leasebaşarıdan sonra gateway VM’ini VNC incelemesi için açık tutar;--no-keep-leaseyapıtları topladıktan sonra durdurur.--slack-url <url>belirli bir Slack Web URL’si açar. Bu olmadan Mantis, SUT bot token’ı kullanılabilir olduğunda Slackauth.testüzerindenhttps://app.slack.com/client/<team>/<channel>türetir.--slack-channel-id <id>gateway kurulumu tarafından kullanılan Slack kanal allowlist’ini denetler.OPENCLAW_MANTIS_SLACK_BROWSER_PROFILE_DIRVM içindeki kalıcı Chrome profilini denetler. Varsayılan$HOME/.config/openclaw-mantis/slack-chrome-profile’dır, böylece manuel Slack Web oturumu aynı kiralamadaki yeniden çalıştırmalarda korunur.--credential-source convex --credential-role cidoğrudan Slack env token’ları yerine paylaşılan kimlik bilgisi havuzunu kullanır.--provider-mode,--model,--alt-modelve--fastSlack canlı hattına iletilir.
slack-desktop-smoke.png, yalnızca kiralama zaten oturum açmış sıcak bir tarayıcı profili kullandığında Slack Web kanıtıdır.
GitHub smoke workflow’u Mantis Discord Smoke’tur. İlk gerçek senaryo için önce ve sonra GitHub workflow’u Mantis Discord Status Reactions’tır. Şunları kabul eder:
baseline_ref: queued-only davranışını yeniden üretmesi beklenen ref.candidate_ref:queued -> thinking -> donegöstermesi beklenen ref.
discord-status-reactions-tool-only çalıştırır ve baseline/, candidate/, comparison.json ve mantis-report.md dosyalarını Actions yapıtları olarak yükler. Ayrıca her hattın zaman çizelgesi HTML’ini bir Crabbox masaüstü tarayıcısında işler ve bu VNC ekran görüntülerini PR yorumunda deterministik zaman çizelgesi PNG’lerinin yanında yayımlar. Aynı PR yorumu, crabbox media preview tarafından oluşturulan hafif, hareketi kırpılmış GIF önizlemelerini gömer, eşleşen hareketi kırpılmış MP4 kliplerine bağlantı verir ve derin inceleme için tam masaüstü MP4 dosyalarını tutar. Ekran görüntüleri hızlı inceleme için satır içi kalır. Workflow, sonraki Crabbox binary sürümü çıkmadan önce güncel masaüstü/tarayıcı kiralama bayraklarını kullanabilmek için Crabbox CLI’ını openclaw/crabbox main’den derler.
Mantis Scenario, genel manuel giriş noktasıdır. Bir scenario_id,
candidate_ref, isteğe bağlı baseline_ref ve isteğe bağlı pr_number alır, ardından
senaryonun sahip olduğu workflow’u dispatch eder. Wrapper bilinçli olarak incedir:
senaryo workflow’ları transport kurulumlarının, kimlik bilgilerinin, VM sınıfının,
beklenen oracle’ın ve artifact manifest’inin sahibi olmaya devam eder.
Mantis Slack Desktop Smoke, ilk Slack VM workflow’udur. Güvenilen candidate ref’i
ayrı bir worktree içinde checkout eder, bir Crabbox Linux masaüstü lease eder,
bu candidate’a karşı pnpm openclaw qa mantis slack-desktop-smoke --gateway-setup
çalıştırır, VNC tarayıcısında Slack Web’i açar, masaüstünü kaydeder,
crabbox media preview ile hareket kırpılmış bir önizleme oluşturur, tam artifact
dizinini upload eder ve isteğe bağlı olarak hedef PR’a inline kanıt yorumunu gönderir.
Masaüstü lease’i için varsayılan olarak AWS kullanır ve operatörlerin AWS kapasitesi
yavaş ya da kullanılamaz olduğunda Hetzner’e geçebilmesi için manuel provider girdisi
sunar. Yalnızca bot’tan bot’a Slack transcript’i yerine “Slack ve çalışan bir claw
içeren Linux masaüstü” istediğinizde bu lane’i kullanın.
Mantis Telegram Live, mevcut Telegram canlı QA lane’ini aynı PR kanıt pipeline’ında
sarmalar. Güvenilen candidate ref’i ayrı bir worktree içinde checkout eder,
pnpm openclaw qa telegram --credential-source convex --credential-role ci
çalıştırır, Telegram QA özetinden, qa-evidence.json dosyasından ve rapor
artifact’lerinden bir mantis-evidence.json manifest’i yazar, redakte edilmiş kanıt
HTML’ini bir Crabbox masaüstü tarayıcısı üzerinden render eder, crabbox media preview
ile hareket kırpılmış bir GIF oluşturur ve PR numarası varsa inline PR kanıt yorumunu
gönderir. Bu lane, oturum açılmış Telegram Web kanıtından ziyade QA kanıtı görselidir:
Telegram Bot API kararlı canlı mesaj kanıtı sağlar, ancak normal Mantis otomasyonu
için Telegram Web oturum durumu gerekmez.
Mantis Telegram Desktop Proof, agentic yerel Telegram Desktop önce/sonra wrapper’ıdır.
Bir maintainer bunu PR yorumundan @openclaw-mantis telegram desktop proof ile,
Actions UI’dan serbest biçimli talimatlarla veya genel Mantis Scenario dispatcher’ı
üzerinden tetikleyebilir. Workflow, PR’ı, baseline ref’i, candidate ref’i ve maintainer
talimatlarını Codex’e verir. Agent PR’ı okur, değişikliği hangi Telegram’da görünür
davranışın kanıtlayacağına karar verir, baseline ve candidate için gerçek kullanıcı
Crabbox Telegram Desktop kanıt lane’ini çalıştırır, yerel GIF’ler yararlı olana kadar
iterasyon yapar, eşleştirilmiş motionPreview artifact’lerini mantis-evidence.json
içine yazar, bundle’ı upload eder ve PR numarası varsa 2 sütunlu bir PR kanıt tablosu
gönderir.
İnsan döngülü Telegram masaüstü kurulumu için senaryo builder’ını kullanın:
38974 portunda openclaw gateway run başlatır, lease edilmiş özel
gruba driver bot hazır mesajı gönderir, ardından görünen VNC masaüstünden bir ekran
görüntüsü ve MP4 yakalar. Bir bot token’ı Telegram Desktop’ta asla oturum açmaz;
yalnızca OpenClaw’ı yapılandırır. Masaüstü görüntüleyici, --telegram-profile-archive-env <name>
üzerinden geri yüklenen veya VNC aracılığıyla manuel oluşturulan ve --keep-lease
ile canlı tutulan ayrı bir Telegram kullanıcı oturumudur.
Yararlı Telegram masaüstü builder flag’leri:
--lease-id <cbx_...>, bir operatörün Telegram Desktop’ta zaten oturum açtığı VM’e karşı yeniden çalıştırır.--telegram-profile-archive-env <name>, bu env var’dan base64.tgzTelegram Desktop profil arşivini okur ve başlatmadan önce geri yükler.--telegram-profile-dir <remote-path>, uzak Telegram Desktop profil dizinini kontrol eder. Varsayılan$HOME/.local/share/TelegramDesktopdeğeridir.--no-gateway-setup, OpenClaw’ı yapılandırmadan Telegram Desktop’ı kurar ve açar.--credential-source convex --credential-role ci, doğrudan Telegram env token’ları yerine paylaşılan kimlik bilgisi broker’ını kullanır.
mantis-evidence.json yazar.
Bu schema, senaryo kodu ile GitHub yorumları arasındaki handoff’tur:
path değerleri manifest dizinine görelidir. targetPath değerleri,
yapılandırılmış Mantis R2/S3 artifact prefix’i altındaki göreli yollardır. Publisher,
path traversal’ı reddeder ve isteğe bağlı önizlemeler veya videolar kullanılamadığında
"required": false olarak işaretlenmiş girdileri atlar.
Desteklenen artifact türleri:
timeline: deterministik senaryo ekran görüntüsü, genellikle önce/sonra.desktopScreenshot: VNC/tarayıcı masaüstü ekran görüntüsü.motionPreview: masaüstü kaydından oluşturulan inline animasyonlu GIF.motionClip: statik giriş ve çıkışı kaldıran hareket kırpılmış MP4.fullVideo: derin inceleme için tam MP4 kaydı.metadata: JSON/log sidecar.report: Markdown raporu.
scripts/mantis/publish-pr-evidence.mjs dosyasıdır.
Workflow’lar onu manifest, hedef PR, artifact hedef kökü, yorum marker’ı, Actions
artifact URL’si, run URL’si ve istek kaynağı ile çağırır. Tanımlanmış artifact’leri
yapılandırılmış Mantis R2/S3 bucket’ına upload eder, inline görseller/önizlemeler ve
bağlantılı videolar içeren özet odaklı bir PR yorumu oluşturur, ardından mevcut marker
yorumunu günceller veya yeni bir tane oluşturur. Workflow’lar https://artifacts.openclaw.ai
altındaki herkese açık URL’lerle openclaw-crabbox-artifacts konumuna yayın yapar.
Bucket, bölge ve herkese açık URL değerlerini doğrudan sağlarlar. Yeniden kullanılabilir
publisher şunları gerektirir:
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 çalıştırır. Maintainer’lar belirli bir ref veya önceden
hazırlanmış bir Crabbox masaüstüne ihtiyaç duyduklarında candidate=...,
provider=aws|hetzner ve lease=<cbx_...> değerlerini override edebilir.
ClawSweeper komut örnekleri:
Run yaşam döngüsü
- Kimlik bilgilerini edin.
- Bir VM ayır veya yeniden kullan.
- Senaryo UI kanıtı gerektiriyorsa masaüstü/tarayıcı profilini hazırla.
- Baseline ref için temiz bir checkout hazırla.
- Bağımlılıkları kur ve yalnızca senaryonun ihtiyaç duyduklarını build et.
- İzole bir state diziniyle child OpenClaw Gateway başlat.
- Canlı transport’u, provider’ı, modeli ve tarayıcı profilini yapılandır.
- Senaryoyu çalıştır ve baseline kanıtını yakala.
- Gateway’i durdur ve log’ları koru.
- Aynı VM’de candidate ref’i hazırla.
- Aynı senaryoyu çalıştır ve candidate kanıtını yakala.
- Oracle sonuçlarını ve görsel kanıtları karşılaştır.
- Markdown, JSON, log’lar, ekran görüntüleri ve isteğe bağlı trace artifact’leri yaz.
- GitHub Actions artifact’lerini upload et.
- Kısa bir PR veya Discord status mesajı gönder.
- Bug yeniden üretildi: baseline beklenen şekilde başarısız oldu.
- Harness hatası: ortam kurulumu, kimlik bilgileri, Discord API, tarayıcı veya provider, bug oracle’ı anlamlı olmadan önce başarısız oldu.
Discord MVP
İlk senaryo, source reply delivery mode değerininmessage_tool_only olduğu guild
kanallarındaki Discord status reactions’ı hedeflemelidir.
İyi bir Mantis seed’i olmasının nedenleri:
- Discord’da tetikleyici mesaj üzerindeki reactions olarak görünür.
- Discord mesaj reaction state’i üzerinden güçlü bir REST oracle’a sahiptir.
- Gerçek bir OpenClaw Gateway’i, Discord bot auth’u, message dispatch’i, source reply delivery mode’u, status reaction state’ini ve model turn lifecycle’ını çalıştırır.
- İlk implementasyonu dürüst tutacak kadar dardır.
messages.statusReactions.enabled açıkça true olduğunda lifecycle status
reactions’ın çalıştığını göstermelidir.
Çalıştırılabilir ilk slice, opt-in Discord canlı QA senaryosudur:
visibleReplies: "message_tool", ackReaction: "👀"
ve açık status reactions ile yapılandırır. Oracle gerçek Discord tetikleyici mesajını
poll eder ve gözlemlenen 👀 -> 🤔 -> 👍 sequence’ını bekler. Artifact’ler
discord-qa-reaction-timelines.json, discord-status-reactions-tool-only-timeline.html
ve discord-status-reactions-tool-only-timeline.png içerir.
Mevcut QA parçaları
Mantis sıfırdan başlamak yerine mevcut özel QA stack’i üzerine inşa edilmelidir:pnpm openclaw qa discordzaten driver ve SUT bot’larıyla canlı bir Discord lane’i çalıştırır.- Canlı transport runner zaten
.artifacts/qa-e2e/altında raporlar, QA kanıtı ve transport’a özgü artifact’ler yazar. - Convex kimlik bilgisi lease’leri zaten paylaşılan canlı transport kimlik bilgilerine özel erişim sağlar.
- Tarayıcı kontrol servisi zaten ekran görüntülerini, snapshot’ları, headless managed profilleri ve uzak CDP profillerini destekler.
- QA Lab’in transport şeklinde test için zaten bir debugger UI’ı ve bus’ı vardır.
Kanıt modeli
Her run kararlı bir artifact dizini yazar:mantis-summary.json, makine tarafından okunabilir doğruluk kaynağı olmalıdır. Markdown raporu PR yorumları ve insan incelemesi içindir.
Özet şunları içermelidir:
- test edilen refs ve SHA’lar
- taşıma ve senaryo kimliği
- makine sağlayıcısı ve makine kimliği ya da lease kimliği
- gizli değerler olmadan kimlik bilgisi kaynağı
- temel sürüm sonucu
- aday sonucu
- hatanın temel sürümde yeniden üretilip üretilmediği
- adayın bunu düzeltip düzeltmediği
- artifact yolları
- temizlenmiş kurulum veya temizlik sorunları
Tarayıcı ve VNC
Tarayıcı hattının iki modu vardır:- Başsız otomasyon: CI için varsayılandır. Chrome, CDP etkin olarak çalışır ve Playwright ya da OpenClaw tarayıcı denetimi ekran görüntülerini yakalar.
- VNC kurtarma: oturum açma, MFA, Discord otomasyon karşıtı önlemleri veya görsel hata ayıklama insan gerektirdiğinde aynı VM üzerinde etkinleştirilir.
- çalışma kimliği
- senaryo kimliği
- makine sağlayıcısı
- artifact dizini
- varsa VNC veya noVNC bağlantı talimatları
- kısa engelleyici metni
Makineler
Mantis, ilk uzak uygulama için Crabbox üzerinden AWS’yi tercih etmelidir. Crabbox bize ısıtılmış makineler, lease takibi, hydration, günlükler, sonuçlar ve temizlik sağlar. AWS kapasitesi çok yavaşsa veya kullanılamıyorsa, aynı makine arayüzünün arkasına bir Hetzner sağlayıcısı ekleyin. Minimum VM gereksinimleri:- masaüstü yetenekli Chrome veya Chromium kurulumu olan Linux
- tarayıcı otomasyonu için CDP erişimi
- kurtarma için VNC veya noVNC
- Node 22 ve pnpm
- OpenClaw checkout’u ve bağımlılık önbelleği
- Playwright kullanıldığında Playwright Chromium tarayıcı önbelleği
- bir OpenClaw Gateway, bir tarayıcı ve bir model çalıştırması için yeterli CPU ve bellek
- Discord, GitHub, model sağlayıcıları ve kimlik bilgisi broker’ına giden erişim
Gizli bilgiler
Gizli bilgiler uzak çalıştırmalar için GitHub kuruluş veya depo gizli bilgilerinde, yerel çalıştırmalar içinse yerel operatör denetimli bir gizli bilgi dosyasında yaşar. Önerilen gizli bilgi adları: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_ID- herkese açık GitHub artifact yüklemeleri için
OPENCLAW_QA_REDACT_PUBLIC_METADATA=1 OPENCLAW_QA_CONVEX_SITE_URLOPENCLAW_QA_CONVEX_SECRET_CIOPENCLAW_QA_MANTIS_CRABBOX_COORDINATOROPENCLAW_QA_MANTIS_CRABBOX_COORDINATOR_TOKEN
CRABBOX_COORDINATOR ve CRABBOX_COORDINATOR_TOKEN ortam değişkenlerine geri eşler. Düz CRABBOX_* GitHub gizli bilgi adları, uyumluluk fallback’i olarak kabul edilmeye devam eder.
Mantis çalıştırıcısı şunları asla yazdırmamalıdır:
- Discord bot token’ları
- sağlayıcı API anahtarları
- tarayıcı çerezleri
- auth profili içerikleri
- VNC parolaları
- ham kimlik bilgisi yükleri
OPENCLAW_QA_REDACT_PUBLIC_METADATA=1 değerini etkinleştirir.
Bir token yanlışlıkla bir issue, PR, sohbet veya günlüğe yapıştırılırsa, yeni gizli bilgi saklandıktan sonra onu döndürün.
GitHub artifact’leri ve PR yorumları
Mantis iş akışları, tam kanıt paketini kısa ömürlü bir Actions artifact’i olarak yüklemelidir. İş akışı bir hata raporu veya düzeltme PR’ı için çalıştırıldığında, redakte edilmiş satır içi medyayı yapılandırılmış Mantis R2/S3 bucket’ına da yayımlamalı ve söz konusu hata veya düzeltme PR’ında satır içi önce/sonra ekran görüntüleriyle bir yorum upsert etmelidir. Birincil kanıtı yalnızca genel bir QA otomasyon PR’ında yayınlamayın. Ham günlükler, gözlemlenen iletiler ve diğer hacimli kanıtlar Actions artifact’inde kalır. Üretim iş akışları bu yorumlarıgithub-actions[bot] ile değil, Mantis GitHub App ile göndermelidir. Uygulama kimliğini ve özel anahtarı GitHub Actions gizli bilgileri olarak MANTIS_GITHUB_APP_ID ve MANTIS_GITHUB_APP_PRIVATE_KEY içinde saklayın. İş akışı upsert anahtarı olarak gizli bir işaretleyici kullanır, token düzenleyebildiğinde o yorumu günceller ve eski bot sahipli bir işaretleyici düzenlenemediğinde Mantis sahipli yeni bir yorum oluşturur.
PR yorumu kısa ve görsel olmalıdır:
Özel dağıtım notları
Özel bir dağıtımda zaten bir Mantis Discord uygulaması olabilir. Doğru bot izinlerine sahipse ve güvenle döndürülebiliyorsa başka bir uygulama oluşturmak yerine bu uygulamayı yeniden kullanın. İlk operatör bildirim kanalını gizli bilgiler veya dağıtım yapılandırması üzerinden ayarlayın. Önce mevcut bir maintainer veya operasyon kanalını gösterebilir, ardından bir kanal oluştuğunda ayrılmış bir Mantis kanalına taşınabilir. Bu belgeye guild kimlikleri, kanal kimlikleri, bot token’ları, tarayıcı çerezleri veya VNC parolaları koymayın. Bunları GitHub gizli bilgilerinde, kimlik bilgisi broker’ında veya operatörün yerel gizli bilgi deposunda saklayın.Senaryo ekleme
Bir Mantis senaryosu şunları bildirmelidir:- kimlik ve başlık
- taşıma
- gerekli kimlik bilgileri
- temel sürüm ref ilkesi
- aday ref ilkesi
- OpenClaw yapılandırma yaması
- kurulum adımları
- uyarıcı
- beklenen temel sürüm oracle’ı
- beklenen aday oracle’ı
- görsel yakalama hedefleri
- zaman aşımı bütçesi
- temizlik adımları
- tepki hataları için Discord tepki durumu
- threading hataları için Discord ileti referansları
- Slack hataları için Slack thread ts ve tepki API durumu
- e-posta hataları için e-posta ileti kimlikleri ve başlıkları
- UI tek güvenilir gözlemlenebilir olduğunda tarayıcı ekran görüntüleri
Sağlayıcı genişletmesi
Discord’dan sonra aynı çalıştırıcı şunları ekleyebilir:- Slack: tepkiler, thread’ler, uygulama mention’ları, modallar, dosya yüklemeleri.
- E-posta: bağlayıcıların yeterli olmadığı yerlerde
gogkullanarak Gmail auth ve ileti threading’i. - WhatsApp: QR oturum açma, yeniden tanımlama, ileti teslimi, medya, tepkiler.
- Telegram: grup mention gating’i, komutlar, varsa tepkiler.
- Matrix: şifreli odalar, thread veya yanıt ilişkileri, yeniden başlatma sürdürmesi.
Açık sorular
- Mevcut Mantis botu yeniden kullanıldığında hangi Discord botu driver, hangisi SUT olmalıdır?
- Gözlemci tarayıcı oturumu ilk aşama için bir insan Discord hesabı, bir test hesabı veya yalnızca bot tarafından okunabilir REST kanıtı mı kullanmalıdır?
- GitHub, PR’lar için Mantis artifact’lerini ne kadar süre tutmalıdır?
- ClawSweeper ne zaman bir maintainer komutu beklemek yerine otomatik olarak Mantis önermelidir?
- Herkese açık PR’lar için yüklemeden önce ekran görüntüleri redakte edilmeli veya kırpılmalı mı?