Fundamentals
QA genel bakışı
Özel QA yığını, OpenClaw'ı birim testinin yapamayacağı gerçekçi ve kanal yapısına uygun bir biçimde sınar.
Parçalar:
extensions/qa-channel: DM, kanal, ileti dizisi, tepki, düzenleme ve silme yüzeylerine sahip sentetik mesaj kanalı.extensions/qa-lab: transkripti gözlemlemek, gelen mesajları enjekte etmek ve Markdown raporu dışa aktarmak için hata ayıklayıcı kullanıcı arayüzü, QA veri yolu, senaryo profilleri ve canlı aktarım bağdaştırıcıları.qa/: başlangıç görevi ve temel QA senaryoları için depo destekli başlangıç varlıkları.- Mantis: gerçek aktarımlar, tarayıcı ekran görüntüleri, VM durumu ve PR kanıtı gerektiren hatalar için öncesi/sonrası canlı doğrulama.
Komut yüzeyi
Her QA akışı pnpm openclaw qa <subcommand> altında çalışır. Birçoğunun pnpm qa:*
betik diğer adları vardır; her iki biçim de çalışır.
| Komut | Amaç |
|---|---|
qa run |
--qa-profile olmadan paketlenmiş QA öz denetimi; --qa-profile smoke-ci, --qa-profile release veya --qa-profile all içeren taksonomi destekli olgunluk profili çalıştırıcısı. |
qa suite |
Depo destekli senaryoları QA gateway hattında çalıştırır. --runner multipass, ana makine yerine tek kullanımlık bir Linux VM kullanır. |
qa coverage |
YAML senaryo kapsamı envanterini yazdırır (makine çıktısı için --json; dokunulan bir davranışın senaryolarını bulmak için --match <query>; çalışma zamanı aracı fikstürü kapsamı için --tools). |
qa parity-report |
Model ekseni eşlik geçidi için iki qa-suite-summary.json dosyasını karşılaştırır veya Codex ile OpenClaw çalışma zamanı eşliği ve token verimliliği raporlarını yazmak için --runtime-axis --token-efficiency kullanır. |
qa confidence-report |
QA kanıt yapıtlarını bir manifeste göre sınıflandırarak sıfır bilinmeyenli bir güven raporu oluşturur. |
qa confidence-self-test |
Güven geçidinin sapmayı algıladığını kanıtlayan başlangıç verileriyle hazırlanmış negatif kontrol kanaryaları yazar. |
qa jsonl-replay |
Seçilmiş JSONL transkriptlerini çalışma zamanı eşliği yeniden oynatma düzeneği üzerinden yeniden oynatır. |
qa character-eval |
Karakter QA senaryosunu birden fazla canlı modelde değerlendirilen bir raporla çalıştırır. Bkz. Raporlama. |
qa manual |
Seçilen sağlayıcı/model hattında tek seferlik bir istem çalıştırır. |
qa ui |
QA hata ayıklayıcı kullanıcı arayüzünü ve yerel QA veri yolunu başlatır (diğer ad: pnpm qa:lab:ui). |
qa docker-build-image |
Önceden hazırlanmış QA Docker imajını oluşturur. |
qa docker-scaffold |
QA panosu + gateway hattı için bir docker-compose iskeleti yazar. |
qa up |
QA sitesini oluşturur, Docker destekli yığını başlatır ve URL'yi yazdırır (diğer ad: pnpm qa:lab:up; :fast çeşidi --use-prebuilt-image --bind-ui-dist --skip-ui-build ekler). |
qa aimock |
Yalnızca AIMock sağlayıcı sunucusunu başlatır. |
qa mock-openai |
Yalnızca senaryoya duyarlı mock-openai sağlayıcı sunucusunu başlatır. |
qa credentials doctor / add / list / remove |
Paylaşılan Convex kimlik bilgisi havuzunu yönetir. |
qa discord |
Gerçek bir özel Discord lonca kanalına karşı canlı aktarım hattı. |
qa matrix |
Tek kullanımlık bir Tuwunel ana sunucusuna karşı QA Lab Matrix profilleri. Bkz. Matrix duman testi hatları. |
qa slack |
Gerçek bir özel Slack kanalına karşı canlı aktarım hattı. |
qa telegram |
Gerçek bir özel Telegram grubuna karşı canlı aktarım hattı. |
qa whatsapp |
Gerçek WhatsApp Web hesaplarına karşı canlı aktarım hattı. |
qa mantis |
Discord durum tepkileri kanıtı, Crabbox masaüstü/tarayıcı duman testi ve VNC'de Slack duman testi içeren, canlı aktarım hataları için öncesi/sonrası doğrulama çalıştırıcısı. Bkz. Mantis ve Mantis Slack Masaüstü Çalıştırma Kılavuzu. |
Profil destekli qa run
Profil destekli qa run, üyeliği taxonomy.yaml üzerinden okur ve ardından
çözümlenen senaryoları qa suite üzerinden gönderir. --surface ve --category,
ayrı hatlar tanımlamak yerine seçilen profili filtreler. Ortaya çıkan
qa-evidence.json, seçilen kategori sayılarını ve eksik kapsam kimliklerini
içeren bir profil puan kartı özeti barındırır; ayrı ayrı kanıt girdileri testler,
kapsam rolleri ve sonuçlar için doğruluk kaynağı olmaya devam eder. Taksonomi özellik
kapsamı kimlikleri diğer ad değil, kesin kanıt hedefleridir: birincil senaryo kapsamı
eşleşen kimlikleri karşılar, ikincil kapsam ise yalnızca tavsiye niteliğinde kalır. Kapsam kimlikleri,
küçük harfli alfasayısal/tireli segmentlerle noktalı namespace.behavior biçimini kullanır;
profil, yüzey ve kategori kimlikleri mevcut tireli veya noktalı taksonomi
kimliklerini kullanmaya devam edebilir.
İnce kanıt, girdi başına execution öğesini atlar ve evidenceMode: "slim" değerini ayarlar;
smoke-ci varsayılan olarak ince biçimi kullanır ve --evidence-mode full tam girdileri geri yükler:
pnpm openclaw qa run \ --qa-profile smoke-ci \ --category channel-framework.conversation-routing-and-delivery \ --provider-mode mock-openai \ --output-dir .artifacts/qa-e2e/smoke-ci-profile-dispatchSahte model sağlayıcıları ve Crabline yerel sağlayıcı sunucularıyla belirlenimci profil kanıtı
için smoke-ci kullanın. Canlı kanallara karşı Stable/LTS kanıtı için
release kullanın. all öğesini yalnızca açıkça tam taksonomi kanıtı çalıştırmaları
için kullanın; bu, her etkin olgunluk kategorisini seçer ve qa_profile=all ile
QA Profile Evidence GitHub Actions iş akışı üzerinden gönderilebilir. Bir komut
aynı zamanda bir OpenClaw kök profiline ihtiyaç duyduğunda, kök profili QA
komutundan önce yerleştirin:
pnpm openclaw --profile work qa run --qa-profile smoke-ciOperatör akışı
Mevcut QA operatör akışı, iki bölmeli bir QA sitesidir:
- Sol: Agent ile Gateway panosu (Control UI).
- Sağ: Slack benzeri transkripti ve senaryo planını gösteren QA Lab.
Şununla çalıştırın:
pnpm qa:lab:upBu işlem QA sitesini oluşturur, Docker destekli gateway hattını başlatır ve bir operatörün veya otomasyon döngüsünün agente bir QA görevi verebildiği, gerçek kanal davranışını gözlemleyebildiği ve nelerin çalıştığını, başarısız olduğunu veya engellenmiş kaldığını kaydedebildiği QA Lab sayfasını kullanıma sunar.
Docker imajını her seferinde yeniden oluşturmadan daha hızlı QA Lab kullanıcı arayüzü yinelemesi yapmak için yığını, bağlama yoluyla eklenmiş bir QA Lab paketiyle başlatın:
pnpm openclaw qa docker-build-imagepnpm qa:lab:buildpnpm qa:lab:up:fastpnpm qa:lab:watchqa:lab:up:fast, Docker hizmetlerini önceden oluşturulmuş bir imajda tutar ve
extensions/qa-lab/web/dist öğesini qa-lab konteynerine bağlama yoluyla ekler.
qa:lab:watch, değişiklik olduğunda bu paketi yeniden oluşturur ve QA Lab
varlık karması değiştiğinde tarayıcı otomatik olarak yeniden yüklenir.
Gözlemlenebilirlik duman testleri
| Takma ad | Çalıştırdığı işlem |
|---|---|
pnpm qa:otel:smoke |
Yerel OpenTelemetry alıcısı ve diagnostics-otel etkinleştirilmiş otel-trace-smoke senaryosu. |
pnpm qa:otel:collector-smoke |
Gerçek bir OpenTelemetry Collector Docker konteynerinin arkasındaki aynı hat. Uç nokta bağlantılarını veya collector/OTLP uyumluluğunu değiştirirken kullanın. |
pnpm qa:prometheus:smoke |
diagnostics-prometheus etkinleştirilmiş docker-prometheus-smoke senaryosu. |
pnpm qa:observability:smoke |
qa:otel:smoke ve ardından qa:prometheus:smoke. |
pnpm qa:observability:collector-smoke |
qa:otel:collector-smoke ve ardından qa:prometheus:smoke. |
qa:otel:smoke yerel bir OTLP/HTTP alıcısı başlatır, asgari bir QA kanalı
aracı turu çalıştırır, ardından izlerin, metriklerin ve günlüklerin dışa
aktarıldığını doğrular. Dışa aktarılan protobuf iz kapsamlarını çözümler ve
sürüm açısından kritik yapıyı denetler:
openclaw.run, openclaw.harness.run, en güncel GenAI anlamsal kuralına
uygun bir model çağrısı kapsamı, openclaw.context.assembled ve openclaw.message.delivery
öğelerinin tümü mevcut olmalıdır. Smoke,
OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental değerini zorunlu kıldığından model çağrısı
kapsamı {gen_ai.operation.name} {gen_ai.request.model} adını kullanmalıdır; başarılı turlarda model
çağrıları StreamAbandoned değerini dışa aktarmamalıdır; ham tanılama
kimlikleri ve openclaw.content.* öznitelikleri izin dışında kalmalıdır. Senaryo
istemi, modelden sabit bir işaretleyiciyle yanıt vermesini ve sabit bir gizli
dizeyi açıklamamasını ister; ham OTLP yükleri bunlardan hiçbirini veya senaryo
kimliğinden türetilen QA oturum anahtarını içermemelidir. QA paketi yapıtlarının
yanına otel-smoke-summary.json yazar.
qa:prometheus:smoke kimliği doğrulanmamış kazımaların reddedildiğini doğrular,
ardından kimliği doğrulanmış kazımanın istem içeriği, yanıt içeriği, ham
tanılama tanımlayıcıları, kimlik doğrulama token'ları veya yerel yollar olmadan
sürüm açısından kritik metrik ailelerini içerdiğini denetler.
Matrix smoke hatları
Model sağlayıcı kimlik bilgileri gerektirmeyen, gerçek taşıma kullanan bir Matrix smoke hattı için deterministik sahte OpenAI sağlayıcısıyla sürüm profilini çalıştırın:
pnpm openclaw qa matrix --provider-mode mock-openai --profile releaseCanlı frontier sağlayıcı hattı için OpenAI uyumlu kimlik bilgilerini açıkça sağlayın:
OPENCLAW_LIVE_OPENAI_KEY="${OPENAI_API_KEY}" \ pnpm openclaw qa matrix --provider-mode live-frontier --profile releaseDüz pnpm openclaw qa matrix, tam all profilini çalıştırır ve senaryo
hatalarından sonra devam eder. Daha kısa bir geri bildirim döngüsü için
--fail-fast kullanın veya ayrı senaryoları seçmek üzere
--scenario <id> seçeneğini tekrarlayın; açık senaryo kimlikleri
--profile değerine göre önceliklidir.
| Profil | Senaryolar | Amaç |
|---|---|---|
all |
93 | Eksiksiz katalog (varsayılan). |
release |
2 | Sürüm açısından kritik kanal temeli ve canlı izin listesi yeniden yüklemesi. |
fast |
12 | Odaklanmış ileti dizisi, tepki, onay, politika, bot geçidi ve şifreli yanıt kapsamı. |
transport |
50 | İleti dizileri, DM/oda yönlendirme, otomatik katılım, onaylar, tepkiler, yeniden başlatmalar, bahsetme/izin listesi politikası, düzenlemeler ve çok aktörlü sıralama. |
media |
7 | Görsel, oluşturulan görsel, ses, ek, desteklenmeyen medya ve şifreli medya kapsamı. |
e2ee-smoke |
8 | Asgari şifreli yanıt, ileti dizisi, önyükleme, kurtarma, yeniden başlatma, karartma ve hata kapsamı. |
e2ee-deep |
18 | Durum kaybı, yedekleme, anahtar kurtarma, cihaz hijyeni ve SAS/QR/DM doğrulaması. |
e2ee-cli |
9 | Donanım üzerinden openclaw matrix encryption setup, kurtarma anahtarı, çoklu hesap, gateway gidiş dönüşü ve öz doğrulama komutları. |
Profil üyeliği ve kanal gereksinimleri, qa/scenarios/channels/ altındaki bildirimsel
Matrix senaryolarıyla birlikte bulunur. Çalıştırma, kanal sürücüsünü seçer.
Bunların canlı uygulamaları
extensions/qa-lab/src/live-transports/matrix/scenarios/ altında bulunur.
Bağdaştırıcı, Docker'da tek kullanımlık bir Tuwunel ana sunucusu (varsayılan
görüntü ghcr.io/matrix-construct/tuwunel:v1.5.1, sunucu adı matrix-qa.test,
bağlantı noktası 28008) hazırlar; geçici sürücü, SUT ve gözlemci
kullanıcıları kaydeder; gerekli odaları oluşturur ve karartılmış istek/yanıt
sınırını kaydeder. Ardından gerçek Matrix plugin'ini bu taşımayla sınırlı bir
alt QA gateway'inde çalıştırır (qa-channel yoktur) ve ortamı kapatır.
Yaygın seçenekler:
| Bayrak | Varsayılan | Amaç |
|---|---|---|
--profile <profile> |
all |
Yukarıdaki profillerden birini seçer. |
--scenario <id> |
- | Bir senaryo seçer; tekrarlanabilir. |
--fail-fast |
kapalı | İlk başarısız denetimden veya senaryodan sonra durur. |
--allow-failures |
kapalı | Senaryo hatalarında başarısızlık çıkış kodu döndürmeden yapıtları yazar. |
--provider-mode <mode> |
live-frontier |
Deterministik gönderim için mock-openai, canlı sağlayıcı için live-frontier kullanır. |
--model <ref> |
sağlayıcı varsayılanı | Birincil provider/model referansını ayarlar. |
--alt-model <ref> |
sağlayıcı varsayılanı | Model değiştiren senaryoların kullandığı alternatif modeli ayarlar. |
--fast |
kapalı | Desteklendiğinde sağlayıcı hızlı modunu etkinleştirir. |
--output-dir <path> |
oluşturulan | Rapor dizinini seçer; göreli yollar --repo-root konumuna göre çözümlenir. |
--repo-root <path> |
geçerli dizin | Tarafsız bir çalışma dizininden çalıştırır. |
--sut-account <id> |
sut |
Alt gateway yapılandırmasındaki Matrix hesap kimliğini seçer. |
Matrix QA, paylaşılan Matrix kimlik bilgilerini kiralamaz: bağdaştırıcı tek
kullanımlık kullanıcıları yerel olarak oluşturur; bu nedenle
--credential-source veya --credential-role kabul etmez. Ana sunucu görüntüsünü
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE ile geçersiz kılın; olumsuz yanıtsızlık doğrulamalarını
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS ile ayarlayın (varsayılan 8000, etkin senaryo
zaman aşımıyla sınırlandırılır). Matrix şifreleme yerel tanıtıcıları temizlikten
daha uzun yaşayabildiğinden tek seferlik komut, yapıtlar tamamen yazıldıktan
sonra normalde temiz bir çıkışı zorunlu kılar; yalnızca komutun geri dönmesi
gereken doğrudan bir test donanımı için OPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT=1 ayarlayın.
Her çalıştırma, seçilen çıktı dizini altında normal QA Lab yapıtlarını yazar:
qa-suite-report.md, qa-suite-summary.json, qa-evidence.json ve karartılmış bir
matrix-harness-*/matrix-qa-harness.json manifesti. Temizleme başarısız olursa yazdırılan
docker compose ... down --remove-orphans kurtarma komutunu çalıştırın. Yavaş çalıştırıcılarda
yanıtsızlık penceresini artırın; hızlı CI ortamlarında daha küçük bir pencere,
olumsuz doğrulamaları kısaltabilir.
Senaryolar, birim testlerinin uçtan uca kanıtlayamadığı taşıma davranışlarını
kapsar: bahsetme geçidi, botlara izin verme politikaları, izin listeleri, üst
düzey ve ileti dizili yanıtlar, DM yönlendirme, tepki işleme, gelen düzenleme
bastırma, yeniden başlatma sonrası tekrar oynatma tekilleştirmesi, ana sunucu
kesintisi kurtarması, onay meta verisi teslimi, medya işleme ve Matrix E2EE
önyükleme/kurtarma/doğrulama akışları. E2EE CLI profili ayrıca gateway
yanıtlarını denetlemeden önce aynı tek kullanımlık ana sunucu üzerinden
openclaw matrix encryption setup ve doğrulama komutlarını çalıştırır.
matrix-room-block-streaming ve subagent-thread-spawn, açık --scenario seçimiyle
kullanılabilir olmaya devam eder ancak varsayılan all profilinin
dışında kalır.
CI, .github/workflows/qa-live-transports-convex.yml içinde aynı komut yüzeyini kullanır. Zamanlanmış ve sürüm
çalıştırmaları sürüm senaryolarını yürütür. Manuel matrix_profile=all
gönderimleri transport, media, e2ee-smoke,
e2ee-deep ve e2ee-cli profillerine dağıtılır; odaklanmış
gönderimler tek bir işte fast, release veya
transport seçer.
Discord Mantis senaryoları
Discord ayrıca hata yeniden üretimi için yalnızca Mantis'e özel, isteğe bağlı
senaryolara sahiptir. Açık durum tepki zaman çizelgesi için
--scenario discord-status-reactions-tool-only kullanın veya gerçek bir Discord ileti dizisi oluşturmak ve
message.thread-reply öğesinin bir filePath ekini koruduğunu doğrulamak
için --scenario discord-thread-reply-filepath-attachment kullanın. Bu senaryolar, geniş smoke kapsamı yerine
önce/sonra yeniden üretim sondaları olduklarından varsayılan canlı Discord
hattının dışında kalır. İleti dizisi eki Mantis iş akışı, QA ortamında
MANTIS_DISCORD_VIEWER_CHROME_PROFILE_DIR veya MANTIS_DISCORD_VIEWER_CHROME_PROFILE_TGZ_B64 yapılandırıldığında oturum açmış bir
Discord Web tanık videosu da ekleyebilir. Bu görüntüleyici profili yalnızca
görsel yakalama içindir; başarılı/başarısız kararı yine Discord REST
oracle'ından gelir.
Gerçek taşıma kullanan diğer smoke hatları için:
pnpm openclaw qa discordpnpm openclaw qa slackpnpm openclaw qa telegrampnpm openclaw qa whatsappBunlar iki bot veya hesaba (sürücü + SUT) sahip, önceden mevcut gerçek bir kanalı hedefler. Bu dört taşıma için gerekli ortam değişkenleri, senaryo listeleri, çıktı yapıtları ve Convex kimlik bilgisi havuzu aşağıdaki Discord, Slack, Telegram ve WhatsApp QA referansında belgelenmiştir.
Mantis Slack masaüstü ve görsel görev çalıştırıcıları
VNC kurtarmalı tam bir Slack masaüstü VM çalıştırması için şunu çalıştırın:
pnpm openclaw qa mantis slack-desktop-smoke \ --gateway-setup \ --scenario slack-canary \ --keep-leaseBu komut bir Crabbox masaüstü/tarayıcı makinesi kiralar, Slack canlı
hattını VM içinde çalıştırır, VNC tarayıcısında Slack Web'i açar, masaüstünü
kaydeder ve slack-qa/, slack-desktop-smoke.png ile
slack-desktop-smoke.mp4 (video kaydı kullanılabildiğinde) dosyalarını
Mantis yapıt dizinine geri kopyalar. Crabbox masaüstü/tarayıcı kiralamaları, kayıt
araçlarını ve tarayıcı/yerel derleme yardımcı paketlerini baştan sağladığından senaryo
yalnızca eski kiralamalarda yedek seçenekleri kurmalıdır. Mantis, toplam ve
aşama başına süreleri mantis-slack-desktop-smoke-report.md içinde bildirir; böylece yavaş çalıştırmalarda
sürenin kiralama hazırlığına, kimlik bilgisi edinmeye, uzak kuruluma veya
yapıt kopyalamaya mı harcandığı görülür. VNC üzerinden Slack Web'de
elle oturum açtıktan sonra --lease-id <cbx_...> kiralamasını yeniden kullanın;
yeniden kullanılan kiralamalar Crabbox'ın pnpm depo önbelleğini de
hazır tutar. Varsayılan --hydrate-mode source, bir kaynak çalışma kopyasından doğrulama yapar ve
kurulum/derlemeyi VM içinde çalıştırır. --hydrate-mode prehydrated seçeneğini yalnızca
yeniden kullanılan uzak çalışma alanında zaten node_modules ve derlenmiş bir dist/
bulunduğunda kullanın; bu mod maliyetli kurulum/derleme adımını atlar ve
çalışma alanı hazır değilse güvenli biçimde başarısız olur. --gateway-setup ile Mantis,
38973 bağlantı noktasında VM içinde kalıcı bir
OpenClaw Slack gateway'i çalışır durumda bırakır; bu seçenek olmadan
komut, normal bottan bota Slack QA hattını çalıştırır ve yapıt
kaydı tamamlandıktan sonra çıkar.
Masaüstü kanıtıyla yerel Slack onay kullanıcı arayüzünü doğrulamak için Mantis onay denetim noktası modunu çalıştırın:
pnpm openclaw qa mantis slack-desktop-smoke \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainerBu mod --gateway-setup ile birlikte kullanılamaz. Slack
onay senaryolarını çalıştırır, onay dışı senaryo kimliklerini reddeder, bekleyen
ve çözümlenmiş her onay durumunda bekler, gözlemlenen Slack API iletisini
approval-checkpoints/<scenario>-pending.png ve
approval-checkpoints/<scenario>-resolved.png içine işler; ardından herhangi bir denetim noktası,
ileti kanıtı, alındı bildirimi veya işlenmiş ekran görüntüsü eksik ya da
boşsa başarısız olur. Soğuk CI kiralamaları
slack-desktop-smoke.png içinde hâlâ Slack oturum açma ekranını gösterebilir;
onay denetim noktası görüntüleri bu hattın görsel
kanıtıdır.
Varsayılan denetim noktası çalıştırması iki standart Slack onay senaryosunu korur.
İsteğe bağlı Codex onay yollarından birini kaydetmek için
--scenario slack-codex-approval-exec-native veya
--scenario slack-codex-approval-plugin-native ile açıkça seçin; Mantis her ikisini de kabul eder ve
aynı bekleyen/çözümlenmiş ekran görüntüsü çiftini üretir. Çalıştırıcı, seçilen her Codex yolu için
denetim noktası ve uzak komut zaman aşımı sürelerini uzatır; böylece tüm
onay, ajan tamamlama ve çözümlenmiş güncelleme dizisi tamamlanabilir.
Operatör denetim listesi, GitHub iş akışı gönderim komutu, kanıt yorumu sözleşmesi, hydrate modu karar tablosu, süre yorumlama ve hata işleme adımları Mantis Slack Masaüstü Çalıştırma Kılavuzu içinde bulunur.
Ajan/CV tarzı bir masaüstü görevi için şunu çalıştırın:
pnpm openclaw qa mantis visual-task \ --browser-url https://example.net \ --expect-text "Example Domain" \ --vision-model openai/gpt-5.6-lunavisual-task bir Crabbox masaüstü/tarayıcı makinesi kiralar veya yeniden kullanır,
crabbox record --while başlatır, görünür tarayıcıyı iç içe bir
visual-driver aracılığıyla yönetir, visual-task.png kaydeder,
--vision-mode image-describe seçildiğinde ekran görüntüsüne karşı openclaw infer image describe çalıştırır
ve visual-task.mp4, mantis-visual-task-summary.json,
mantis-visual-task-driver-result.json ile
mantis-visual-task-report.md dosyalarını yazar. --expect-text ayarlandığında görsel
istemi, yapılandırılmış bir JSON kararı (visible, evidence, reason)
ister ve yalnızca model, beklenen metne atıfta bulunan kanıtla birlikte
visible: true bildirdiğinde başarılı olur; hedef metni yalnızca alıntılayan bir
visible: false yanıtı yine de doğrulamada başarısız olur.
Bir görüntü anlama sağlayıcısını çağırmadan masaüstü, tarayıcı, ekran görüntüsü ve video
altyapısını doğrulayan modelsiz bir smoke testi için --vision-mode metadata kullanın. Kayıt,
visual-task için zorunlu bir yapıttır; Crabbox boş olmayan bir
visual-task.mp4 kaydetmezse görsel sürücü başarılı olsa bile görev başarısız olur. Mantis,
görev zaten başarılı olmadıkça ve --keep-lease ayarlanmamışsa,
hata durumunda kiralamayı VNC için korur.
Kimlik bilgisi havuzu sağlık denetimi
Havuzdaki canlı kimlik bilgilerini kullanmadan önce şunu çalıştırın:
pnpm openclaw qa credentials doctorDoctor, Convex aracı ortam değişkenlerini (OPENCLAW_QA_CONVEX_SITE_URL,
OPENCLAW_QA_CONVEX_ENDPOINT_PREFIX) denetler, uç nokta ayarlarını doğrular,
OPENCLAW_QA_CONVEX_SECRET_CI ve
OPENCLAW_QA_CONVEX_SECRET_MAINTAINER için yalnızca ayarlı/eksik durumunu bildirir ve
bakımcı gizli anahtarı mevcut olduğunda yönetici/liste erişilebilirliğini
doğrular.
Kanonik senaryo kapsamı
Kök taxonomy.yaml, anlamsal kapsam kimliklerini tanımlar.
qa/scenarios/ altındaki senaryo YAML dosyaları her senaryoyu bu kimliklerle eşler ve yürütme
meta verilerini yönetir: channel tek kanal gereksinimidir ve profiles
adlandırılmış çalıştırma üyeliğini bildirir. Kanal sürücüsü, çalıştırma düzeyinde
birbiriyle değiştirilebilir bir uygulama tercihidir. TypeScript
çalıştırıcıları bu kataloğu sorgular; paralel senaryo veya kapsam
envanterleri tutmazlar.
Statik qa coverage çıktısı, taksonomiden senaryoya eşlemeyi bildirir. Gerçek
kanıt, yürütülen senaryoyu, kapsam kimliklerini, kanalı, gerçekten kullanılan sürücüyü
ve sonucu kaydeden qa-evidence.json üzerinden gelir. Kanal ve sürücü,
ek kapsam kimliği sözlükleri veya senaryo
uygunluk eksenleri değil, rapor boyutlarıdır.
Docker'ı QA yoluna dahil etmeden tek kullanımlık bir Linux VM hattı çalıştırmak için:
pnpm openclaw qa suite --runner multipass --scenario channel-chat-baselineBu komut yeni bir Multipass konuğu başlatır, bağımlılıkları kurar, OpenClaw'ı
konuk içinde derler, qa suite çalıştırır, ardından normal QA raporunu ve
özetini ana makinedeki .artifacts/qa-e2e/... içine geri kopyalar. Ana makinedeki
qa suite ile aynı senaryo seçimi davranışını yeniden kullanır.
Ana makine ve Multipass paket çalıştırmaları, seçilen birden fazla senaryoyu
varsayılan olarak yalıtılmış gateway çalışanlarıyla paralel yürütür. qa-channel,
seçilen senaryo sayısıyla sınırlı olmak üzere varsayılan olarak 4 eşzamanlılık kullanır.
Çalışan sayısını ayarlamak için --concurrency <count>, seri yürütme için ise --concurrency 1 kullanın.
Kişisel asistan kıyaslama paketini (10 senaryo) çalıştırmak için --pack personal-agent kullanın.
Paket seçici, yinelenen --scenario bayraklarıyla eklemeli çalışır:
önce açıkça belirtilen senaryolar, ardından yinelenenler kaldırılarak paket senaryoları
paket sırasıyla çalıştırılır. Özel bir QA çalıştırıcısı OpenTelemetry toplayıcı
kurulumunu zaten sağlıyorsa otel-trace-smoke ve docker-prometheus-smoke senaryolarını
birlikte seçmek için --pack observability kullanın.
Herhangi bir senaryo başarısız olduğunda komut sıfırdan farklı bir kodla çıkar.
Başarısız bir çıkış kodu olmadan yapıtları almak istediğinizde --allow-failures
kullanın.
Canlı çalıştırmalar, konuk için uygulanabilir olan desteklenen QA kimlik doğrulama
girdilerini iletir: ortam değişkeni tabanlı sağlayıcı anahtarları, QA canlı sağlayıcı
yapılandırma yolu ve mevcutsa CODEX_HOME. Konuğun bağlı çalışma alanı üzerinden
geri yazabilmesi için --output-dir dosyasını depo kökü altında tutun.
Discord, Slack, Telegram ve WhatsApp QA başvurusu
Matrix bağdaştırıcısı, yukarıda belgelenen tek kullanımlık Docker destekli hattı kullanır. Discord, Slack, Telegram ve WhatsApp önceden mevcut gerçek aktarımlarla çalıştığından bunların başvurusu burada yer alır.
Paylaşılan CLI bayrakları
Bu hatlar
extensions/qa-lab/src/live-transports/shared/live-transport-cli.ts üzerinden kaydolur ve
aynı bayrakları kabul eder:
| Bayrak | Varsayılan | Açıklama |
|---|---|---|
--scenario <id> |
- | Yalnızca bu senaryoyu çalıştırır. Yinelenebilir. |
--output-dir <path> |
<repo>/.artifacts/qa-e2e/<transport>-<timestamp> |
Raporların, özetlerin, kanıtların, aktarıma özgü yapıtların ve çıktı günlüğünün yazıldığı yer. Göreli yollar --repo-root temel alınarak çözümlenir. |
--repo-root <path> |
process.cwd() |
Tarafsız bir çalışma dizininden çağırırken depo kökü. |
--sut-account <id> |
sut |
QA gateway yapılandırmasındaki geçici hesap kimliği. |
--provider-mode <mode> |
live-frontier |
mock-openai, aimock veya live-frontier. |
--model <ref> / --alt-model <ref> |
sağlayıcı varsayılanı | Birincil/alternatif model başvuruları. |
--fast |
kapalı | Desteklendiği yerlerde sağlayıcı hızlı modu. |
--credential-source <env|convex> |
env |
Bkz. Convex kimlik bilgisi havuzu. |
--credential-role <maintainer|ci> |
CI'da ci, aksi durumda maintainer |
--credential-source convex olduğunda kullanılan rol. |
--allow-failures |
kapalı | Senaryolar başarısız olduğunda başarısız bir çıkış kodu döndürmeden yapıtları yazar. |
Her hat, herhangi bir senaryo başarısız olduğunda sıfırdan farklı bir kodla çıkar.
--allow-failures, başarısız bir çıkış kodu ayarlamadan yapıtları yazar.
Telegram ayrıca kullanılabilir senaryo kimliklerini yazdırıp çıkmak için
--list-scenarios seçeneğini kabul eder; diğer hatlar bu bayrağı sunmaz.
Telegram QA
pnpm openclaw qa telegramİki farklı botun (sürücü + SUT) bulunduğu gerçek bir özel Telegram grubunu hedefler.
SUT botunun bir Telegram kullanıcı adı olmalıdır; botlar arası gözlem,
her iki botta da @BotFather içinde Bot-to-Bot Communication Mode
etkinleştirildiğinde en iyi şekilde çalışır.
--credential-source env olduğunda gerekli ortam değişkenleri:
OPENCLAW_QA_TELEGRAM_GROUP_ID- sayısal sohbet kimliği (dize).OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKENOPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN
release profili, bakımı yapılan Telegram YAML senaryolarını seçer;
all isteğe bağlı oturum, kullanım, yanıt zinciri ve akış stres
denetimlerini ekler. Açıkça belirtilen --scenario değerleri profilin
yerine geçer.
channel-canarychannel-mention-gatingtelegram-help-commandtelegram-commands-commandtelegram-tools-compact-commandtelegram-whoami-commandtelegram-status-commandtelegram-repeated-command-authorizationtelegram-other-bot-command-gatingtelegram-context-commandtelegram-current-session-status-tooltelegram-tool-only-usage-footertelegram-reply-chain-exact-markertelegram-stream-final-single-messagetelegram-long-final-reuses-previewtelegram-long-final-three-chunks
release profili her zaman canary, bahsetme geçitleme, yerel komut
yanıtları, komut adresleme ve botlar arası grup yanıtlarını kapsar. mock-openai
ayrıca deterministik uzun nihai önizleme denetimini içerir.
telegram-current-session-status-tool ve
telegram-tool-only-usage-footer isteğe bağlı kalır: ilki yalnızca
canary'den hemen sonra zincirlendiğinde kararlıdır; ikincisi ise yalnızca araç yanıtlarındaki
/usage alt bilgisinin gerçek Telegram kanıtıdır. Geçerli
varsayılan/isteğe bağlı ayrımını regresyon referanslarıyla yazdırmak için pnpm openclaw qa telegram --list-scenarios --provider-mode mock-openai kullanın. Her
Telegram canlı bağdaştırıcı senaryosu için --profile all kullanın.
Çıktı yapıtları:
qa-suite-report.mdqa-suite-summary.jsonqa-evidence.json- profil, kapsam, sağlayıcı, kanal, yapıtlar, sonuç ve RTT alanları dahil olmak üzere canlı aktarım denetimlerine ait kanıt girdileri.
Paket Telegram çalıştırmaları aynı Telegram kimlik bilgisi sözleşmesini kullanır. Tekrarlanan RTT
ölçümü, normal paket Telegram canlı hattının bir parçasıdır; RTT
dağılımı, seçilen RTT denetimi için result.timing altında qa-evidence.json içine
katlanır.
OPENCLAW_QA_CREDENTIAL_SOURCE=convex \pnpm test:docker:npm-telegram-liveOPENCLAW_QA_CREDENTIAL_SOURCE=convex ayarlandığında paket canlı sarmalayıcısı
bir kind: "telegram" kimlik bilgisini kiralar, kiralanan grup/sürücü/SUT
bot ortamını yüklü paket çalıştırmasına aktarır, kiralamaya Heartbeat gönderir ve kapanışta
serbest bırakır. Paket sarmalayıcısı varsayılan olarak
channel-canary için 20 RTT denetimi, 30s RTT zaman aşımı ve Convex seçildiğinde
CI dışında Convex rolü maintainer kullanır. Ayrı bir RTT komutu
veya Telegram'a özgü özet biçimi oluşturmadan RTT ölçümünü ayarlamak için
OPENCLAW_NPM_TELEGRAM_RTT_SAMPLES, OPENCLAW_NPM_TELEGRAM_RTT_TIMEOUT_MS
ya da OPENCLAW_NPM_TELEGRAM_RTT_MAX_FAILURES değerini geçersiz kılın.
Discord QA
pnpm openclaw qa discordİki bot içeren gerçek bir özel Discord lonca kanalını hedefler: test düzeneği
tarafından denetlenen bir sürücü botu ve paketlenmiş Discord Plugin'i üzerinden
alt OpenClaw gateway'i tarafından başlatılan bir SUT botu. Kanal bahsetme işlemesini,
SUT botunun yerel /help komutunu Discord'a kaydettiğini ve
isteğe bağlı Mantis kanıt senaryolarını doğrular.
--credential-source env olduğunda gerekli ortam:
OPENCLAW_QA_DISCORD_GUILD_IDOPENCLAW_QA_DISCORD_CHANNEL_IDOPENCLAW_QA_DISCORD_DRIVER_BOT_TOKENOPENCLAW_QA_DISCORD_SUT_BOT_TOKENOPENCLAW_QA_DISCORD_SUT_APPLICATION_ID- Discord tarafından döndürülen SUT bot kullanıcı kimliğiyle eşleşmelidir (aksi takdirde hat hızla başarısız olur).
İsteğe bağlı:
OPENCLAW_QA_DISCORD_VOICE_CHANNEL_ID,discord-voice-autojoiniçin ses/sahne kanalını seçer; bu olmadan senaryo, SUT botunun görebildiği ilk ses/sahne kanalını seçer.
Discord YAML modülü senaryoları (qa/scenarios/channels/discord-*.yaml):
discord-canarydiscord-mention-gatingdiscord-native-help-command-registrationdiscord-voice-autojoin- isteğe bağlı ses senaryosu. Tek başına çalışır,channels.discord.voice.autoJoinözelliğini etkinleştirir ve SUT botunun geçerli Discord ses durumunun hedef ses/sahne kanalı olduğunu doğrular. Convex Discord kimlik bilgileri isteğe bağlıvoiceChannelIdiçerebilir; aksi takdirde çalıştırıcı bağdaştırıcısı loncadaki ilk görünür ses/sahne kanalını keşfeder.discord-status-reactions-tool-only- isteğe bağlı Mantis senaryosu. SUT'yimessages.statusReactions.enabled=trueile her zaman açık, yalnızca araç içeren lonca yanıtlarına geçirdiğinden tek başına çalışır; ardından bir REST tepki zaman çizelgesinin yanı sıra HTML/PNG görsel yapıtlarını yakalar. Mantis öncesi/sonrası raporları ayrıca senaryo tarafından sağlanan MP4 yapıtlarınıbaseline.mp4vecandidate.mp4olarak korur.discord-thread-reply-filepath-attachment- isteğe bağlı Mantis senaryosu; bkz. Discord Mantis senaryoları.
Discord ses kanalına otomatik katılım senaryosunu açıkça çalıştırın:
pnpm openclaw qa discord \ --scenario discord-voice-autojoin \ --provider-mode mock-openaiMantis durum-tepki senaryosunu açıkça çalıştırın:
pnpm openclaw qa discord \ --scenario discord-status-reactions-tool-only \ --provider-mode live-frontier \ --model openai/gpt-5.6-luna \ --alt-model openai/gpt-5.6-luna \ --fastÇıktı yapıtları:
qa-suite-report.mdqa-suite-summary.jsonqa-evidence.json- canlı aktarım denetimlerine ait kanıt girdileri.discord-qa-reaction-timelines.jsonve durum-tepki senaryosu çalıştığındadiscord-status-reactions-tool-only-timeline.png.
Slack QA
pnpm openclaw qa slackİki ayrı bot içeren gerçek bir özel Slack kanalını hedefler: test düzeneği tarafından denetlenen bir sürücü botu ve paketlenmiş Slack Plugin'i üzerinden alt OpenClaw gateway'i tarafından başlatılan bir SUT botu.
--credential-source env olduğunda gerekli ortam:
OPENCLAW_QA_SLACK_CHANNEL_IDOPENCLAW_QA_SLACK_DRIVER_BOT_TOKENOPENCLAW_QA_SLACK_SUT_BOT_TOKENOPENCLAW_QA_SLACK_SUT_APP_TOKEN
İsteğe bağlı:
OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_DIR, Mantis için görsel onay denetim noktalarını etkinleştirir. Bağdaştırıcı<scenario>.pending.jsonve<scenario>.resolved.jsondosyalarını yazar, ardından eşleşen.ack.jsondosyalarını bekler.OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_TIMEOUT_MS, denetim noktası onay zaman aşımını geçersiz kılar. Varsayılan değer120000şeklindedir.
Slack canlı bağdaştırıcısı aracılığıyla sunulan kurallı YAML senaryoları:
thread-follow-upthread-isolation
Slack YAML modülü senaryoları (qa/scenarios/channels/slack-*.yaml):
slack-canaryslack-mention-gatingslack-allowlist-blockslack-channel-disabled-warning- yapılandırılmış devre dışı bir kanalın yanıt vermeden yapılandırılmış bir uyarı yayımladığını doğrulayan isteğe bağlı gerçek Slack araştırması.slack-top-level-reply-shapeslack-restart-resumeslack-progress-commentary-true,slack-progress-commentary-false,slack-progress-commentary-omittedveslack-progress-commentary-verbose-dedupe- bağımsız yorum/araç ilerleme denetimleri, atlanan anahtarın eski varsayılanı ve kalıcı ayrıntılı ilerleme açıkken tek teslim davranışı için isteğe bağlı gerçek Slack araştırmaları.slack-reaction-glyph-native- isteğe bağlı canlı mesaj aracı tepki senaryosu. Ajana tam✅glifini iletmesini bildirir ve Slack'in hedef mesajda SUT botu içinwhite_check_markdeğerini sakladığını doğrular.slack-chart-presentation-native- yereldata_visualizationbloğunu ve tam erişilebilir metni doğrulayan isteğe bağlı taşınabilir grafik senaryosu.slack-table-presentation-native- yereldata_tablebloğunu, tam satırları ve erişilebilir metni doğrulayan isteğe bağlı taşınabilir tablo senaryosu.slack-table-invalid-blocks-fallback- üretim Slack gönderim yolu üzerinden yapısal olarak okunabilir, sınırı aşan, 101 veri satırı ve başlığını içeren ham bir tablo gönderen; Slack'in bizzatinvalid_blocksdöndürdüğünü kanıtlayan ve saklanan biçimlendirme devre dışı geri dönüşünün eksiksiz olduğunu ve yerel veri bloğu içermediğini doğrulayan isteğe bağlı doğrudan aktarım senaryosu. Senaryo ayrıntıları yalnızca güvenli hata kodu, sayı ve Boole kanıtlarını tutar.slack-approval-exec-native- isteğe bağlı yerel Slack exec onay senaryosu. Gateway üzerinden exec onayı ister, Slack mesajında yerel onay düğmeleri bulunduğunu doğrular, onayı çözümler ve çözümlenmiş Slack güncellemesini doğrular.slack-approval-plugin-native- isteğe bağlı yerel Slack Plugin onay senaryosu. Plugin olaylarının exec onay yönlendirmesi tarafından engellenmemesi için exec ve Plugin onayı iletmeyi birlikte etkinleştirir, ardından aynı bekleyen/çözümlenmiş yerel Slack kullanıcı arayüzü yolunu doğrular.slack-codex-approval-exec-native- isteğe bağlı Codex Guardian komut onayı senaryosu. Codex Plugin'ini Guardian modunda etkinleştirir, Slack kaynaklı bir Gateway ajan turunu Codex uygulama sunucusu test düzeneği üzerinden yönlendirir,openclaw-codex-app-serveriçin yerel Slack Plugin onay istemini bekler, onayı çözümler ve Codex turunun beklenen komut çıktısı ve asistan işaretçileriyle tamamlandığını doğrular.slack-codex-approval-plugin-native- isteğe bağlı Codex Guardian dosya onayı senaryosu. Codex'in uygulama sunucusu dosya değişikliği onay yolunu yayması için çalışma alanı dışındaki birapply_patchtalimatını kullanır, ardından aynı yerel Slack bekleyen/çözümlenmiş onay yolunu, nihai asistan işaretçisini ve temizleme öncesindeki tam dosya içeriğini doğrular.
Codex onay senaryoları bir openai/* veya codex/* --model,
normal canlı model kimlik bilgileri ve Codex Plugin'i tarafından kabul edilen Codex kimlik doğrulaması ya da API anahtarı kimlik doğrulaması gerektirir.
Senaryo ayrıntıları, gizlenmiş Slack onay meta verilerinin yanı sıra Codex uygulama sunucusu yöntemini,
seçilen Codex model anahtarını, nihai Codex tur durumunu ve işlem işaretçisi doğrulamasını içerir.
Çıktı yapıtları:
qa-suite-report.mdqa-suite-summary.jsonqa-evidence.json- canlı aktarım denetimlerine ait kanıt girdileri.approval-checkpoints/- yalnızca MantisOPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_DIRayarını yaptığında; denetim noktası JSON'unu, onay JSON'unu ve bekleyen/çözümlenmiş ekran görüntülerini içerir.
Slack çalışma alanını ayarlama
Hat, tek bir çalışma alanında iki ayrı Slack uygulamasına ve her iki botun da üye olduğu bir kanala ihtiyaç duyar:
channelId- her iki botun da davet edildiği bir kanalınCxxxxxxxxxxkimliği. Özel bir kanal kullanın; hat her çalıştırmada gönderi yapar.driverBotToken- Sürücü uygulamasının bot belirteci (xoxb-...).sutBotToken- SUT uygulamasının bot belirteci (xoxb-...); bot kullanıcı kimliğinin farklı olması için sürücüden ayrı bir Slack uygulaması olmalıdır.sutAppToken- SUT uygulamasınınconnections:writeiçeren uygulama düzeyi belirteci (xapp-...); SUT uygulamasının olayları alabilmesi için Socket Mode tarafından kullanılır.
Üretim çalışma alanını yeniden kullanmak yerine QA'ya ayrılmış bir Slack çalışma alanını tercih edin.
Aşağıdaki SUT manifesti, paketlenmiş Slack Plugin'inin
üretim kurulumunu (extensions/slack/src/setup-shared.ts:12) kasıtlı olarak canlı Slack QA paketi tarafından kapsanan
izin ve olaylarla sınırlar. Kullanıcıların gördüğü üretim kanalı kurulumu için
Slack kanalı hızlı kurulumu bölümüne bakın; hat aynı çalışma alanında
iki ayrı bot kullanıcı kimliğine ihtiyaç duyduğundan QA Sürücü/SUT çifti
kasıtlı olarak ayrıdır.
1. Sürücü uygulamasını oluşturun
api.slack.com/apps → Create New App → From a manifest yoluna gidin → QA çalışma alanını seçin, aşağıdaki manifesti yapıştırın, ardından Install to Workspace öğesini seçin:
{ "display_information": { "name": "OpenClaw QA Driver", "description": "OpenClaw QA Slack canlı hattı için test sürücüsü botu" }, "features": { "bot_user": { "display_name": "OpenClaw QA Driver", "always_online": true } }, "oauth_config": { "scopes": { "bot": ["chat:write", "channels:history", "groups:history", "users:read"] } }, "settings": { "socket_mode_enabled": false }}Bot User OAuth Token değerini (xoxb-...) kopyalayın; bu,
driverBotToken olur. Sürücünün yalnızca mesaj göndermesi ve kendisini
tanımlaması gerekir; olaylar ve Socket Mode gerekmez.
2. SUT uygulamasını oluşturun
Aynı çalışma alanında Create New App → From a manifest adımlarını tekrarlayın. Bu QA uygulaması,
paketlenmiş Slack Plugin'inin üretim manifestinin (extensions/slack/src/setup-shared.ts:12) kasıtlı olarak daha dar bir
sürümünü kullanır: canlı Slack QA paketi tepki işlemeyi henüz kapsamadığından
tepki kapsamları ve olayları dahil edilmez.
{ "display_information": { "name": "OpenClaw QA SUT", "description": "OpenClaw için OpenClaw QA SUT bağlayıcısı" }, "features": { "bot_user": { "display_name": "OpenClaw QA SUT", "always_online": true }, "app_home": { "home_tab_enabled": true, "messages_tab_enabled": true, "messages_tab_read_only_enabled": false } }, "oauth_config": { "scopes": { "bot": [ "app_mentions:read", "assistant:write", "channels:history", "channels:read", "chat:write", "commands", "emoji:read", "files:read", "files:write", "groups:history", "groups:read", "im:history", "im:read", "im:write", "mpim:history", "mpim:read", "mpim:write", "pins:read", "pins:write", "usergroups:read", "users:read" ] } }, "settings": { "socket_mode_enabled": true, "event_subscriptions": { "bot_events": [ "app_home_opened", "app_mention", "channel_rename", "member_joined_channel", "member_left_channel", "message.channels", "message.groups", "message.im", "message.mpim", "pin_added", "pin_removed" ] } }}Slack uygulamayı oluşturduktan sonra ayarlar sayfasında iki işlem yapın:
- Install to Workspace → Bot User OAuth Token değerini kopyalayın → bu,
sutBotTokenolur. - Basic Information → App-Level Tokens → Generate Token and Scopes →
connections:writekapsamını ekleyin → kaydedin →xapp-...değerini kopyalayın → bu,sutAppTokenolur.
Her bir token üzerinde auth.test çağrısı yaparak iki botun farklı kullanıcı kimliklerine sahip olduğunu doğrulayın. Çalışma zamanı, sürücü ile SUT'yi kullanıcı kimliğine göre ayırt eder; aynı uygulamanın
ikisi için de yeniden kullanılması, bahsetme geçidinin hemen başarısız olmasına neden olur.
3. Kanalı oluşturun
QA çalışma alanında bir kanal (ör. #openclaw-qa) oluşturun ve kanalın içinden her iki
botu da davet edin:
/invite @OpenClaw QA Driver/invite @OpenClaw QA SUTCxxxxxxxxxx kimliğini channel info → About → Channel ID bölümünden kopyalayın; bu,
channelId olur. Herkese açık bir kanal kullanılabilir; özel bir kanal kullanırsanız
her iki uygulama da zaten groups:history kapsamına sahip olduğundan düzeneğin geçmiş okumaları
yine başarılı olur.
4. Kimlik bilgilerini kaydedin
İki seçenek vardır. Tek makineli hata ayıklama için ortam değişkenlerini kullanın (dört
OPENCLAW_QA_SLACK_* değişkenini ayarlayıp --credential-source env iletin) veya
CI'ın ve diğer bakımcıların kiralayabilmesi için paylaşılan Convex havuzunu başlangıç verileriyle doldurun.
Convex havuzu için dört alanı bir JSON dosyasına yazın:
{ "channelId": "Cxxxxxxxxxx", "driverBotToken": "xoxb-...", "sutBotToken": "xoxb-...", "sutAppToken": "xapp-..."}Kabuğunuzda OPENCLAW_QA_CONVEX_SITE_URL ve OPENCLAW_QA_CONVEX_SECRET_MAINTAINER
dışa aktarılmış durumdayken kaydedip doğrulayın:
pnpm openclaw qa credentials add \ --kind slack \ --payload-file slack-creds.json \ --note "QA Slack havuzu başlangıç verisi" pnpm openclaw qa credentials list --kind slack --status all --jsoncount: 1, status: "active" bekleyin; lease alanı bulunmamalıdır.
5. Uçtan uca doğrulayın
Her iki botun aracı üzerinden birbirleriyle iletişim kurabildiğini doğrulamak için hattı yerel olarak çalıştırın:
pnpm openclaw qa slack \ --credential-source convex \ --credential-role maintainer \ --output-dir .artifacts/qa-e2e/slack-localBaşarılı bir çalıştırma 30 saniyeden çok daha kısa sürede tamamlanır ve qa-suite-report.md,
hem slack-canary hem de slack-mention-gating için pass durumunu gösterir. Hat
~90 saniye boyunca takılı kalıp Convex credential pool exhausted for kind "slack" ile çıkarsa havuz ya boştur ya da tüm satırlar kiralanmıştır; hangisi olduğunu qa credentials list --kind slack --status all --json bildirir.
WhatsApp QA
pnpm openclaw qa whatsappİki özel WhatsApp Web hesabını hedefler: düzenek tarafından denetlenen bir sürücü hesabı ve paketle gelen WhatsApp plugin'i üzerinden alt OpenClaw gateway'i tarafından başlatılan bir SUT hesabı.
--credential-source env durumunda gerekli ortam değişkenleri:
OPENCLAW_QA_WHATSAPP_DRIVER_PHONE_E164OPENCLAW_QA_WHATSAPP_SUT_PHONE_E164OPENCLAW_QA_WHATSAPP_DRIVER_AUTH_ARCHIVE_BASE64OPENCLAW_QA_WHATSAPP_SUT_AUTH_ARCHIVE_BASE64
İsteğe bağlı:
OPENCLAW_QA_WHATSAPP_GROUP_JID;whatsapp-mention-gating,whatsapp-group-pending-history-context,whatsapp-broadcast-group-fanout,whatsapp-group-activation-always,whatsapp-group-reply-to-bot-triggers, grup eylemi/medya/anket senaryoları vewhatsapp-group-allowlist-blockgibi grup senaryolarını etkinleştirir.
WhatsApp YAML senaryoları (qa/scenarios/channels/whatsapp-*.yaml):
- Temel davranış ve grup geçidi:
whatsapp-canary,whatsapp-pairing-block,whatsapp-mention-gating,whatsapp-group-pending-history-context,whatsapp-group-activation-always,whatsapp-group-reply-to-bot-triggers,whatsapp-top-level-reply-shape,whatsapp-restart-resume,whatsapp-group-allowlist-block. - Yerel komutlar:
whatsapp-help-command,whatsapp-status-command,whatsapp-commands-command,whatsapp-tools-compact-command,whatsapp-whoami-command,whatsapp-context-command,whatsapp-native-new-command. - Yanıt ve nihai çıktı davranışı:
whatsapp-tool-only-usage-footer,whatsapp-reply-to-message,whatsapp-group-reply-to-message,whatsapp-reply-to-mode-batched,whatsapp-reply-context-isolation,whatsapp-reply-delivery-shape,whatsapp-stream-final-message-accounting. - Kullanıcı yolu mesaj eylemleri:
whatsapp-agent-message-action-react, gerçek bir sürücü DM'sinden başlar, modelinmessagearacını çağırmasına izin verir ve yerel WhatsApp tepkisini gözlemler.whatsapp-agent-message-action-upload-file,message(action=upload-file)için aynı yaklaşımı kullanır ve yerel WhatsApp medyasını gözlemler.whatsapp-group-agent-message-action-reactvewhatsapp-group-agent-message-action-upload-file, gerçek bir WhatsApp grubunda aynı kullanıcıya görünür eylemleri kanıtlar. - Grup yayılımı:
whatsapp-broadcast-group-fanout, bahsetme içeren tek bir WhatsApp grup mesajından başlar vemainileqa-secondtarafından verilen birbirinden farklı görünür yanıtları doğrular. - Grup etkinleştirme:
whatsapp-group-activation-always, gerçek bir grup oturumunu/activation alwaysolarak değiştirir, bahsetme içermeyen bir grup mesajının agent'ı uyandırdığını kanıtlar ve ardından/activation mentiondeğerini geri yükler.whatsapp-group-reply-to-bot-triggers, başlangıç verisi olarak bir bot yanıtı ekler, açık bir bahsetme olmadan bu yanıta yerel bir alıntılı yanıt gönderir ve agent'ın bu yanıt bağlamıyla uyandığını doğrular. - Gelen medya ve yapılandırılmış mesajlar:
whatsapp-inbound-image-caption,whatsapp-audio-preflight,whatsapp-inbound-structured-messages,whatsapp-group-audio-gating,whatsapp-inbound-reaction-no-trigger. Bunlar sürücü üzerinden gerçek WhatsApp görsel, ses, belge, konum, kişi, çıkartma ve tepki olayları gönderir. - Doğrudan Gateway sözleşmesi yoklamaları:
whatsapp-outbound-media-matrix,whatsapp-outbound-document-preserves-filename,whatsapp-outbound-poll,whatsapp-outbound-send-serialization,whatsapp-group-outbound-media,whatsapp-group-outbound-poll,whatsapp-message-actions,whatsapp-reply-context-isolation,whatsapp-reply-delivery-shape. Bunlar model istemini bilinçli olarak atlar ve belirlenimci Gateway/kanalsend,pollvemessage.actionsözleşmelerini kanıtlar. - Erişim denetimi kapsamı:
whatsapp-access-control-dm-open,whatsapp-access-control-dm-disabled,whatsapp-access-control-group-open,whatsapp-access-control-group-disabled,whatsapp-group-allowlist-block. - Yerel onaylar:
whatsapp-approval-exec-deny-native,whatsapp-approval-exec-native,whatsapp-approval-exec-reaction-native,whatsapp-approval-exec-group-reaction-native,whatsapp-approval-plugin-native. - Durum tepkileri:
whatsapp-status-reactions,whatsapp-status-reaction-lifecycle.
Katalog şu anda 52 senaryo içerir. Hızlı duman kapsamı için live-frontier varsayılan hattı
8 senaryoyla küçük tutulur. mock-openai
varsayılan hattı, yalnızca model çıktısını taklit ederek gerçek WhatsApp
taşıması üzerinden 39 senaryoyu belirlenimci biçimde çalıştırır; onay senaryoları ve birkaç
daha ağır/engelleyici kontrol, senaryo kimliğiyle açıkça belirtilmeye devam eder.
WhatsApp QA sürücüsü yapılandırılmış canlı olayları (text, media,
location, reaction ve poll) gözlemler ve etkin biçimde medya, anket,
kişi, konum ve çıkartma gönderebilir. QA Lab, özel
WhatsApp çalışma zamanı dosyalarına erişmek yerine bu sürücüyü
@openclaw/whatsapp/api.js paket yüzeyi üzerinden içe aktarır. Grup gözlemlerinde fromJid grup JID'sidir;
participantJid ve fromPhoneE164 ise katılımcı göndericiyi tanımlar.
Mesaj içeriği varsayılan olarak sansürlenir. Doğrudan Gateway anketi, dosya yükleme,
medya, grup anketi, grup medyası ve yanıt biçimi yoklamaları taşıma/API
sözleşmesi kontrolleridir; bir kullanıcı isteminin agent'ın aynı eylemi
seçmesini sağladığının kanıtı sayılmazlar. Kullanıcı yolu eylem kanıtı,
whatsapp-agent-message-action-react ve
whatsapp-group-agent-message-action-react gibi senaryolardan gelir; bu senaryolarda sürücü normal bir
WhatsApp mesajı gönderir ve QA Lab, bunun sonucunda oluşan yerel WhatsApp eserini gözlemler.
WhatsApp senaryo ayrıntıları, her senaryonun yaklaşımını (user-path,
direct-gateway veya native-approval) içerir; böylece kanıtın gerçekte kanıtladığından
daha güçlü bir sözleşme olduğu sanılamaz.
Çıktı eserleri:
qa-suite-report.mdqa-suite-summary.jsonqa-evidence.json- canlı taşıma kontrollerinin kanıt girdileri.
Convex kimlik bilgisi havuzu
Discord, Slack, Telegram ve WhatsApp hatları, yukarıdaki ortam değişkenlerini okumak yerine
paylaşılan bir Convex havuzundan kimlik bilgileri kiralayabilir. --credential-source convex iletin
(veya OPENCLAW_QA_CREDENTIAL_SOURCE=convex ayarlayın);
QA Lab özel bir kiralama alır, çalıştırma süresince bunun Heartbeat'ini gönderir
ve kapanırken serbest bırakır. Havuz türleri "discord", "slack",
"telegram" ve "whatsapp" şeklindedir.
Aracının admin/add üzerinde doğruladığı yük biçimleri:
- Discord (
kind: "discord"):{ guildId: string, channelId: string, driverBotToken: string, sutBotToken: string, sutApplicationId: string }. - Telegram (
kind: "telegram"):{ groupId: string, driverToken: string, sutToken: string }-groupIdsayısal bir sohbet kimliği dizesi olmalıdır. - Gerçek Telegram kullanıcısı (
kind: "telegram-user"):{ groupId: string, sutToken: string, testerUserId: string, testerUsername: string, telegramApiId: string, telegramApiHash: string, tdlibDatabaseEncryptionKey: string, tdlibArchiveBase64: string, tdlibArchiveSha256: string, desktopTdataArchiveBase64: string, desktopTdataArchiveSha256: string }- yalnızca Mantis Telegram Desktop kanıtı içindir. Genel QA Lab hatları bu türü almamalıdır. - WhatsApp (
kind: "whatsapp"):{ driverPhoneE164: string, sutPhoneE164: string, driverAuthArchiveBase64: string, sutAuthArchiveBase64: string, groupJid?: string }- telefon numaraları birbirinden farklı E.164 dizeleri olmalıdır.
Mantis Telegram Desktop kanıt iş akışı, hem TDLib CLI sürücüsü hem de Telegram Desktop
tanığı için tek bir özel Convex telegram-user kiralamasını tutar ve kanıtı
yayımladıktan sonra serbest bırakır.
Bir PR'ın belirlenimci bir görsel farka ihtiyacı olduğunda Mantis, Telegram biçimlendiricisi veya
teslim katmanı değişirken main üzerinde ve PR başında aynı taklit
model yanıtını kullanabilir. Yakalama varsayılanları PR yorumları için ayarlanmıştır: standart
Crabbox sınıfı, 24fps masaüstü kaydı, 24fps hareketli GIF ve 1920px önizleme
genişliği. Önce/sonra yorumları, yalnızca amaçlanan GIF'leri içeren
temiz bir paket yayımlamalıdır.
Slack hatları da havuzu kullanabilir. Slack yük biçimi kontrolleri şu anda
aracı yerine Slack QA çalıştırıcısında bulunur; { channelId: string, driverBotToken: string, sutBotToken: string, sutAppToken: string } değerini,
Cxxxxxxxxxx gibi bir Slack kanal kimliğiyle kullanın. Uygulama
ve kapsam hazırlığı için Slack çalışma alanını ayarlama bölümüne bakın.
Operasyonel ortam değişkenleri ve Convex aracı uç noktası sözleşmesi Test → Convex üzerinden paylaşılan Telegram kimlik bilgileri bölümünde bulunur (bölümün adı çok kanallı havuzdan öncesine aittir; kiralama anlamları türler arasında ortaktır).
Depo destekli başlangıç verileri
Başlangıç varlıkları qa/ içinde bulunur:
qa/scenarios/index.yamlqa/scenarios/<theme>/*.yaml
QA planının hem insanlar hem de agent tarafından görülebilmesi için bunlar kasıtlı olarak git'te tutulur.
qa-lab genel amaçlı bir YAML senaryo çalıştırıcısı olarak kalır. Her senaryo YAML dosyası,
tek bir test çalıştırmasının doğruluk kaynağıdır ve şunları tanımlamalıdır:
- üst düzey
title scenariometa verileriscenarioiçinde isteğe bağlı kategori, yetenek, hat ve risk meta verileriscenarioiçinde belge ve kod referanslarıscenarioiçinde isteğe bağlı plugin gereksinimleriscenarioiçinde isteğe bağlı gateway yapılandırma yaması- akış senaryoları için çalıştırılabilir üst düzey
flowveya Vitest ve Playwright senaryoları içinscenario.execution.kind/scenario.execution.path
flow altyapısını oluşturan yeniden kullanılabilir çalışma zamanı yüzeyi genel ve
birden fazla alanı kapsayan yapısını korur. Örneğin YAML senaryoları, özel durum
çalıştırıcısı eklemeden gömülü Denetim Arayüzünü Gateway browser.request bağlantı
noktası üzerinden yöneten tarayıcı tarafı yardımcılarını aktarım tarafı
yardımcılarıyla birleştirebilir.
Senaryo dosyaları, kaynak ağacı klasörü yerine ürün yeteneğine göre
gruplandırılmalıdır. Dosyalar taşındığında senaryo kimliklerini sabit tutun;
uygulama izlenebilirliği için docsRefs ve codeRefs kullanın.
Temel liste aşağıdakileri kapsayacak kadar geniş tutulmalıdır:
- DM ve kanal sohbeti
- ileti dizisi davranışı
- mesaj eylemi yaşam döngüsü
- Cron geri çağrıları
- bellekten geri çağırma
- model değiştirme
- alt ajan devri
- depo ve dokümantasyon okuma
- Lobster Invaders gibi küçük bir derleme görevi
Sağlayıcı taklit hatları
qa suite iki yerel sağlayıcı taklit hattına sahiptir:
mock-openai, senaryoya duyarlı OpenClaw taklididir. Depo destekli kalite güvencesi ve eşlik denetimleri için varsayılan belirlenimci taklit hattı olmayı sürdürür.aimock; deneysel protokol, fikstür, kaydetme/yeniden oynatma ve kaos kapsamı için AIMock destekli bir sağlayıcı sunucusu başlatır. Ek niteliktedir vemock-openaisenaryo dağıtıcısının yerini almaz.
Sağlayıcı hattı uygulaması extensions/qa-lab/src/providers/ altında bulunur.
Her sağlayıcı kendi varsayılanlarının, yerel sunucu başlatmasının, Gateway model yapılandırmasının,
kimlik doğrulama profili hazırlama gereksinimlerinin ve canlı/taklit yetenek bayraklarının sahibidir. Paylaşılan paket ve
Gateway kodu, sağlayıcı adlarına göre dallanmak yerine sağlayıcı kayıt defteri üzerinden yönlendirme yapar.
Aktarım bağdaştırıcıları
qa-lab, YAML kalite güvencesi senaryoları için genel bir aktarım bağlantı noktasının sahibidir. qa-channel
yapay varsayılandır. crabline, yerel sağlayıcı biçimli sunucuları başlatır ve
OpenClaw'ın normal kanal pluginlerini bunlara karşı çalıştırır. live, gerçek
sağlayıcı kimlik bilgileri ve harici kanallar için ayrılmıştır.
Mimari düzeyde ayrım şöyledir:
qa-lab; genel senaryo yürütmenin, çalışan eşzamanlılığının, yapıt yazımının ve raporlamanın sahibidir.- Aktarım bağdaştırıcısı; Gateway yapılandırmasının, hazır olma durumunun, gelen ve giden gözlemin, aktarım eylemlerinin ve normalleştirilmiş aktarım durumunun sahibidir.
qa/scenarios/altındaki YAML senaryo dosyaları test çalıştırmasını tanımlar;qa-labbunları yürüten yeniden kullanılabilir çalışma zamanı yüzeyini sağlar.
Kanal ekleme
YAML kalite güvencesi sistemine kanal eklemek için kanal uygulamasının yanı sıra
kanal sözleşmesini kullanan bir senaryo paketi gerekir. Duman testi CI
kapsamı için eşleşen Crabline yerel sağlayıcı sunucusunu ekleyin ve bunu
crabline sürücüsü üzerinden kullanıma sunun.
Paylaşılan qa-lab ana bilgisayarı akışın sahibi olabiliyorsa yeni bir üst düzey kalite güvencesi komut
kökü eklemeyin.
qa-lab, paylaşılan ana bilgisayar mekaniklerinin sahibidir:
openclaw qakomut kökü- paket başlatma ve kapatma
- çalışan eşzamanlılığı
- yapıt yazımı
- rapor oluşturma
- senaryo yürütme
- eski
qa-channelsenaryoları için uyumluluk takma adları
Çalıştırıcı pluginleri aktarım sözleşmesinin sahibidir:
openclaw qa <runner>öğesinin paylaşılanqakökünün altına nasıl bağlandığı- Gateway'in bu aktarım için nasıl yapılandırıldığı
- hazır olma durumunun nasıl denetlendiği
- gelen olayların nasıl eklendiği
- giden mesajların nasıl gözlemlendiği
- dökümlerin ve normalleştirilmiş aktarım durumunun nasıl kullanıma sunulduğu
- aktarım destekli eylemlerin nasıl yürütüldüğü
- aktarıma özgü sıfırlama veya temizliğin nasıl ele alındığı
Yeni bir kanal için asgari benimseme eşiği:
- Paylaşılan
qakökünün sahibi olarakqa-laböğesini koruyun. - Aktarım çalıştırıcısını paylaşılan
qa-labana bilgisayar bağlantı noktasında uygulayın. - Aktarıma özgü mekanikleri çalıştırıcı plugini veya kanal test düzeneği içinde tutun.
- Çalıştırıcıyı rakip bir kök komut kaydetmek yerine
openclaw qa <runner>olarak bağlayın. Çalıştırıcı pluginleriopenclaw.plugin.jsoniçindeqaRunnersbildirmeli veruntime-api.tsüzerinden eşleşen birqaRunnerCliRegistrationsdizisi dışa aktarmalıdır.runtime-api.tsöğesini hafif tutun; gecikmeli CLI ve çalıştırıcı yürütmesi ayrı giriş noktalarının arkasında kalmalıdır. İsteğe bağlıadapterFactory, komutun mevcut senaryo kataloğunu değiştirmeden aktarımı paylaşılan senaryolara açar. - Temalı
qa/scenarios/dizinleri altında YAML senaryoları yazın veya uyarlayın. - Yeni senaryolar için genel senaryo yardımcılarını kullanın.
- Depo kasıtlı bir geçiş yapmıyorsa mevcut uyumluluk takma adlarını çalışır durumda tutun.
Karar kuralı kesindir:
- Davranış
qa-labiçinde bir kez ifade edilebiliyorsa bunuqa-labiçine koyun. - Davranış tek bir kanal aktarımına bağlıysa bunu ilgili çalıştırıcı plugini veya plugin test düzeneği içinde tutun.
- Bir senaryo birden fazla kanalın kullanabileceği yeni bir yetenek gerektiriyorsa
suite.tsiçinde kanala özgü bir dal yerine genel bir yardımcı ekleyin. - Bir davranış yalnızca tek bir aktarım için anlamlıysa senaryoyu aktarıma özgü tutun ve bunu senaryo sözleşmesinde açıkça belirtin.
Senaryo yardımcı adları
Yeni senaryolar için tercih edilen genel yardımcılar:
waitForTransportReadywaitForChannelReadyinjectInboundMessageinjectOutboundMessagewaitForTransportOutboundMessagewaitForChannelOutboundMessagewaitForNoTransportOutboundgetTransportSnapshotreadTransportMessagereadTransportTranscriptformatTransportTranscriptresetTransport
Uyumluluk takma adları mevcut senaryolar için kullanılabilir olmaya devam eder:
waitForQaChannelReady, waitForOutboundMessage, waitForNoOutbound,
formatConversationTranscript, resetBus; ancak yeni senaryo yazımında
genel adlar kullanılmalıdır. Takma adlar gelecekteki model olarak değil,
tek seferde toplu geçişi önlemek için vardır.
Raporlama
qa-lab, gözlemlenen veri yolu zaman çizelgesinden bir Markdown protokol raporu dışa aktarır.
Rapor şu soruları yanıtlamalıdır:
- Neler çalıştı
- Neler başarısız oldu
- Neler engellenmiş durumda kaldı
- Hangi takip senaryoları eklenmeye değer
Takip çalışmasının boyutunu belirlerken veya yeni bir aktarım bağlarken yararlı olan
mevcut senaryoların envanteri için pnpm openclaw qa coverage komutunu çalıştırın (makine tarafından
okunabilir çıktı için --json ekleyin). Değiştirilen bir davranış veya
dosya yolu için odaklı kanıt seçerken pnpm openclaw qa coverage --match <query> komutunu çalıştırın.
Eşleştirme raporu; senaryo meta verilerinde, dokümantasyon başvurularında, kod başvurularında, kapsam kimliklerinde,
pluginlerde ve sağlayıcı gereksinimlerinde arama yapar, ardından eşleşen qa suite --scenario ... hedeflerini yazdırır.
Her qa suite çalıştırması, seçilen senaryo kümesi için üst düzey
qa-evidence.json, qa-suite-summary.json ve qa-suite-report.md
yapıtlarını yazar. execution.kind: vitest veya
execution.kind: playwright bildiren senaryolar eşleşen test yolunu çalıştırır ve ayrıca
senaryo başına günlükler yazar. execution.kind: script bildiren senaryolar,
node --import tsx aracılığıyla execution.path konumundaki kanıt üreticisini çalıştırır
(${outputDir} ve ${scenarioId}, execution.args içinde genişletilir);
üretici kendi qa-evidence.json öğesini yazar, bunun girdileri paket çıktısına
içe aktarılır ve yapıt yolları ilgili üreticinin qa-evidence.json öğesine göre
çözümlenir. qa suite öğesine qa run --qa-profile üzerinden ulaşıldığında aynı
qa-evidence.json, seçilen sınıflandırma kategorilerinin profil
puan kartı özetini de içerir.
Kapsam çıktısını bir denetim kapısının yerine değil, keşif yardımcısı olarak değerlendirin; seçilen senaryonun test edilen davranış için yine de doğru sağlayıcı moduna, canlı aktarıma, Multipass, Testbox veya sürüm hattına ihtiyacı vardır. Puan kartı bağlamı için Olgunluk puan kartı sayfasına bakın.
Karakter ve üslup denetimleri için aynı senaryoyu birden fazla canlı model başvurusunda çalıştırın ve değerlendirilmiş bir Markdown raporu yazın:
pnpm openclaw qa character-eval \ --model openai/gpt-5.6-luna,thinking=medium,fast \ --model openai/gpt-5.2,thinking=xhigh \ --model openai/gpt-5,thinking=xhigh \ --model anthropic/claude-opus-4-8,thinking=high \ --model anthropic/claude-sonnet-4-6,thinking=high \ --model zai/glm-5.1,thinking=high \ --model moonshot/kimi-k2.5,thinking=high \ --model google/gemini-3.1-pro-preview,thinking=high \ --judge-model openai/gpt-5.6-sol,thinking=xhigh,fast \ --judge-model anthropic/claude-opus-4-8,thinking=high \ --blind-judge-models \ --concurrency 16 \ --judge-concurrency 16Komut Docker'ı değil, yerel kalite güvencesi Gateway alt süreçlerini çalıştırır. Karakter
değerlendirme senaryoları kişiliği SOUL.md üzerinden ayarlamalı, ardından sohbet,
çalışma alanı yardımı ve küçük dosya görevleri gibi sıradan kullanıcı etkileşimlerini çalıştırmalıdır. Aday
modele değerlendirildiği söylenmemelidir. Komut her tam dökümü korur,
temel çalıştırma istatistiklerini kaydeder, ardından değerlendirme modellerinden, desteklendiği yerlerde
xhigh akıl yürütmesiyle hızlı modda çalıştırmaları doğallık,
hava ve mizaha göre sıralamalarını ister. Sağlayıcıları karşılaştırırken --blind-judge-models
kullanın: değerlendirme istemi yine her dökümü ve çalıştırma durumunu alır, ancak
aday başvuruları candidate-01 gibi tarafsız etiketlerle değiştirilir; rapor,
ayrıştırmadan sonra sıralamaları gerçek başvurularla yeniden eşler.
Aday çalıştırmalarının varsayılan düşünme düzeyi high; GPT-5.6 Luna için medium,
bunu destekleyen eski OpenAI değerlendirme başvuruları içinse xhigh olur. Belirli bir
adayı satır içinde --model provider/model,thinking=<level> ile geçersiz kılın; satır içi
seçenekler ayrıca fast, no-fast ve fast=<bool> öğelerini destekler.
--thinking <level> yine genel bir geri dönüş değeri belirler ve eski
--model-thinking <provider/model=level> biçimi uyumluluk amacıyla korunur. OpenAI aday
başvuruları varsayılan olarak hızlı modu kullanır; böylece sağlayıcının desteklediği yerlerde
öncelikli işleme kullanılır. Yalnızca her aday modelde hızlı modu zorunlu kılmak
istediğinizde --fast iletin. Aday ve değerlendirici süreleri kıyaslama analizi için
rapora kaydedilir, ancak değerlendirme istemleri açıkça hıza göre sıralama yapılmamasını söyler.
Hem aday hem de değerlendirme modeli çalıştırmalarında varsayılan eşzamanlılık 16'dır.
Sağlayıcı sınırları veya yerel Gateway baskısı çalıştırmayı fazla gürültülü hâle getirdiğinde
--concurrency ya da --judge-concurrency değerini düşürün.
Hiçbir aday --model iletilmediğinde karakter değerlendirmesi varsayılan olarak
openai/gpt-5.6-luna, openai/gpt-5.2, openai/gpt-5,
anthropic/claude-opus-4-8, anthropic/claude-sonnet-4-6, zai/glm-5.1,
moonshot/kimi-k2.5 ve google/gemini-3.1-pro-preview öğelerini kullanır. Hiçbir
--judge-model iletilmediğinde değerlendiriciler varsayılan olarak
openai/gpt-5.6-sol,thinking=xhigh,fast ve
anthropic/claude-opus-4-8,thinking=high olur.