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.mp3
Smoke sicuro di preparazione alle chiamate vocali:
pnpm openclaw voicecall setup --json
pnpm 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.invoke del 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_ID o OPENCLAW_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
getApiKeyForModel per selezionare i modelli per cui hai credenziali
- Eseguire un piccolo completamento per modello (e regressioni mirate dove necessario)
- Come abilitarlo:
pnpm test:live (o OPENCLAW_LIVE_TEST=1 se invochi Vitest direttamente)
- Imposta
OPENCLAW_LIVE_MODELS=modern, small o all (alias di modern) per eseguire effettivamente questa suite; altrimenti viene saltata per mantenere pnpm test:live focalizzato sul Gateway smoke
- Come selezionare i modelli:
OPENCLAW_LIVE_MODELS=modern per 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=small per 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; imposta OPENCLAW_LIVE_OLLAMA_BASE_URL solo 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=0 per uno sweep esaustivo dei profili selezionati o un numero positivo per un limite più piccolo.
- Gli sweep esaustivi usano
OPENCLAW_LIVE_TEST_TIMEOUT_MS per 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_CONCURRENCY per 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=1 per 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 con read e ripetere il nonce.
- probe
exec+read: il test chiede all’agent di scrivere con exec un nonce in un file temporaneo, quindi rileggerlo con read.
- 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.ts e test/helpers/live-image-probe.ts.
- Come abilitarlo:
pnpm test:live (o OPENCLAW_LIVE_TEST=1 se 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=small per eseguire la stessa allowlist vincolata dei modelli piccoli attraverso l’intera pipeline Gateway+agent
OPENCLAW_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=0 per 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 + probe exec+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
agent attachments: [{ 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)
Per vedere cosa puoi testare sulla tua macchina (e gli id provider/model esatti), esegui:openclaw models list
openclaw models list --json
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.ts dell’estensione proprietaria.
- Abilita:
pnpm test:live (o OPENCLAW_LIVE_TEST=1 se 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.
- 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=1 per 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 quando IMAGE_ARG è impostato.
OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1 per inviare un secondo turno e validare il flusso di ripresa.
OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1 per 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=1 per 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.ts
Smoke economico della config Gemini MCP:
OPENCLAW_LIVE_TEST=1 \
pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts
Questo 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-backend
Ricette Docker per singolo provider:
pnpm test:docker:live-cli-backend:claude
pnpm test:docker:live-cli-backend:claude-subscription
pnpm test:docker:live-cli-backend:gemini
Note:
- 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-code o @google/gemini-cli) in un prefisso scrivibile con cache in OPENCLAW_DOCKER_CLI_TOOLS_DIR (default: ~/.cache/openclaw/docker-cli-tools).
pnpm test:docker:live-cli-backend:claude-subscription richiede OAuth portabile della sottoscrizione Claude Code tramite ~/.claude/.credentials.json con claudeAiOauth.subscriptionType oppure CLAUDE_CODE_OAUTH_TOKEN da claude setup-token. Prima prova claude -p diretto 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 -p senza 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
cron verificata 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 InvalidProviderToken ritorni 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
- Abilitazione:
pnpm test:live src/gateway/gateway-acp-bind.live.test.ts
OPENCLAW_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
- Override:
OPENCLAW_LIVE_ACP_BIND_AGENT=claude
OPENCLAW_LIVE_ACP_BIND_AGENT=codex
OPENCLAW_LIVE_ACP_BIND_AGENT=droid
OPENCLAW_LIVE_ACP_BIND_AGENT=gemini
OPENCLAW_LIVE_ACP_BIND_AGENT=opencode
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,codex,gemini
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@<version>'
OPENCLAW_LIVE_ACP_BIND_CODEX_MODEL=gpt-5.5
OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL=opencode/kimi-k2.6
OPENCLAW_LIVE_ACP_BIND_REQUIRE_TRANSCRIPT=1
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1
OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.5
- Note:
- Questa lane usa la superficie gateway
chat.send con 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_COMMAND non è impostato, il test usa il registro agent integrato del Plugin acpx incorporato 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=1 per rendere rigorosa quella sonda Cron post-bind.
Esempio:
OPENCLAW_LIVE_ACP_BIND=1 \
OPENCLAW_LIVE_ACP_BIND_AGENT=claude \
pnpm test:live src/gateway/gateway-acp-bind.live.test.ts
Ricetta Docker:
pnpm test:docker:live-acp-bind
Ricette Docker per singolo agent:
pnpm test:docker:live-acp-bind:claude
pnpm test:docker:live-acp-bind:codex
pnpm test:docker:live-acp-bind:droid
pnpm test:docker:live-acp-bind:gemini
pnpm test:docker:live-acp-bind:opencode
Note 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, poi gemini.
- Usa
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude, OPENCLAW_LIVE_ACP_BIND_AGENTS=codex, OPENCLAW_LIVE_ACP_BIND_AGENTS=droid, OPENCLAW_LIVE_ACP_BIND_AGENTS=gemini o OPENCLAW_LIVE_ACP_BIND_AGENTS=opencode per 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 tramite https://app.factory.ai/cli, @google/gemini-cli o opencode-ai) se mancante. Il backend ACP stesso è il pacchetto acpx/runtime incorporato dal Plugin ufficiale acpx.
- La variante Docker Droid prepara
~/.factory per le impostazioni, inoltra FACTORY_API_KEY e richiede quella chiave API perché l’autenticazione locale Factory OAuth/keyring non è portabile nel container. Usa la voce di registro integrata di ACPX droid exec --output-format acp.
- La variante Docker OpenCode è una lane di regressione rigorosa per singolo agent. Scrive un modello predefinito temporaneo
OPENCODE_CONFIG_CONTENT da OPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL (predefinito opencode/kimi-k2.6) e pnpm test:docker:live-acp-bind:opencode richiede una trascrizione dell’assistant associato invece di accettare lo skip generico post-bind.
- Le chiamate CLI dirette a
acpx sono solo un percorso manuale/di workaround per confrontare il comportamento fuori dal Gateway. Lo smoke ACP bind Docker esercita il backend runtime acpx incorporato 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
codex in 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.5 con l’harness Codex selezionato
- inviare un secondo turno alla stessa sessione OpenClaw e verificare che il thread app-server
possa riprendere
- eseguire
/codex status e /codex models tramite 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
- 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_KEY per sonde non Codex quando applicabile,
più eventuali ~/.codex/auth.json e ~/.codex/config.toml copiati.
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.ts
Ricetta Docker:
pnpm test:docker:live-codex-harness
Note 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/codex in 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=0 oppure
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0 oppure
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0 quando 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
-
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
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.
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 (o anthropic/claude-sonnet-4-6)
- Google (Gemini API):
google/gemini-3.1-pro-preview e google/gemini-3-flash-preview (evita i modelli Gemini 2.x meno recenti)
- Google (Antigravity):
google-antigravity/claude-opus-4-6-thinking e google-antigravity/gemini-3-flash
- DeepSeek:
deepseek/deepseek-v4-flash e deepseek/deepseek-v4-pro
- Z.AI (GLM):
zai/glm-5.1 (API generale) o zai/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
Scegline almeno uno per famiglia di provider:
- OpenAI:
openai/gpt-5.5
- Anthropic:
anthropic/claude-opus-4-6 (o anthropic/claude-sonnet-4-6)
- Google:
google/gemini-3-flash-preview (o google/gemini-3.1-pro-preview)
- DeepSeek:
deepseek/deepseek-v4-flash
- Z.AI (GLM):
zai/glm-5.1 (API generale) o zai/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; usa openclaw models scan per trovare candidati compatibili con tool+immagine)
- OpenCode:
opencode/... per Zen e opencode-go/... per Go (autenticazione tramite OPENCODE_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.)
Non inserire nei documenti “tutti i modelli” in modo hardcoded. L’elenco autorevole è ciò che discoverModels(...) restituisce sulla tua macchina più le chiavi disponibili.
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 (o OPENCLAW_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.json per agente, credentials/ legacy e le directory di autenticazione CLI esterne supportate in una home di test temporanea; le home live preparate saltano workspace/ e sandboxes/, e gli override di percorso agents.*.workspace / agentDir vengono 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
- 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_generate di 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
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.json non 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>:edit quando il provider dichiara il supporto alla modifica
- Provider bundled attualmente coperti:
deepinfra
fal
google
minimax
openai
openrouter
vydra
xai
- 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=1 per 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.ts
openclaw infer image providers --json
openclaw 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 \
--json
Questo 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.json non mascherano le credenziali reali della shell
- Salta i provider senza autenticazione/profilo/modello utilizzabile
- Esegue entrambe le modalità runtime dichiarate quando disponibili:
generate con input solo prompt
edit quando il provider dichiara capabilities.edit.enabled
- Copertura attuale della lane condivisa:
google: generate, edit
minimax: generate
comfy: 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=1 per 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 (180000 per impostazione predefinita)
- Salta FAL per impostazione predefinita perché la latenza della coda lato provider può dominare il tempo di release; passa
--video-providers fal o OPENCLAW_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.json non mascherano le credenziali reali della shell
- Salta i provider senza autenticazione/profilo/modello utilizzabile
- Esegue solo
generate per impostazione predefinita
- Imposta
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1 per eseguire anche le modalità di trasformazione dichiarate quando disponibili:
imageToVideo quando il provider dichiara capabilities.imageToVideo.enabled e il provider/modello selezionato accetta input immagine locale basato su buffer nello sweep condiviso
videoToVideo quando il provider dichiara capabilities.videoToVideo.enabled e il provider/modello selezionato accetta input video locale basato su buffer nello sweep condiviso
- Provider
imageToVideo attualmente dichiarati ma saltati nello sweep condiviso:
vydra perché veo3 bundled è solo testo e kling bundled 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
veo3 text-to-video più una lane kling che usa per impostazione predefinita una fixture con URL immagine remoto
- Copertura live
videoToVideo attuale:
- solo
runway quando il modello selezionato è runway/gen4_aleph
- Provider
videoToVideo attualmente dichiarati ma saltati nello sweep condiviso:
alibaba, qwen, xai perché quei percorsi attualmente richiedono URL di riferimento remoti http(s) / MP4
google perché la lane condivisa Gemini/Veo attuale usa input locale basato su buffer e quel percorso non è accettato nello sweep condiviso
openai perché 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 FAL
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000 per ridurre il limite di operazione di ciascun provider per una smoke run aggressiva
- Comportamento di autenticazione opzionale:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1 per forzare l’autenticazione dall’archivio profili e ignorare gli override solo env
- 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:media
pnpm test:live:media image video --providers openai,google,minimax
pnpm test:live:media video --video-providers openai,runway --all-providers
pnpm test:live:media music --quiet
Correlati
- Testing - suite unit, di integrazione, QA e Docker