Fundamentals
Matrice QA
La lane QA Matrix esegue il Plugin @openclaw/matrix incluso contro un homeserver Tuwunel temporaneo in Docker, con account temporanei per driver, SUT e observer, più stanze prepopolate. È la copertura live con trasporto reale per Matrix.
Questo tooling è riservato ai maintainer. Le release pacchettizzate di OpenClaw omettono intenzionalmente qa-lab, quindi openclaw qa è disponibile solo da un checkout sorgente. I checkout sorgente caricano direttamente il runner incluso: non è necessario alcun passaggio di installazione del Plugin.
Per un contesto più ampio sul framework QA, vedi panoramica QA.
Avvio rapido
pnpm openclaw qa matrix --profile fast --fail-fast
pnpm openclaw qa matrix semplice esegue --profile all e non si ferma al primo errore. Usa --profile fast --fail-fast per un gate di release; suddividi il catalogo con --profile transport|media|e2ee-smoke|e2ee-deep|e2ee-cli quando esegui l'inventario completo in parallelo.
Cosa fa la lane
- Esegue il provisioning di un homeserver Tuwunel temporaneo in Docker (immagine predefinita
ghcr.io/matrix-construct/tuwunel:v1.5.1, nome servermatrix-qa.test, porta28008). - Registra tre utenti temporanei:
driver(invia traffico in ingresso),sut(l'account Matrix OpenClaw sotto test),observer(acquisizione del traffico di terze parti). - Prepopola le stanze richieste dagli scenari selezionati (principale, thread, media, riavvio, secondaria, allowlist, E2EE, DM di verifica, ecc.).
- Avvia un Gateway OpenClaw figlio con il vero Plugin Matrix limitato all'account SUT;
qa-channelnon viene caricato nel figlio. - Esegue gli scenari in sequenza, osservando gli eventi tramite i client Matrix driver/observer.
- Arresta l'homeserver, scrive report e artefatti di riepilogo, quindi termina.
CLI
pnpm openclaw qa matrix [options]
Flag comuni
| Flag | Predefinito | Descrizione |
|---|---|---|
--profile <profile> |
all |
Profilo scenario. Vedi Profili. |
--fail-fast |
disattivato | Ferma l'esecuzione dopo il primo controllo o scenario non riuscito. |
--scenario <id> |
- | Esegue solo questo scenario. Ripetibile. Vedi Scenari. |
--output-dir <path> |
<repo>/.artifacts/qa-e2e/matrix-<timestamp> |
Dove vengono scritti report, riepilogo, eventi osservati e log di output. I percorsi relativi sono risolti da --repo-root. |
--repo-root <path> |
process.cwd() |
Root del repository quando l'invocazione avviene da una directory di lavoro neutra. |
--sut-account <id> |
sut |
ID account Matrix nella configurazione del Gateway QA. |
Flag del provider
La lane usa un trasporto Matrix reale, ma il provider del modello è configurabile:
| Flag | Predefinito | Descrizione |
|---|---|---|
--provider-mode <mode> |
live-frontier |
mock-openai per dispatch mock deterministico o live-frontier per provider frontier live. L'alias legacy live-openai funziona ancora. |
--model <ref> |
predefinito del provider | Ref primaria provider/model. |
--alt-model <ref> |
predefinito del provider | Ref alternativa provider/model quando gli scenari cambiano a metà esecuzione. |
--fast |
disattivato | Abilita la modalità veloce del provider dove supportata. |
Matrix QA non accetta --credential-source o --credential-role. La lane effettua il provisioning locale di utenti temporanei; non esiste un pool di credenziali condiviso da cui effettuare il lease.
Profili
Il profilo selezionato decide quali scenari vengono eseguiti.
| Profilo | Usalo per |
|---|---|
all (predefinito) |
Catalogo completo. Lento ma esaustivo. |
fast |
Sottoinsieme per gate di release che esercita il contratto di trasporto live: canary, mention gating, blocco allowlist, forma della risposta, ripresa dopo riavvio, follow-up nel thread, isolamento del thread, osservazione delle reazioni e consegna dei metadati di approvazione exec. |
transport |
Scenari a livello di trasporto per thread, DM, stanza, autojoin, menzione/allowlist, approvazione e reazioni. |
media |
Copertura degli allegati immagine, audio, video, PDF, EPUB. |
e2ee-smoke |
Copertura E2EE minima: risposta cifrata di base, follow-up nel thread, bootstrap riuscito. |
e2ee-deep |
Scenari E2EE esaustivi per perdita di stato, backup, chiavi e ripristino. |
e2ee-cli |
Scenari CLI openclaw matrix encryption setup e verify * guidati tramite l'harness QA. |
La mappatura esatta si trova in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts.
Scenari
L'elenco completo degli ID scenario è l'union MatrixQaScenarioId in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts:15. Le categorie includono:
- thread -
matrix-thread-*,matrix-subagent-thread-spawn - livello principale / DM / stanza -
matrix-top-level-reply-shape,matrix-room-*,matrix-dm-* - streaming e avanzamento degli strumenti -
matrix-room-partial-streaming-preview,matrix-room-quiet-streaming-preview,matrix-room-tool-progress-*,matrix-room-block-streaming - media -
matrix-media-type-coverage,matrix-room-image-understanding-attachment,matrix-attachment-only-ignored,matrix-unsupported-media-safe - routing -
matrix-room-autojoin-invite,matrix-secondary-room-* - reazioni -
matrix-reaction-* - approvazioni -
matrix-approval-*(metadati exec/plugin, fallback a chunk, reazioni di rifiuto, thread e routingtarget: "both") - riavvio e replay -
matrix-restart-*,matrix-stale-sync-replay-dedupe,matrix-room-membership-loss,matrix-homeserver-restart-resume,matrix-initial-catchup-then-incremental - mention gating, bot-to-bot e allowlist -
matrix-mention-*,matrix-allowbots-*,matrix-allowlist-*,matrix-multi-actor-ordering,matrix-inbound-edit-*,matrix-mxid-prefixed-command-block,matrix-observer-allowlist-override - E2EE -
matrix-e2ee-*(risposta di base, follow-up nel thread, bootstrap, ciclo di vita della chiave di ripristino, varianti di perdita di stato, comportamento del backup server, igiene dei dispositivi, verifica SAS / QR / DM, riavvio, redazione degli artefatti) - CLI E2EE -
matrix-e2ee-cli-*(configurazione della cifratura, configurazione idempotente, errore di bootstrap, ciclo di vita della chiave di ripristino, multi-account, round-trip della risposta del Gateway, autoverifica)
Passa --scenario <id> (ripetibile) per eseguire un set selezionato manualmente; combinalo con --profile all per ignorare il gating del profilo.
Variabili d'ambiente
| Variabile | Predefinito | Effetto |
|---|---|---|
OPENCLAW_QA_MATRIX_TIMEOUT_MS |
1800000 (30 min) |
Limite massimo assoluto sull'intera esecuzione. |
OPENCLAW_QA_MATRIX_CANARY_TIMEOUT_MS |
45000 |
Limite per la risposta canary iniziale. La CI di rilascio lo aumenta sui runner condivisi, così un primo turno lento del Gateway non fallisce prima dell'avvio della copertura dello scenario. |
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS |
8000 |
Finestra di silenzio per le asserzioni negative di mancata risposta. Limitata a ≤ il timeout dell'esecuzione. |
OPENCLAW_QA_MATRIX_CLEANUP_TIMEOUT_MS |
90000 |
Limite per lo smantellamento Docker. Le superfici di errore includono il comando di ripristino docker compose ... down --remove-orphans. |
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE |
ghcr.io/matrix-construct/tuwunel:v1.5.1 |
Sovrascrive l'immagine dell'homeserver quando si convalida rispetto a una versione diversa di Tuwunel. |
OPENCLAW_QA_MATRIX_PROGRESS |
attivo | 0 silenzia le righe di avanzamento [matrix-qa] ... su stderr. 1 le forza. |
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT |
redatto | 1 mantiene il corpo del messaggio e formatted_body in matrix-qa-observed-events.json. Il valore predefinito redige i dati per mantenere sicuri gli artefatti CI. |
OPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT |
disattivo | 1 salta il process.exit deterministico dopo la scrittura degli artefatti. Il valore predefinito forza l'uscita perché gli handle crypto nativi di matrix-js-sdk possono mantenere attivo il loop degli eventi dopo il completamento degli artefatti. |
OPENCLAW_RUN_NODE_OUTPUT_LOG |
non impostato | Quando impostato da un launcher esterno (ad es. scripts/run-node.mjs), Matrix QA riusa quel percorso di log invece di avviare un proprio tee. |
Artefatti di output
Scritti in --output-dir:
matrix-qa-report.md- report del protocollo Markdown (che cosa è passato, fallito, saltato e perché).matrix-qa-summary.json- riepilogo strutturato adatto al parsing della CI e alle dashboard.matrix-qa-observed-events.json- eventi Matrix osservati dai client driver e osservatori. I corpi sono redatti a meno cheOPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1; i metadati di approvazione sono riepilogati con campi sicuri selezionati e anteprima del comando troncata.matrix-qa-output.log- stdout/stderr combinati dell'esecuzione. SeOPENCLAW_RUN_NODE_OUTPUT_LOGè impostato, viene riusato invece il log del launcher esterno.
La directory di output predefinita è <repo>/.artifacts/qa-e2e/matrix-<timestamp>, così le esecuzioni successive non si sovrascrivono a vicenda.
Suggerimenti per il triage
- L'esecuzione si blocca verso la fine: gli handle crypto nativi di
matrix-js-sdkpossono sopravvivere all'harness. Il valore predefinito forza unprocess.exitpulito dopo la scrittura degli artefatti; se hai annullatoOPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT=1, aspettati che il processo resti attivo. - Errore di pulizia: cerca il comando di ripristino stampato (un'invocazione
docker compose ... down --remove-orphans) ed eseguilo manualmente per liberare la porta dell'homeserver. - Finestre di asserzione negativa instabili nella CI: abbassa
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS(predefinito 8 s) quando la CI è veloce; aumentalo sui runner condivisi lenti. - Servono corpi redatti per una segnalazione di bug: riesegui con
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1e allegamatrix-qa-observed-events.json. Tratta l'artefatto risultante come sensibile. - Versione diversa di Tuwunel: punta
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGEalla versione in test. La lane controlla solo l'immagine predefinita fissata.
Contratto di trasporto live
Matrix è una delle tre lane di trasporto live (Matrix, Telegram, Discord) che condividono una singola checklist di contratto definita in panoramica QA → Copertura del trasporto live. qa-channel resta la suite sintetica ampia e intenzionalmente non fa parte di quella matrice.
Correlati
- Panoramica QA - stack QA complessivo e contratto di trasporto live
- Canale QA - adattatore di canale sintetico per scenari basati sul repo
- Testing - esecuzione dei test e aggiunta di copertura QA
- Matrix - il Plugin del canale in test