Testing
Test: suite dal vivo
Per l'avvio rapido, i runner QA, le suite unit/integration e i flussi Docker, vedi Testing. Questa pagina copre le suite di test live (che toccano la rete): matrice dei modelli, backend CLI, ACP e test live dei provider multimediali, oltre alla gestione delle credenziali.
Live: comandi smoke locali
Esporta la chiave del provider necessaria nell'ambiente del processo prima dei controlli live ad hoc.
Smoke sicuro dei media:
pnpm openclaw infer tts convert --local --json \ --text "OpenClaw live smoke." \ --output /tmp/openclaw-live-smoke.mp3Smoke sicuro di preparazione alle chiamate vocali:
pnpm openclaw voicecall setup --jsonpnpm openclaw voicecall smoke --to "+15555550123"voicecall smoke è un dry run a meno che non sia presente anche --yes. Usa --yes solo
quando vuoi intenzionalmente effettuare una vera chiamata di notifica. Per Twilio, Telnyx e
Plivo, un controllo di preparazione riuscito richiede un URL Webhook pubblico; i fallback
local-only loopback/privati sono rifiutati per progettazione.
Live: sweep delle capacità del nodo Android
- Test:
src/gateway/android-node.capabilities.live.test.ts - Script:
pnpm android:test:integration - Obiettivo: invocare ogni comando attualmente pubblicizzato da un nodo Android connesso e verificare il comportamento del contratto dei comandi.
- Ambito:
- Setup manuale/precondizionato (la suite non installa/esegue/abbina l'app).
- Validazione
node.invokedel Gateway comando per comando per il nodo Android selezionato.
- Pre-setup richiesto:
- App Android già connessa + abbinata al Gateway.
- App mantenuta in primo piano.
- Autorizzazioni/consenso alla cattura concessi per le capacità che ti aspetti superino il test.
- Override opzionali del target:
OPENCLAW_ANDROID_NODE_IDoOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Dettagli completi del setup Android: App Android
Live: smoke dei modelli (chiavi dei profili)
I test live sono divisi in due livelli, così possiamo isolare i guasti:
- "Modello diretto" ci dice se il provider/modello può rispondere con la chiave indicata.
- "Gateway smoke" ci dice se l'intera pipeline Gateway+agent funziona per quel modello (sessioni, cronologia, strumenti, policy sandbox, ecc.).
Livello 1: completamento diretto del modello (senza Gateway)
- Test:
src/agents/models.profiles.live.test.ts - Obiettivo:
- Enumerare i modelli rilevati
- Usare
getApiKeyForModelper selezionare i modelli per cui hai credenziali - Eseguire un piccolo completamento per modello (e regressioni mirate dove necessario)
- Come abilitarlo:
pnpm test:live(oOPENCLAW_LIVE_TEST=1se invochi Vitest direttamente)
- Imposta
OPENCLAW_LIVE_MODELS=modern,smalloall(alias di modern) per eseguire effettivamente questa suite; altrimenti viene saltata per mantenerepnpm test:livefocalizzato sul Gateway smoke - Come selezionare i modelli:
OPENCLAW_LIVE_MODELS=modernper eseguire l'allowlist moderna (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 5.1, MiniMax M3, Grok 4.3)OPENCLAW_LIVE_MODELS=smallper eseguire l'allowlist vincolata dei modelli piccoli (route Qwen 8B/9B compatibili localmente, Ollama Gemma, OpenRouter Qwen/GLM e Z.AI GLM)OPENCLAW_LIVE_MODELS=allè un alias dell'allowlist moderna- oppure
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,anthropic/claude-opus-4-6,..."(allowlist separata da virgole) - Le esecuzioni locali Ollama per modelli piccoli usano come default
http://127.0.0.1:11434; impostaOPENCLAW_LIVE_OLLAMA_BASE_URLsolo per endpoint LAN, personalizzati o Ollama Cloud. - Gli sweep modern/all e small usano come default i rispettivi limiti curati; imposta
OPENCLAW_LIVE_MAX_MODELS=0per uno sweep esaustivo dei profili selezionati o un numero positivo per un limite più piccolo. - Gli sweep esaustivi usano
OPENCLAW_LIVE_TEST_TIMEOUT_MSper il timeout dell'intero test diretto del modello. Default: 60 minuti. - Le probe dirette del modello vengono eseguite con parallelismo a 20 vie per impostazione predefinita; imposta
OPENCLAW_LIVE_MODEL_CONCURRENCYper sovrascriverlo.
- Come selezionare i provider:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(allowlist separata da virgole)
- Da dove arrivano le chiavi:
- Per impostazione predefinita: archivio profili e fallback env
- Imposta
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per imporre solo archivio profili
- Perché esiste:
- Separa "l'API del provider è rotta / la chiave non è valida" da "la pipeline agent del Gateway è rotta"
- Contiene regressioni piccole e isolate (esempio: replay del ragionamento OpenAI Responses/Codex Responses + flussi tool-call)
Livello 2: Gateway + smoke dell'agent dev (quello che "@openclaw" fa davvero)
- Test:
src/gateway/gateway-models.profiles.live.test.ts - Obiettivo:
- Avviare un Gateway in-process
- Creare/applicare patch a una sessione
agent:dev:*(override del modello per esecuzione) - Iterare sui modelli con chiavi e verificare:
- risposta "significativa" (senza strumenti)
- una vera invocazione di strumento funziona (probe di lettura)
- probe di strumenti extra opzionali (probe exec+read)
- i percorsi di regressione OpenAI (solo tool-call → follow-up) continuano a funzionare
- Dettagli delle probe (così puoi spiegare rapidamente i guasti):
- probe
read: il test scrive un file nonce nell'area di lavoro e chiede all'agent di leggerlo conreade ripetere il nonce. - probe
exec+read: il test chiede all'agent di scrivere conexecun nonce in un file temporaneo, quindi rileggerlo conread. - probe immagine: il test allega un PNG generato (gatto + codice casuale) e si aspetta che il modello restituisca
cat <CODE>. - Riferimento implementativo:
src/gateway/gateway-models.profiles.live.test.tsetest/helpers/live-image-probe.ts.
- probe
- Come abilitarlo:
pnpm test:live(oOPENCLAW_LIVE_TEST=1se invochi Vitest direttamente)
- Come selezionare i modelli:
- Default: allowlist moderna (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M3, Grok 4.3)
OPENCLAW_LIVE_GATEWAY_MODELS=smallper eseguire la stessa allowlist vincolata dei modelli piccoli attraverso l'intera pipeline Gateway+agentOPENCLAW_LIVE_GATEWAY_MODELS=allè un alias dell'allowlist moderna- Oppure imposta
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(o lista separata da virgole) per restringere - Gli sweep Gateway modern/all e small usano come default i rispettivi limiti curati; imposta
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0per uno sweep esaustivo selezionato o un numero positivo per un limite più piccolo.
- Come selezionare i provider (evita "tutto OpenRouter"):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(allowlist separata da virgole)
- Le probe strumenti + immagini sono sempre attive in questo test live:
- probe
read+ probeexec+read(stress degli strumenti) - la probe immagine viene eseguita quando il modello pubblicizza il supporto all'input immagine
- 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 in
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - L'agent incorporato inoltra al modello un messaggio utente multimodale
- Asserzione: la risposta contiene
cat+ il codice (tolleranza OCR: errori minori consentiti)
- Il test genera un piccolo PNG con "CAT" + codice casuale (
- probe
Live: smoke backend CLI (Claude, Gemini o altre CLI locali)
- Test:
src/gateway/gateway-cli-backend.live.test.ts - Obiettivo: validare la pipeline Gateway + agent usando un backend CLI locale, senza toccare la tua config predefinita.
- I default smoke specifici del backend vivono con la definizione
cli-backend.tsdell'estensione proprietaria. - Abilita:
pnpm test:live(oOPENCLAW_LIVE_TEST=1se invochi Vitest direttamente)OPENCLAW_LIVE_CLI_BACKEND=1
- Default:
- Provider/modello predefinito:
claude-cli/claude-sonnet-4-6 - Comportamento comando/argomenti/immagine proviene dai metadati del Plugin backend CLI proprietario.
- Provider/modello predefinito:
- Override (opzionali):
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 vero allegato immagine (i percorsi vengono iniettati nel prompt). Le ricette Docker lo disattivano per impostazione predefinita salvo richiesta esplicita.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"per passare i percorsi dei file immagine come argomenti CLI invece dell'iniezione nel prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(o"list") per controllare come vengono passati gli argomenti immagine quandoIMAGE_ARGè impostato.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1per inviare un secondo turno e validare il flusso di ripresa.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1per aderire alla probe di continuità nella stessa sessione Claude Sonnet -> Opus quando il modello selezionato supporta un target di switch. Le ricette Docker lo disattivano per impostazione predefinita per affidabilità aggregata.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1per aderire alla probe MCP/strumento local loopback. Le ricette Docker lo disattivano per impostazione predefinita salvo richiesta esplicita.
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.tsSmoke economico della config Gemini MCP:
OPENCLAW_LIVE_TEST=1 \ pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.tsQuesto 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 provare che un server
salvato transport: "streamable-http" venga normalizzato nella forma HTTP MCP di Gemini
e possa connettersi a un server MCP streamable-HTTP locale.
Ricetta Docker:
pnpm test:docker:live-cli-backendRicette Docker per singolo provider:
pnpm test:docker:live-cli-backend:claudepnpm test:docker:live-cli-backend:claude-subscriptionpnpm test:docker:live-cli-backend:geminiNote:
- Il runner Docker si trova in
scripts/test-live-cli-backend-docker.sh. - Esegue lo smoke live del backend CLI dentro l'immagine Docker del repo come utente non-root
node. - Risolve i metadati smoke della CLI dall'estensione proprietaria, quindi installa il pacchetto CLI Linux corrispondente (
@anthropic-ai/claude-codeo@google/gemini-cli) in un prefisso scrivibile con cache inOPENCLAW_DOCKER_CLI_TOOLS_DIR(default:~/.cache/openclaw/docker-cli-tools). pnpm test:docker:live-cli-backend:claude-subscriptionrichiede OAuth portabile della sottoscrizione Claude Code tramite~/.claude/.credentials.jsonconclaudeAiOauth.subscriptionTypeoppureCLAUDE_CODE_OAUTH_TOKENdaclaude setup-token. Prima provaclaude -pdiretto in Docker, poi esegue due turni Gateway CLI-backend senza preservare variabili env di chiave API Anthropic. Questa lane di sottoscrizione disabilita per impostazione predefinita le probe Claude MCP/strumento e immagine perché consuma i limiti d'uso della sottoscrizione con accesso effettuato e Anthropic può cambiare il comportamento di fatturazione e rate-limit di Claude Agent SDK /claude -psenza una release OpenClaw.- Lo smoke live del backend CLI ora esercita lo stesso flusso end-to-end per Claude e Gemini: turno testuale, turno di classificazione immagine, quindi chiamata allo strumento MCP
cronverificata tramite la CLI Gateway. - Lo smoke predefinito di Claude applica anche una patch alla sessione da Sonnet a Opus e verifica che la sessione ripresa ricordi ancora una nota precedente.
Live: raggiungibilità proxy APNs HTTP/2
- Test:
src/infra/push-apns-http2.live.test.ts - Obiettivo: effettuare un tunnel attraverso un proxy HTTP CONNECT locale verso l'endpoint APNs sandbox di Apple, inviare la richiesta di validazione APNs HTTP/2 e verificare che la vera risposta Apple
403 InvalidProviderTokenritorni attraverso il percorso proxy. - Abilita:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Timeout opzionale:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Live: smoke bind ACP (/acp spawn ... --bind here)
- Test:
src/gateway/gateway-acp-bind.live.test.ts - Obiettivo: convalidare il flusso reale di associazione conversazione ACP con un agent ACP live:
- inviare
/acp spawn <agent> --bind here - associare in loco una conversazione sintetica del canale messaggi
- inviare un normale follow-up nella stessa conversazione
- verificare che il follow-up arrivi 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:
- agent ACP in Docker:
claude,codex,gemini - agent ACP per
pnpm test:live ...diretto:claude - Canale sintetico: contesto di conversazione in stile DM Slack
- Backend ACP:
acpx
- agent ACP in Docker:
- Override:
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.5OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL=opencode/kimi-k2.6OPENCLAW_LIVE_ACP_BIND_REQUIRE_TRANSCRIPT=1OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.5
- Note:
- Questa lane usa la superficie gateway
chat.sendcon campi sintetici admin-only per la route di origine, così i test possono collegare il contesto del canale messaggi senza fingere una consegna esterna. - Quando
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDnon è impostato, il test usa il registro agent integrato del Pluginacpxincorporato per l'agent harness ACP selezionato. - La creazione MCP Cron della sessione associata è best-effort per impostazione predefinita perché gli harness ACP esterni possono annullare le chiamate MCP dopo che la prova bind/immagine è passata; imposta
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1per rendere rigorosa quella sonda Cron post-bind.
- Questa lane usa la superficie gateway
Esempio:
OPENCLAW_LIVE_ACP_BIND=1 \ OPENCLAW_LIVE_ACP_BIND_AGENT=claude \ pnpm test:live src/gateway/gateway-acp-bind.live.test.tsRicetta Docker:
pnpm test:docker:live-acp-bindRicette Docker per singolo agent:
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 Docker:
- Il runner Docker si trova in
scripts/test-live-acp-bind-docker.sh. - Per impostazione predefinita, esegue lo smoke ACP bind contro gli agent CLI live aggregati in sequenza:
claude,codex, poigemini. - Usa
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=geminioOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodeper restringere la matrice. - Prepara nel container il materiale di autenticazione CLI corrispondente, quindi installa la CLI live richiesta (
@anthropic-ai/claude-code,@openai/codex, Factory Droid tramitehttps://app.factory.ai/cli,@google/gemini-clioopencode-ai) se mancante. Il backend ACP stesso è il pacchettoacpx/runtimeincorporato dal Plugin ufficialeacpx. - La variante Docker Droid prepara
~/.factoryper le impostazioni, inoltraFACTORY_API_KEYe richiede quella chiave API perché l'autenticazione locale Factory OAuth/keyring non è portabile nel container. Usa la voce di registro integrata di ACPXdroid exec --output-format acp. - La variante Docker OpenCode è una lane di regressione rigorosa per singolo agent. Scrive un modello predefinito temporaneo
OPENCODE_CONFIG_CONTENTdaOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(predefinitoopencode/kimi-k2.6) epnpm test:docker:live-acp-bind:opencoderichiede una trascrizione dell'assistant associato invece di accettare lo skip generico post-bind. - Le chiamate CLI dirette a
acpxsono solo un percorso manuale/di workaround per confrontare il comportamento fuori dal Gateway. Lo smoke ACP bind Docker esercita il backend runtimeacpxincorporato in OpenClaw.
Live: smoke dell'harness app-server Codex
- Obiettivo: convalidare l'harness Codex di proprietà del Plugin tramite il normale metodo gateway
agent:- caricare il Plugin
codexin bundle - selezionare
openai/gpt-5.5, che instrada per impostazione predefinita i turni agent OpenAI tramite Codex - inviare un primo turno agent gateway a
openai/gpt-5.5con l'harness Codex selezionato - inviare un secondo turno alla stessa sessione OpenClaw e verificare che il thread app-server possa riprendere
- eseguire
/codex statuse/codex modelstramite lo stesso percorso di comando gateway - facoltativamente eseguire due sonde shell con escalation revisionate da Guardian: un comando innocuo che dovrebbe essere approvato e un caricamento fake-secret che dovrebbe essere negato così l'agent chiede conferma
- caricare il Plugin
- Test:
src/gateway/gateway-codex-harness.live.test.ts - Abilitazione:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Modello predefinito:
openai/gpt-5.5 - Sonda immagine facoltativa:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Sonda MCP/tool facoltativa:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Sonda Guardian facoltativa:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Lo smoke forza provider/modello
agentRuntime.id: "codex"così un harness Codex rotto non può passare tornando silenziosamente a OpenClaw. - Autenticazione: autenticazione app-server Codex dal login locale dell'abbonamento Codex. Gli smoke Docker
possono anche fornire
OPENAI_API_KEYper sonde non Codex quando applicabile, più eventuali~/.codex/auth.jsone~/.codex/config.tomlcopiati.
Ricetta 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.5 \ pnpm test:live -- src/gateway/gateway-codex-harness.live.test.tsRicetta Docker:
pnpm test:docker:live-codex-harnessNote 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, prepara l'albero sorgente, quindi esegue solo il test live dell'harness Codex. - Docker abilita per impostazione predefinita le sonde immagine, MCP/tool e Guardian. Imposta
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0oppureOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0oppureOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0quando serve un'esecuzione di debug più ristretta. - Docker usa la stessa configurazione runtime Codex esplicita, quindi alias legacy o fallback OpenClaw non possono nascondere una regressione dell'harness Codex.
Ricette live consigliate
Le allowlist ristrette ed esplicite sono le più veloci e le meno instabili:
-
Singolo modello, diretto (senza gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
Profilo diretto small-model:
OPENCLAW_LIVE_MODELS=small pnpm test:live src/agents/models.profiles.live.test.ts
-
Profilo gateway small-model:
OPENCLAW_LIVE_GATEWAY_MODELS=small pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Smoke 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
-
Singolo modello, smoke gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Chiamata tool su più provider:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Smoke diretto Z.AI Coding Plan GLM-5.2:
ZAI_CODING_LIVE_TEST=1 pnpm test:live src/agents/zai.live.test.ts
-
Focus Google (chiave API Gemini + Antigravity):
- Gemini (chiave API):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3-flash-preview" 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 Google adaptive thinking:
- Predefinito dinamico Gemini 3:
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 Gemini 2.5:
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
- Predefinito dinamico Gemini 3:
Note:
google/...usa l'API Gemini (chiave API).google-antigravity/...usa il bridge OAuth Antigravity (endpoint agent in stile Cloud Code Assist).google-gemini-cli/...usa la CLI Gemini locale sulla tua macchina (autenticazione separata + peculiarità degli strumenti).- Gemini API rispetto a Gemini CLI:
- API: OpenClaw chiama l'API Gemini ospitata da Google su HTTP (chiave API / autenticazione profilo); questo è ciò che la maggior parte degli utenti intende per "Gemini".
- CLI: OpenClaw esegue una shell verso un binario locale
gemini; ha la propria autenticazione e può comportarsi diversamente (streaming/supporto tool/disallineamento versioni).
Live: matrice dei modelli (cosa copriamo)
Non esiste un elenco fisso di "modelli CI" (live è opt-in), ma questi sono i modelli consigliati da coprire regolarmente su una macchina di sviluppo con chiavi.
Set smoke moderno (chiamata tool + immagine)
Questa è l'esecuzione dei "modelli comuni" che ci aspettiamo rimanga funzionante:
- OpenAI (non Codex):
openai/gpt-5.5 - OpenAI ChatGPT/Codex OAuth:
openai/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(oanthropic/claude-sonnet-4-6) - Google (Gemini API):
google/gemini-3.1-pro-previewegoogle/gemini-3-flash-preview(evita i modelli Gemini 2.x meno recenti) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingegoogle-antigravity/gemini-3-flash - DeepSeek:
deepseek/deepseek-v4-flashedeepseek/deepseek-v4-pro - Z.AI (GLM):
zai/glm-5.1(API generale) ozai/glm-5.2(Coding Plan) - MiniMax:
minimax/MiniMax-M3
Esegui lo smoke gateway con tool + immagine:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
Baseline: chiamata tool (Read + Exec facoltativo)
Scegline almeno uno per famiglia di provider:
- OpenAI:
openai/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(oanthropic/claude-sonnet-4-6) - Google:
google/gemini-3-flash-preview(ogoogle/gemini-3.1-pro-preview) - DeepSeek:
deepseek/deepseek-v4-flash - Z.AI (GLM):
zai/glm-5.1(API generale) ozai/glm-5.2(Coding Plan) - MiniMax:
minimax/MiniMax-M3
Copertura aggiuntiva facoltativa (utile da avere):
- xAI:
xai/grok-4.3(o l'ultimo disponibile) - Mistral:
mistral/… (scegli un modello compatibile con "tools" che hai abilitato) - Cerebras:
cerebras/… (se hai accesso) - LM Studio:
lmstudio/… (locale; la chiamata tool dipende dalla modalità API)
Vision: invio immagine (allegato → messaggio multimodale)
Includi almeno un modello capace di immagini in OPENCLAW_LIVE_GATEWAY_MODELS (varianti Claude/Gemini/OpenAI compatibili con vision, ecc.) per esercitare la sonda immagine.
Aggregatori / gateway alternativi
Se hai chiavi abilitate, supportiamo anche il testing tramite:
- OpenRouter:
openrouter/...(centinaia di modelli; usaopenclaw models scanper trovare candidati compatibili con tool+immagine) - 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 hai credenziali/config):
- Integrati:
openai,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,opencode-go,xai,groq,cerebras,mistral,github-copilot - Tramite
models.providers(endpoint personalizzati):minimax(cloud/API), più qualsiasi proxy compatibile con OpenAI/Anthropic (LM Studio, vLLM, LiteLLM, ecc.)
Credenziali (non committare mai)
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 dice "no creds", esegui il debug nello stesso modo in cui eseguiresti il debug di
openclaw models list/ della selezione del modello. -
Profili di autenticazione per agente:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(questo è ciò che "profile keys" significa nei test live) -
Configurazione:
~/.openclaw/openclaw.json(oOPENCLAW_CONFIG_PATH) -
Directory di stato legacy:
~/.openclaw/credentials/(copiata nella home live preparata quando presente, ma non nell'archivio principale delle chiavi profilo) -
Le esecuzioni live locali copiano per impostazione predefinita la configurazione attiva, i file
auth-profiles.jsonper agente,credentials/legacy e le directory di autenticazione CLI esterne supportate in una home di test temporanea; le home live preparate saltanoworkspace/esandboxes/, e gli override di percorsoagents.*.workspace/agentDirvengono rimossi, così le sonde restano fuori dal workspace reale dell'host.
Se vuoi basarti sulle chiavi env, esportale prima dei test locali oppure usa i
runner Docker sotto con un OPENCLAW_PROFILE_FILE esplicito.
Deepgram live (trascrizione audio)
- Test:
extensions/deepgram/audio.live.test.ts - Abilita:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Piano di coding BytePlus live
- Test:
extensions/byteplus/live.test.ts - Abilita:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Override opzionale del modello:
BYTEPLUS_CODING_MODEL=ark-code-latest
Media workflow ComfyUI live
- Test:
extensions/comfy/comfy.live.test.ts - Abilita:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Ambito:
- Esercita i percorsi bundled di immagine, video e
music_generatedi comfy - Salta ogni funzionalità a meno che
plugins.entries.comfy.config.<capability>non sia configurato - Utile dopo modifiche a invio del workflow comfy, polling, download o registrazione del plugin
- Esercita i percorsi bundled di immagine, video e
Generazione di immagini live
- 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:
- Enumera ogni Plugin provider di generazione di immagini registrato
- Usa le variabili env del provider già esportate prima delle sonde
- Usa per impostazione predefinita chiavi API live/env prima dei profili di autenticazione archiviati, così chiavi di test obsolete in
auth-profiles.jsonnon mascherano le credenziali reali della shell - Salta i provider senza autenticazione/profilo/modello utilizzabile
- Esegue ogni provider configurato tramite il runtime condiviso di generazione di immagini:
<provider>:generate<provider>:editquando il provider dichiara il supporto alla modifica
- Provider bundled attualmente coperti:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Restrizione opzionale:
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 di autenticazione opzionale:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per forzare l'autenticazione dall'archivio profili e ignorare gli override solo env
Per il percorso CLI distribuito, aggiungi uno smoke infer dopo che il test live
provider/runtime è passato:
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 "Minimal flat test image: one blue square on a white background, no text." \ --output ./openclaw-infer-image-smoke.png \ --jsonQuesto copre il parsing degli argomenti CLI, la risoluzione della configurazione/dell'agente predefinito, l'attivazione dei Plugin bundled, il runtime condiviso di generazione di immagini e la richiesta live al provider. Le dipendenze del Plugin devono essere presenti prima del caricamento del runtime.
Generazione di musica live
- Test:
extensions/music-generation-providers.live.test.ts - Abilita:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Harness:
pnpm test:live:media music - Ambito:
- Esercita il percorso provider bundled condiviso di generazione di musica
- Attualmente copre Google e MiniMax
- Usa le variabili env del provider già esportate prima delle sonde
- Usa per impostazione predefinita chiavi API live/env prima dei profili di autenticazione archiviati, così chiavi di test obsolete in
auth-profiles.jsonnon mascherano le credenziali reali della shell - Salta i provider senza autenticazione/profilo/modello utilizzabile
- Esegue entrambe le modalità runtime dichiarate quando disponibili:
generatecon input solo prompteditquando il provider dichiaracapabilities.edit.enabled
- Copertura attuale della lane condivisa:
google:generate,editminimax:generatecomfy: file live Comfy separato, non questo sweep condiviso
- Restrizione opzionale:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Comportamento di autenticazione opzionale:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per forzare l'autenticazione dall'archivio profili e ignorare gli override solo env
Generazione di video live
- Test:
extensions/video-generation-providers.live.test.ts - Abilita:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Harness:
pnpm test:live:media video - Ambito:
- Esercita il percorso provider bundled condiviso di generazione di video
- Per impostazione predefinita usa il percorso smoke sicuro per la release: provider non FAL, una richiesta text-to-video per provider, prompt di un secondo con aragosta e un limite di operazione per provider da
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000per impostazione predefinita) - Salta FAL per impostazione predefinita perché la latenza della coda lato provider può dominare il tempo di release; passa
--video-providers faloOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"per eseguirlo esplicitamente - Usa le variabili env del provider già esportate prima delle sonde
- Usa per impostazione predefinita chiavi API live/env prima dei profili di autenticazione archiviati, così chiavi di test obsolete in
auth-profiles.jsonnon mascherano le credenziali reali della shell - Salta i provider senza autenticazione/profilo/modello utilizzabile
- Esegue solo
generateper impostazione predefinita - Imposta
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 input immagine locale basato su buffer nello sweep condivisovideoToVideoquando il provider dichiaracapabilities.videoToVideo.enablede il provider/modello selezionato accetta input video locale basato su buffer nello sweep condiviso
- Provider
imageToVideoattualmente dichiarati ma saltati nello sweep condiviso:vydraperchéveo3bundled è solo testo eklingbundled richiede un URL immagine remoto
- Copertura Vydra specifica del provider:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- quel file esegue
veo3text-to-video più una laneklingche usa per impostazione predefinita una fixture con URL immagine remoto
- Copertura live
videoToVideoattuale:- solo
runwayquando il modello selezionato èrunway/gen4_aleph
- solo
- Provider
videoToVideoattualmente dichiarati ma saltati nello sweep condiviso:alibaba,qwen,xaiperché quei percorsi attualmente richiedono URL di riferimento remotihttp(s)/ MP4googleperché la lane condivisa Gemini/Veo attuale usa input locale basato su buffer e quel percorso non è accettato nello sweep condivisoopenaiperché alla lane condivisa attuale mancano garanzie di accesso alla modifica video specifiche per l'organizzazione
- Restrizione opzionale:
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 ogni provider nello sweep predefinito, incluso FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000per ridurre il limite di operazione di ciascun provider per una smoke run aggressiva
- Comportamento di autenticazione opzionale:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1per forzare l'autenticazione dall'archivio profili e ignorare gli override solo env
Harness media live
- Comando:
pnpm test:live:media - Scopo:
- Esegue le suite live condivise di immagine, musica e video tramite un unico entrypoint nativo del repo
- Usa le variabili env del provider già esportate
- Restringe automaticamente ogni suite ai provider che attualmente hanno autenticazione utilizzabile per impostazione predefinita
- Riusa
scripts/test-live.mjs, così il comportamento di Heartbeat e modalità quiet resta coerente
- 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
Correlati
- Testing - suite unit, di integrazione, QA e Docker