Testing
Test: suite live
Per l'avvio rapido, gli esecutori QA, le suite unitarie/di integrazione e i flussi Docker, consulta Test. Questa pagina tratta i test live (che accedono alla rete): matrice dei modelli, backend CLI, ACP, provider multimediali e gestione delle credenziali.
Live: comandi smoke locali
Esporta la chiave del provider necessaria nell'ambiente del processo prima di eseguire controlli live ad hoc.
Test smoke sicuro per i contenuti multimediali:
pnpm openclaw infer tts convert --local --json \ --text "OpenClaw live smoke." \ --output /tmp/openclaw-live-smoke.mp3Test smoke sicuro per la disponibilità delle chiamate vocali:
pnpm openclaw voicecall setup --jsonpnpm openclaw voicecall smoke --to "+15555550123"voicecall smoke esegue una simulazione, a meno che non sia presente anche --yes; usa --yes solo
quando intendi effettuare una chiamata reale. Per Twilio, Telnyx e Plivo, un
controllo di disponibilità riuscito richiede un URL Webhook pubblico: gli URL
locali/privati di local loopback vengono rifiutati perché tali provider non possono raggiungerli.
Live: scansione delle funzionalità del Node Android
- Test:
src/gateway/android-node.capabilities.live.test.ts - Script:
pnpm android:test:integration - Obiettivo: richiamare ogni comando attualmente dichiarato da un Node Android connesso e verificare il comportamento del contratto dei comandi.
- Ambito:
- Configurazione preliminare/manuale (la suite non installa, esegue né associa l'app).
- Convalida comando per comando di
node.invokedel Gateway per il Node Android selezionato.
- Configurazione preliminare richiesta:
- App Android già connessa e associata al Gateway.
- App mantenuta in primo piano.
- Autorizzazioni/consenso all'acquisizione concessi per le funzionalità che si prevede superino il test.
- Sostituzioni facoltative della destinazione:
OPENCLAW_ANDROID_NODE_IDoOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Dettagli completi sulla configurazione di Android: App Android
Live: test smoke dei modelli (chiavi dei profili)
I test live dei modelli sono suddivisi in due livelli per isolare gli errori:
- "Modello diretto" indica se il provider/modello è in grado di rispondere con la chiave fornita.
- "Test smoke del Gateway" indica se l'intera pipeline Gateway+agente funziona per quel modello (sessioni, cronologia, strumenti, criteri della sandbox e così via).
Gli elenchi selezionati di modelli riportati di seguito si trovano in src/agents/live-model-filter.ts e
cambiano nel tempo; considera gli array presenti in quel file come fonte attendibile, non questa
pagina.
MiniMax M3 usa minimax/MiniMax-M3 come riferimento provider/modello predefinito.
Livello 1: completamento diretto del modello (senza Gateway)
- Test:
src/agents/models.profiles.live.test.ts - Obiettivo:
- Enumerare i modelli individuati
- Usare
getApiKeyForModelper selezionare i modelli per cui disponi delle credenziali - Eseguire un breve completamento per ciascun modello (e regressioni mirate ove necessario)
- Come abilitarlo:
pnpm test:live(oppureOPENCLAW_LIVE_TEST=1se richiami direttamente Vitest)- Imposta
OPENCLAW_LIVE_MODELS=modern,smalloall(alias dimodern) per eseguire effettivamente questa suite; altrimenti viene ignorata, in modo chepnpm test:liveda solo rimanga incentrato sul test smoke del Gateway.
- Come selezionare i modelli:
OPENCLAW_LIVE_MODELS=modernesegue l'elenco prioritario selezionato ad alto valore informativo (consulta Live: matrice dei modelli)OPENCLAW_LIVE_MODELS=smallesegue l'elenco prioritario selezionato dei modelli di piccole dimensioniOPENCLAW_LIVE_MODELS=allè un alias dimodern- oppure
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,..."(elenco consentito separato da virgole) - Le esecuzioni locali dei modelli Ollama di piccole dimensioni usano per impostazione predefinita
http://127.0.0.1:11434; impostaOPENCLAW_LIVE_OLLAMA_BASE_URLsolo per endpoint LAN, personalizzati o Ollama Cloud. - Le scansioni modern/all e small usano per impostazione predefinita la lunghezza del rispettivo elenco selezionato come limite; imposta
OPENCLAW_LIVE_MAX_MODELS=0per una scansione completa dei profili selezionati oppure un numero positivo per un limite inferiore. - Le scansioni complete usano
OPENCLAW_LIVE_TEST_TIMEOUT_MScome timeout per l'intero test diretto dei modelli. Valore predefinito: 60 minuti. - Le verifiche dirette dei modelli vengono eseguite per impostazione predefinita con un parallelismo pari a 20; imposta
OPENCLAW_LIVE_MODEL_CONCURRENCYper sostituirlo.
- Come selezionare i provider:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(elenco consentito separato da virgole)
- Provenienza delle chiavi:
- Per impostazione predefinita: archivio dei profili e valori di riserva delle variabili d'ambiente
- Imposta
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per imporre l'uso esclusivo dell'archivio dei profili
- Motivo per cui esiste:
- Separa "l'API del provider non funziona / la chiave non è valida" da "la pipeline agente del Gateway non funziona"
- Include regressioni piccole e isolate (esempio: riproduzione del ragionamento OpenAI Responses/Codex Responses + flussi di chiamata degli strumenti)
Livello 2: test smoke del Gateway + agente di sviluppo (ciò che "@openclaw" fa realmente)
- Test:
src/gateway/gateway-models.profiles.live.test.ts - Obiettivo:
- Avviare un Gateway all'interno del processo
- Creare/modificare una sessione
agent:dev:*(sostituzione del modello per ogni esecuzione) - Iterare sui modelli con chiavi e verificare:
- risposta "significativa" (senza strumenti)
- funzionamento di una chiamata reale a uno strumento (verifica di lettura)
- verifiche aggiuntive facoltative degli strumenti (verifica di esecuzione+lettura)
- funzionamento continuativo dei percorsi di regressione OpenAI (solo chiamata allo strumento -> interazione successiva)
- Dettagli delle verifiche (per poter spiegare rapidamente gli errori):
- Verifica
read: il test scrive un file nonce nell'area di lavoro e chiede all'agente di eseguirne lareade restituire il nonce. - Verifica
exec+read: il test chiede all'agente di usareexecper scrivere un nonce in un file temporaneo, quindi di rileggerlo conread. - Verifica dell'immagine: il test allega un PNG generato (gatto + codice casuale) e si aspetta che il modello restituisca
cat <CODE>. - Riferimento dell'implementazione:
src/gateway/gateway-models.profiles.live.test.tsetest/helpers/live-image-probe.ts.
- Verifica
- Come abilitarlo:
pnpm test:live(oppureOPENCLAW_LIVE_TEST=1se richiami direttamente Vitest)
- Come selezionare i modelli:
- Valore predefinito: l'elenco prioritario selezionato ad alto valore informativo (
modern) OPENCLAW_LIVE_GATEWAY_MODELS=smallesegue l'elenco selezionato dei modelli di piccole dimensioni attraverso l'intera pipeline Gateway+agenteOPENCLAW_LIVE_GATEWAY_MODELS=allè un alias dimodern- In alternativa, imposta
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(o un elenco separato da virgole) per restringere la selezione - Le scansioni Gateway modern/all e small usano per impostazione predefinita la lunghezza del rispettivo elenco selezionato come limite; imposta
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0per una scansione completa della selezione oppure un numero positivo per un limite inferiore.
- Valore predefinito: l'elenco prioritario selezionato ad alto valore informativo (
- Come selezionare i provider (evitando "tutto tramite OpenRouter"):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(elenco consentito separato da virgole)
- Le verifiche degli strumenti e delle immagini sono sempre attive in questo test live:
- Verifica
read+ verificaexec+read(stress degli strumenti) - La verifica dell'immagine viene eseguita quando il modello dichiara il supporto per l'input di immagini
- Flusso (ad alto livello):
- Il test genera un piccolo PNG con "CAT" + codice casuale (
test/helpers/live-image-probe.ts) - Lo invia tramite
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Il Gateway analizza gli allegati trasformandoli in
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - L'agente incorporato inoltra al modello un messaggio utente multimodale
- Verifica: la risposta contiene
cat+ il codice (tolleranza OCR: sono ammessi errori minori)
- Il test genera un piccolo PNG con "CAT" + codice casuale (
- Verifica
Live: test smoke del backend CLI (Claude, Gemini o altre CLI locali)
- Test:
src/gateway/gateway-cli-backend.live.test.ts - Obiettivo: convalidare la pipeline Gateway + agente usando un backend CLI locale, senza modificare la configurazione predefinita.
- Le impostazioni predefinite del test smoke specifiche per ciascun backend si trovano nella definizione
cli-backend.tsdel Plugin proprietario. - Abilitazione:
pnpm test:live(oppureOPENCLAW_LIVE_TEST=1se richiami direttamente Vitest)OPENCLAW_LIVE_CLI_BACKEND=1
- Impostazioni predefinite:
- Provider/modello predefinito:
claude-cli/claude-sonnet-4-6 - Il comportamento di comandi/argomenti/immagini deriva dai metadati del Plugin proprietario del backend CLI.
- Provider/modello predefinito:
- Sostituzioni (facoltative):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/claude"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["-p","--output-format","json"]'OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1per inviare un allegato immagine reale (i percorsi vengono inseriti nel prompt). Disattivato per impostazione predefinita nelle procedure Docker.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"per passare i percorsi dei file immagine come argomenti CLI anziché inserirli nel prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(oppure"list") per controllare come vengono passati gli argomenti delle immagini quando è impostatoIMAGE_ARG.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1per inviare una seconda interazione e convalidare il flusso di ripresa.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1per abilitare esplicitamente la verifica di continuità nella stessa sessione Claude Sonnet -> Opus quando il modello selezionato supporta una destinazione di cambio. Disattivata per impostazione predefinita, incluse le procedure Docker.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1per abilitare esplicitamente la verifica del loopback MCP/strumenti. Disattivata per impostazione predefinita nelle procedure Docker.
Esempio:
OPENCLAW_LIVE_CLI_BACKEND=1 \ OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6" \ pnpm test:live src/gateway/gateway-cli-backend.live.test.tsTest smoke economico della configurazione MCP di Gemini:
OPENCLAW_LIVE_TEST=1 \ pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.tsQuesto test non chiede a Gemini di generare una risposta. Scrive le stesse impostazioni di
sistema che OpenClaw fornisce a Gemini, quindi esegue gemini --debug mcp list per dimostrare che un
server salvato con transport: "streamable-http" viene normalizzato nel formato MCP HTTP di Gemini
e può connettersi a un server MCP HTTP in streaming locale.
Procedura Docker:
pnpm test:docker:live-cli-backendProcedure Docker per singolo provider:
pnpm test:docker:live-cli-backend:claudepnpm test:docker:live-cli-backend:claude-subscriptionpnpm test:docker:live-cli-backend:geminiNote:
- L'esecutore Docker si trova in
scripts/test-live-cli-backend-docker.sh. - Esegue il test smoke live del backend CLI nell'immagine Docker del repository come utente
nodenon root. - Risolve i metadati del test smoke CLI dal Plugin proprietario, quindi installa il pacchetto CLI Linux corrispondente (
@anthropic-ai/claude-codeo@google/gemini-cli) in un prefisso scrivibile memorizzato nella cache inOPENCLAW_DOCKER_CLI_TOOLS_DIR(valore predefinito:~/.cache/openclaw/docker-cli-tools). codex-clinon è più un backend CLI incluso; usa inveceopenai/*con il runtime del server applicativo Codex (consulta Live: test smoke dell'harness del server applicativo Codex).pnpm test:docker:live-cli-backend:claude-subscriptionrichiede l'OAuth portabile dell'abbonamento Claude Code tramite~/.claude/.credentials.jsonconclaudeAiOauth.subscriptionTypeoppureCLAUDE_CODE_OAUTH_TOKENottenuto daclaude setup-token. Prima verifica direttamenteclaude -pin Docker, quindi esegue due interazioni del backend CLI del Gateway senza conservare le variabili d'ambiente delle chiavi API Anthropic. Questo percorso per abbonamento disabilita per impostazione predefinita le verifiche MCP/strumenti e immagini di Claude, perché consuma i limiti di utilizzo dell'abbonamento autenticato e Anthropic può modificare il comportamento di fatturazione e limitazione della frequenza di Claude Agent SDK /claude -psenza una versione di OpenClaw.- Claude e Gemini supportano lo stesso insieme di verifiche (interazione testuale, classificazione delle immagini, chiamata allo strumento MCP
cron, continuità nel cambio di modello) tramite i flag precedenti, ma nessuna di queste verifiche viene eseguita per impostazione predefinita: abilitale esplicitamente tramite il relativo flag secondo necessità.
Live: raggiungibilità del proxy HTTP/2 APNs
- Test:
src/infra/push-apns-http2.live.test.ts - Obiettivo: creare un tunnel attraverso un proxy HTTP CONNECT locale verso l'endpoint APNs sandbox di Apple, inviare la richiesta di convalida HTTP/2 APNs e verificare che la risposta reale
403 InvalidProviderTokendi Apple ritorni attraverso il percorso del proxy. - Abilitazione:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Timeout facoltativo:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Live: test smoke del binding ACP (/acp spawn ... --bind here)
- Test:
src/gateway/gateway-acp-bind.live.test.ts - Obiettivo: convalidare il flusso reale di associazione delle conversazioni ACP con un agente ACP attivo:
- inviare
/acp spawn <agent> --bind here - associare sul posto una conversazione sintetica di un canale di messaggistica
- inviare un normale messaggio di follow-up nella stessa conversazione
- verificare che il follow-up venga registrato nella trascrizione della sessione ACP associata
- inviare
- Abilitazione:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Valori predefiniti:
- Agenti ACP in Docker:
claude,codex,gemini - Agente ACP per l'esecuzione diretta di
pnpm test:live ...:claude - Canale sintetico: contesto di conversazione in stile messaggio diretto Slack
- Backend ACP:
acpx
- Agenti ACP in Docker:
- Sostituzioni:
OPENCLAW_LIVE_ACP_BIND_AGENT=claudeOPENCLAW_LIVE_ACP_BIND_AGENT=codexOPENCLAW_LIVE_ACP_BIND_AGENT=droidOPENCLAW_LIVE_ACP_BIND_AGENT=geminiOPENCLAW_LIVE_ACP_BIND_AGENT=opencodeOPENCLAW_LIVE_ACP_BIND_AGENTS=claude,codex,geminiOPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@<version>'OPENCLAW_LIVE_ACP_BIND_CODEX_MODEL=gpt-5.6-lunaOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL=opencode/kimi-k2.6OPENCLAW_LIVE_ACP_BIND_IMAGE_PROBE=1(oppureon/true/yes) per forzare l'attivazione della verifica delle immagini; qualsiasi altro valore la disattiva forzatamente. Per impostazione predefinita viene eseguita per tutti gli agenti tranneopencode.OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.6-luna
- Note:
- Questo percorso usa l'interfaccia
chat.senddel Gateway con campi sintetici della route di origine riservati agli amministratori, affinché i test possano collegare il contesto del canale di messaggistica senza simulare una consegna esterna. - Quando
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDnon è impostato, il test usa il registro agenti integrato del Pluginacpxincorporato per l'agente selezionato nell'harness ACP. - La creazione Cron MCP della sessione associata viene eseguita con il massimo impegno per impostazione predefinita, perché gli harness ACP esterni possono annullare le chiamate MCP dopo il superamento della prova di associazione/immagine; impostare
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1per rendere rigorosa la verifica Cron successiva all'associazione.
- Questo percorso usa l'interfaccia
Esempio:
OPENCLAW_LIVE_ACP_BIND=1 \ OPENCLAW_LIVE_ACP_BIND_AGENT=claude \ pnpm test:live src/gateway/gateway-acp-bind.live.test.tsProcedura Docker:
pnpm test:docker:live-acp-bindProcedure Docker per un singolo agente:
pnpm test:docker:live-acp-bind:claudepnpm test:docker:live-acp-bind:codexpnpm test:docker:live-acp-bind:droidpnpm test:docker:live-acp-bind:geminipnpm test:docker:live-acp-bind:opencodeNote su Docker:
- Il runner Docker si trova in
scripts/test-live-acp-bind-docker.sh. - Per impostazione predefinita, esegue in sequenza lo smoke test dell'associazione ACP sugli agenti CLI attivi aggregati:
claude,codex, quindigemini. - Usare
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=geminioppureOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodeper restringere la matrice. - Predispone nel container il materiale di autenticazione CLI corrispondente, quindi installa la CLI attiva richiesta (
@anthropic-ai/claude-code,@openai/codex, Factory Droid tramitehttps://app.factory.ai/cli,@google/gemini-clioppureopencode-ai), se assente. Il backend ACP stesso è il pacchettoacpx/runtimeincorporato dal Plugin ufficialeacpx. - La variante Docker di Droid predispone
~/.factoryper le impostazioni, inoltraFACTORY_API_KEYe richiede tale chiave API, perché l'autenticazione locale Factory tramite OAuth/portachiavi non è trasferibile nel container. Usa la voce di registro integrata di ACPXdroid exec --output-format acp. - La variante Docker di OpenCode è un percorso rigoroso di regressione per un singolo agente. Scrive un modello predefinito temporaneo in
OPENCODE_CONFIG_CONTENTdaOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(valore predefinitoopencode/kimi-k2.6). - Le chiamate dirette alla CLI
acpxcostituiscono solo un percorso manuale/alternativo per confrontare il comportamento al di fuori del Gateway. Lo smoke test Docker dell'associazione ACP esercita il backend di runtimeacpxincorporato in OpenClaw.
Attivo: smoke test dell'harness app-server Codex
- Obiettivo: convalidare l'harness Codex gestito dal Plugin tramite il normale metodo
agentdel Gateway:- caricare il Plugin
codexincluso - selezionare un modello OpenAI tramite
/model <ref> --runtime codex - inviare un primo turno dell'agente tramite Gateway con il livello di ragionamento richiesto
- inviare un secondo turno alla stessa sessione OpenClaw e verificare che il thread dell'app-server possa riprendere
- eseguire
/codex statuse/codex modelsattraverso lo stesso percorso dei comandi del Gateway - eseguire facoltativamente due verifiche della shell con privilegi elevati esaminate da Guardian: un comando innocuo che dovrebbe essere approvato e un caricamento contenente un falso segreto che dovrebbe essere negato, in modo che l'agente chieda conferma
- caricare il Plugin
- Test:
src/gateway/gateway-codex-harness.live.test.ts - Abilitazione:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Modello di riferimento dell'harness:
openai/gpt-5.6-luna - Selezione predefinita per una nuova chiave API OpenAI:
openai/gpt-5.6 - Ragionamento predefinito:
low - Sostituzione del modello:
OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/<model> - Sostituzione del ragionamento:
OPENCLAW_LIVE_CODEX_HARNESS_THINKING=<level> - Sostituzione della matrice:
OPENCLAW_LIVE_CODEX_HARNESS_TARGETS=<model>=<thinking>,... - Modalità di autenticazione:
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=codex-auth(valore predefinito) usa l'accesso Codex copiato;api-keyusaOPENAI_API_KEYtramite l'app-server Codex. - Verifica facoltativa delle immagini:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Verifica facoltativa MCP/strumenti:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Verifica facoltativa Guardian:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Lo smoke test forza
agentRuntime.id: "codex"per provider/modello, affinché un harness Codex non funzionante non possa superare il test ricorrendo silenziosamente a OpenClaw. - Autenticazione: autenticazione dell'app-server Codex dall'accesso locale con abbonamento Codex oppure
OPENAI_API_KEYquandoOPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-key. Docker può copiare~/.codex/auth.jsone~/.codex/config.tomlper le esecuzioni con abbonamento.
Procedura locale:
OPENCLAW_LIVE_CODEX_HARNESS=1 \ OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 \ OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 \ OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 \ OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/gpt-5.6-luna \ pnpm test:live -- src/gateway/gateway-codex-harness.live.test.tsProcedura Docker:
pnpm test:docker:live-codex-harnessMatrice Codex nativa GPT-5.6:
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-key \ OPENCLAW_LIVE_CODEX_HARNESS_TARGETS='openai/gpt-5.6-sol=ultra,openai/gpt-5.6-terra=ultra,openai/gpt-5.6-luna=max' \ pnpm test:docker:live-codex-harnessValore predefinito per una nuova chiave API OpenAI:
OPENCLAW_LIVE_GATEWAY_OPENAI_API_DEFAULT=1 \ OPENCLAW_LIVE_GATEWAY_PROVIDERS=openai \ OPENCLAW_LIVE_GATEWAY_THINKING=off \ pnpm test:live -- src/gateway/gateway-models.profiles.live.test.tsQuesta prova lascia OPENCLAW_LIVE_GATEWAY_MODELS non impostato, risolve il modello tramite
l'interfaccia di selezione per inferenza della nuova procedura di configurazione iniziale, verifica openai/gpt-5.6, quindi
esegue un turno reale tramite Gateway con il modello risolto.
Matrice GPT-5.6 incorporata in OpenClaw:
OPENCLAW_LIVE_GATEWAY_THINKING=ultra \ OPENCLAW_LIVE_GATEWAY_PROVIDERS=openai \ OPENCLAW_LIVE_GATEWAY_MODELS='openai/gpt-5.6-sol,openai/gpt-5.6-terra,openai/gpt-5.6-luna' \ pnpm test:live -- src/gateway/gateway-models.profiles.live.test.tsNote su Docker:
- Il runner Docker si trova in
scripts/test-live-codex-harness-docker.sh. - Passa
OPENAI_API_KEY, copia i file di autenticazione della CLI Codex quando presenti, installa@openai/codexin un prefisso npm montato e scrivibile, predispone l'albero dei sorgenti, quindi esegue soltanto il test attivo dell'harness Codex. - Docker abilita per impostazione predefinita le verifiche delle immagini, MCP/strumenti e Guardian. Impostare
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0oppureOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0oppureOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0quando è necessaria un'esecuzione di debug più circoscritta. - Docker usa la stessa configurazione esplicita del runtime Codex, perciò gli alias obsoleti o il ripiego su OpenClaw non possono nascondere una regressione dell'harness Codex.
- Le destinazioni della matrice vengono eseguite in sequenza in un unico container. Lo script Docker adatta il timeout predefinito di 35 minuti al numero di destinazioni; qualsiasi timeout della shell esterna o della CI deve consentire la stessa durata complessiva. La CI canonica mantiene ogni destinazione GPT-5.6 in uno shard separato.
Procedure attive consigliate
Gli elenchi di elementi consentiti circoscritti ed espliciti sono i più rapidi e meno soggetti a errori intermittenti:
-
Modello singolo, diretto (senza Gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna" pnpm test:live src/agents/models.profiles.live.test.ts
-
Profilo diretto per modelli piccoli:
OPENCLAW_LIVE_MODELS=small pnpm test:live src/agents/models.profiles.live.test.ts
-
Profilo Gateway per modelli piccoli:
OPENCLAW_LIVE_GATEWAY_MODELS=small pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Smoke test dell'API Ollama Cloud:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 OPENCLAW_LIVE_OLLAMA_BASE_URL=https://ollama.com OPENCLAW_LIVE_OLLAMA_MODEL=glm-5.1:cloud OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=0 pnpm test:live -- extensions/ollama/ollama.live.test.ts
-
Modello singolo, smoke test del Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Chiamata degli strumenti con diversi provider:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,google/gemini-3.5-flash,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Smoke test diretto di Z.AI Coding Plan GLM-5.2:
ZAI_CODING_LIVE_TEST=1 pnpm test:live src/agents/zai.live.test.ts
-
Ambito Google (chiave API Gemini + Antigravity):
- Gemini (chiave API):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3.5-flash" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts - Antigravity (OAuth):
OPENCLAW_LIVE_GATEWAY_MODELS="google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-pro-high" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
- Gemini (chiave API):
-
Smoke test del ragionamento adattivo di Google (
qa manualdalla CLI QA privata; richiedeOPENCLAW_ENABLE_PRIVATE_QA_CLI=1e un checkout dei sorgenti; consultare la panoramica QA):- Valore predefinito dinamico di Gemini 3:
OPENCLAW_ENABLE_PRIVATE_QA_CLI=1 pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-3.1-pro-preview --alt-model google/gemini-3.1-pro-preview --message '/think adaptive Reply exactly: GEMINI_ADAPTIVE_OK' --timeout-ms 180000 - Budget dinamico di Gemini 2.5:
OPENCLAW_ENABLE_PRIVATE_QA_CLI=1 pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-2.5-flash --alt-model google/gemini-2.5-flash --message '/think adaptive Reply exactly: GEMINI25_ADAPTIVE_OK' --timeout-ms 180000
- Valore predefinito dinamico di Gemini 3:
Note:
google/...usa l'API Gemini (chiave API).google-antigravity/...usa il bridge OAuth Antigravity (endpoint dell'agente in stile Cloud Code Assist).google-gemini-cli/...usa la CLI Gemini locale sul computer (autenticazione separata e peculiarità degli strumenti).- API Gemini e CLI Gemini:
- API: OpenClaw chiama tramite HTTP l'API Gemini ospitata da Google (chiave API/autenticazione del profilo); è ciò che la maggior parte degli utenti intende per "Gemini".
- CLI: OpenClaw avvia un processo shell per un eseguibile locale
gemini; dispone di una propria autenticazione e può comportarsi diversamente (streaming/supporto degli strumenti/disallineamento delle versioni).
Attivo: matrice dei modelli (copertura)
I test attivi sono facoltativi, quindi non esiste un "elenco di modelli CI" fisso. OPENCLAW_LIVE_MODELS=modern / OPENCLAW_LIVE_GATEWAY_MODELS=modern (e il relativo alias all) eseguono l'elenco curato delle priorità da HIGH_SIGNAL_LIVE_MODEL_PRIORITY in src/agents/live-model-filter.ts, nel seguente ordine di priorità:
| Provider/modello | Note |
|---|---|
anthropic/claude-opus-4-8 |
|
anthropic/claude-sonnet-5 |
|
anthropic/claude-sonnet-4-6 |
|
anthropic/claude-opus-4-7 |
|
google/gemini-3.1-pro-preview |
API Gemini |
google/gemini-3.5-flash |
API Gemini |
cohere/command-a-plus-05-2026 |
|
moonshot/kimi-k2.7-code |
|
anthropic/claude-opus-4-6 |
|
deepseek/deepseek-v4-flash |
|
deepseek/deepseek-v4-pro |
|
minimax/MiniMax-M3 |
|
openai/gpt-5.5 |
|
openrouter/openai/gpt-5.2-chat |
|
openrouter/minimax/minimax-m2.7 |
|
opencode-go/glm-5 |
|
openrouter/ai21/jamba-large-1.7 |
|
xai/grok-4.5 |
|
xai/grok-4.20-0309-reasoning |
|
zai/glm-5.1 |
|
fireworks/accounts/fireworks/models/glm-5p1 |
|
minimax-portal/minimax-m3 |
L'elenco curato dei modelli piccoli (OPENCLAW_LIVE_MODELS=small / OPENCLAW_LIVE_GATEWAY_MODELS=small), tratto da SMALL_LIVE_MODEL_PRIORITY:
| Provider/modello |
|---|
lmstudio/qwen/qwen3.5-9b |
vllm/qwen/qwen3-8b |
sglang/qwen/qwen3-8b |
ollama/gemma3:4b |
openrouter/qwen/qwen3.5-9b |
openrouter/z-ai/glm-5.1 |
openrouter/z-ai/glm-5 |
zai/glm-5.1 |
Note sull'elenco moderno:
- I provider
codexecodex-clisono esclusi dalla scansione moderna predefinita (coprono il comportamento del backend CLI/ACP, verificato separatamente in precedenza).openai/gpt-5.5viene instradato per impostazione predefinita tramite l'harness app-server di Codex; consulta Test live: controllo rapido dell'harness app-server di Codex. fireworks,google,openrouterexaieseguono nella scansione moderna soltanto gli ID modello esplicitamente selezionati (senza espansione automatica a "tutti i modelli di questo provider").- Includi almeno un modello compatibile con le immagini (varianti con funzionalità visive delle famiglie Claude/Gemini/OpenAI e così via) in
OPENCLAW_LIVE_GATEWAY_MODELSper eseguire la verifica delle immagini.
Esegui il controllo rapido del Gateway con strumenti e immagini su un insieme selezionato manualmente di provider diversi:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3.5-flash,google-antigravity/claude-opus-4-6-thinking,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.tsCopertura aggiuntiva facoltativa al di fuori degli elenchi curati (utile ma non indispensabile; scegli un modello compatibile con gli "strumenti" che hai abilitato):
- Mistral:
mistral/... - Cerebras:
cerebras/...(se hai accesso) - LM Studio:
lmstudio/...(locale; la chiamata degli strumenti dipende dalla modalità API)
Aggregatori / Gateway alternativi
Se hai abilitato le chiavi, puoi eseguire i test anche tramite:
- OpenRouter:
openrouter/...(centinaia di modelli; usaopenclaw models scanper trovare candidati compatibili con strumenti e immagini) - OpenCode:
opencode/...per Zen eopencode-go/...per Go (autenticazione tramiteOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Altri provider che puoi includere nella matrice live (se disponi di credenziali/configurazione):
- Integrati:
anthropic,cerebras,github-copilot,google,google-antigravity,google-gemini-cli,google-vertex,groq,mistral,openai,openrouter,opencode,opencode-go,xai,zai - Tramite
models.providers(endpoint personalizzati):minimax(cloud/API), oltre a qualsiasi proxy compatibile con OpenAI/Anthropic (LM Studio, vLLM, LiteLLM e così via)
Credenziali (non eseguire mai il commit)
I test live rilevano le credenziali nello stesso modo della CLI. Implicazioni pratiche:
-
Se la CLI funziona, i test live dovrebbero trovare le stesse chiavi.
-
Se un test live segnala "no creds", esegui il debug come faresti per
openclaw models list/ la selezione del modello. -
Profili di autenticazione per agente:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(nei test live, "profile keys" indica questo) -
Configurazione:
~/.openclaw/openclaw.json(oppureOPENCLAW_CONFIG_PATH) -
Directory OAuth precedente:
~/.openclaw/credentials/(quando presente, viene copiata nella directory home live di staging, ma non costituisce l'archivio principale delle chiavi dei profili) -
Le esecuzioni live locali copiano la configurazione attiva (rimuovendo le sostituzioni di
agents.*.workspace/agentDir) e il fileauth-profiles.jsondi ogni agente, ma non il resto della directory dell'agente, quindi i dati diworkspace/esandboxes/non raggiungono mai la directory home di staging; copiano inoltre la directory precedentecredentials/e i file/le directory di autenticazione supportati delle CLI esterne (.claude.json,.claude/.credentials.json,.claude/settings*.json,.claude/backups,.codex/auth.json,.codex/config.toml,.gemini,.minimax) in una directory home temporanea per i test.
Se vuoi fare affidamento sulle chiavi delle variabili d'ambiente, esportale prima dei test locali oppure usa gli esecutori Docker riportati di seguito con un OPENCLAW_PROFILE_FILE esplicito.
Test live di Deepgram (trascrizione audio)
- Test:
extensions/deepgram/audio.live.test.ts - Abilitazione:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Test live del piano di programmazione BytePlus
- Test:
extensions/byteplus/live.test.ts - Abilitazione:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Sostituzione facoltativa del modello:
BYTEPLUS_CODING_MODEL=ark-code-latest
Test live dei contenuti multimediali del flusso di lavoro ComfyUI
- Test:
extensions/comfy/comfy.live.test.ts - Abilitazione:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Ambito:
- Verifica i percorsi integrati di Comfy per immagini, video e
music_generate - Ignora ogni funzionalità, a meno che
plugins.entries.comfy.config.<capability>non sia configurato - Utile dopo modifiche all'invio dei flussi di lavoro Comfy, al polling, ai download o alla registrazione del Plugin
- Verifica i percorsi integrati di Comfy per immagini, video e
Test live della generazione di immagini
- Test:
test/image-generation.runtime.live.test.ts - Comando:
pnpm test:live test/image-generation.runtime.live.test.ts - Harness:
pnpm test:live:media image - Ambito:
- Elenca ogni Plugin provider registrato per la generazione di immagini
- Utilizza le variabili d'ambiente dei provider già esportate prima della verifica
- Per impostazione predefinita, usa le chiavi API live/dell'ambiente prima dei profili di autenticazione archiviati, in modo che le chiavi di test obsolete in
auth-profiles.jsonnon nascondano le credenziali reali della shell - Ignora i provider senza autenticazione/profilo/modello utilizzabile
- Esegue ogni provider configurato tramite il runtime condiviso per la generazione di immagini:
<provider>:generate<provider>:editquando il provider dichiara il supporto per la modifica
- Provider integrati attualmente coperti:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Restrizione facoltativa:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="deepinfra"OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image-preview,openrouter/google/gemini-3.1-flash-image-preview,xai/grok-imagine-image"OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit,openrouter:generate,xai:default-generate,xai:default-edit"
- Comportamento facoltativo dell'autenticazione:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per imporre l'autenticazione tramite l'archivio dei profili e ignorare le sostituzioni basate esclusivamente sull'ambiente
Per il percorso CLI distribuito, aggiungi un controllo rapido di infer dopo il superamento del test live del provider/runtime:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_INFER_CLI_TEST=1 pnpm test:live -- test/image-generation.infer-cli.live.test.tsopenclaw infer image providers --jsonopenclaw infer image generate \ --model google/gemini-3.1-flash-image-preview \ --prompt "Immagine di prova piatta e minimale: un quadrato blu su sfondo bianco, senza testo." \ --output ./openclaw-infer-image-smoke.png \ --jsonQuesto copre l'analisi degli argomenti della CLI, la risoluzione della configurazione e dell'agente predefinito, l'attivazione dei Plugin integrati, il runtime condiviso per la generazione di immagini e la richiesta live al provider. Le dipendenze dei Plugin devono essere presenti prima del caricamento del runtime.
Test live della generazione musicale
- Test:
extensions/music-generation-providers.live.test.ts - Abilitazione:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Harness:
pnpm test:live:media music - Ambito:
- Verifica il percorso condiviso dei provider integrati per la generazione musicale
- Attualmente copre
fal,google,minimaxeopenrouter - Utilizza le variabili d'ambiente dei provider già esportate prima della verifica
- Per impostazione predefinita, usa le chiavi API live/dell'ambiente prima dei profili di autenticazione archiviati, in modo che le chiavi di test obsolete in
auth-profiles.jsonnon nascondano le credenziali reali della shell - Ignora i provider senza autenticazione/profilo/modello utilizzabile
- Esegue entrambe le modalità runtime dichiarate, quando disponibili:
generatecon input costituito dal solo prompteditquando il provider dichiaracapabilities.edit.enabled
comfydispone di un proprio file live separato e non fa parte di questa scansione condivisa
- Restrizione facoltativa:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Comportamento facoltativo dell'autenticazione:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per imporre l'autenticazione tramite l'archivio dei profili e ignorare le sostituzioni basate esclusivamente sull'ambiente
Test live della generazione video
- Test:
extensions/video-generation-providers.live.test.ts - Abilitazione:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Harness:
pnpm test:live:media video - Ambito:
- Esercita il percorso condiviso dei provider integrati per la generazione video tra
alibaba,byteplus,deepinfra,fal,google,minimax,openai,openrouter,pixverse,qwen,runway,together,vydra,xai - Usa per impostazione predefinita il percorso di smoke test sicuro per il rilascio: una richiesta da testo a video per provider, un prompt di un secondo con un'aragosta e un limite operativo per provider definito da
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000per impostazione predefinita) - Salta FAL per impostazione predefinita perché la latenza della coda lato provider può incidere fortemente sui tempi di rilascio; specificare
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"(oppure svuotare l'elenco delle esclusioni) per eseguirlo esplicitamente - Prima di effettuare il rilevamento, usa le variabili d'ambiente del provider già esportate
- Per impostazione predefinita, usa le chiavi API live/d'ambiente prima dei profili di autenticazione archiviati, affinché chiavi di test obsolete in
auth-profiles.jsonnon nascondano credenziali reali della shell - Salta i provider privi di autenticazione, profilo o modello utilizzabili
- Per impostazione predefinita, esegue solo
generate - Impostare
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1per eseguire anche le modalità di trasformazione dichiarate, quando disponibili:imageToVideoquando il provider dichiaracapabilities.imageToVideo.enablede il provider/modello selezionato accetta, nell'esecuzione condivisa, un'immagine locale fornita come buffervideoToVideoquando il provider dichiaracapabilities.videoToVideo.enablede il provider/modello selezionato accetta, nell'esecuzione condivisa, un video locale fornito come buffer
- Provider
imageToVideoattualmente dichiarato ma escluso nell'esecuzione condivisa:vydra(l'input di immagini locali fornito come buffer non è supportato in questa corsia)
- Copertura specifica del provider Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- Quel file esegue la conversione da testo a video con
veo3, oltre a una corsia da immagine a video conklingche usa per impostazione predefinita una fixture con URL di immagine remoto (OPENCLAW_LIVE_VYDRA_KLING_IMAGE_URLper sostituirlo).
- Copertura specifica del provider xAI:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "classic Grok Imagine"- Il caso classico genera come primo fotogramma un PNG locale quadrato, omette la geometria, richiede un clip da immagine a video di un secondo, effettua il polling fino al completamento e verifica il buffer scaricato.
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "Grok Imagine Video 1.5"- Il caso 1.5 genera come primo fotogramma un PNG locale, richiede un clip da immagine a video di un secondo in 1080P, effettua il polling fino al completamento e verifica il buffer scaricato.
- Copertura live
videoToVideoattuale:- Solo
runway, quando il modello selezionato viene risolto ingen4_aleph
- Solo
- Provider
videoToVideoattualmente dichiarati ma esclusi nell'esecuzione condivisa:alibaba,google,openai,qwen,xai, perché questi percorsi richiedono attualmente URL di riferimentohttp(s)remoti anziché input locali forniti come buffer
- Esercita il percorso condiviso dei provider integrati per la generazione video tra
- Restrizione facoltativa:
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="deepinfra,google,openai,runway"OPENCLAW_LIVE_VIDEO_GENERATION_MODELS="google/veo-3.1-fast-generate-preview,openai/sora-2,runway/gen4_aleph"OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS=""per includere tutti i provider nell'esecuzione predefinita, incluso FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000per ridurre il limite di ogni operazione del provider durante uno smoke test aggressivo
- Comportamento facoltativo dell'autenticazione:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per forzare l'autenticazione tramite l'archivio dei profili e ignorare le sostituzioni presenti solo nell'ambiente
Harness live per i contenuti multimediali
- Comando:
pnpm test:live:media - Punto di ingresso:
test/e2e/qa-lab/media/hosted-media-provider-live.ts, che eseguepnpm test:live -- <suite-test-file>per ogni suite selezionata, in modo che il comportamento di Heartbeat e della modalità silenziosa rimanga coerente con le altre esecuzioni dipnpm test:live. - Scopo:
- Esegue le suite live condivise per immagini, musica e video tramite un unico punto di ingresso nativo del repository
- Carica automaticamente da
~/.profilele variabili d'ambiente mancanti dei provider - Per impostazione predefinita, limita automaticamente ogni suite ai provider che dispongono attualmente di un'autenticazione utilizzabile
- Flag:
--providers <csv>filtro globale dei provider;--image-providers/--music-providers/--video-providerslimitano un filtro a una singola suite--all-providerssalta il filtro automatico basato sull'autenticazione--allow-emptytermina con0quando il filtro non lascia alcun provider eseguibile--quiet/--no-quietvengono inoltrati atest:live
- Esempi:
pnpm test:live:mediapnpm test:live:media image video --providers openai,google,minimaxpnpm test:live:media video --video-providers openai,runway --all-providerspnpm test:live:media music --quiet
Contenuti correlati
- Test - suite di test unitari, di integrazione, QA e Docker