Testing
Tests : suites en direct
Pour le démarrage rapide, les runners QA, les suites unitaires/d’intégration et les flux Docker, consultez Tests. Cette page couvre les suites de tests live (touchant le réseau) : matrice de modèles, backends CLI, ACP et tests live des fournisseurs de médias, ainsi que la gestion des identifiants.
Live : commandes de smoke du profil local
Sourcez ~/.profile avant les vérifications live ad hoc afin que les clés des fournisseurs et les chemins des outils locaux
correspondent à votre shell :
source ~/.profile
Smoke média sûr :
pnpm openclaw infer tts convert --local --json \
--text "OpenClaw live smoke." \
--output /tmp/openclaw-live-smoke.mp3
Smoke sûr de préparation des appels vocaux :
pnpm openclaw voicecall setup --json
pnpm openclaw voicecall smoke --to "+15555550123"
voicecall smoke est une simulation sauf si --yes est également présent. Utilisez --yes uniquement
lorsque vous souhaitez intentionnellement passer un véritable appel de notification. Pour Twilio, Telnyx et
Plivo, une vérification de préparation réussie nécessite une URL de webhook publique ; les solutions de repli
local-only loopback/privées sont refusées par conception.
Live : balayage des capacités d’un Node Android
- Test :
src/gateway/android-node.capabilities.live.test.ts - Script :
pnpm android:test:integration - Objectif : invoquer chaque commande actuellement annoncée par un Node Android connecté et vérifier le comportement du contrat de commande.
- Portée :
- Configuration préalable/manuelle (la suite n’installe, n’exécute et n’apparie pas l’application).
- Validation
node.invokedu Gateway commande par commande pour le Node Android sélectionné.
- Configuration préalable requise :
- Application Android déjà connectée et appariée au Gateway.
- Application maintenue au premier plan.
- Autorisations/consentement de capture accordés pour les capacités dont vous attendez la réussite.
- Remplacements de cible facultatifs :
OPENCLAW_ANDROID_NODE_IDouOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Détails complets de configuration Android : Application Android
Live : smoke des modèles (clés de profil)
Les tests live sont divisés en deux couches afin d’isoler les échecs :
- « Modèle direct » indique si le fournisseur/modèle peut répondre avec la clé donnée.
- « Smoke Gateway » indique si le pipeline complet gateway+agent fonctionne pour ce modèle (sessions, historique, outils, politique de sandbox, etc.).
Couche 1 : complétion directe du modèle (sans Gateway)
- Test :
src/agents/models.profiles.live.test.ts - Objectif :
- Énumérer les modèles découverts
- Utiliser
getApiKeyForModelpour sélectionner les modèles pour lesquels vous disposez d’identifiants - Exécuter une petite complétion par modèle (et des régressions ciblées si nécessaire)
- Activation :
pnpm test:live(ouOPENCLAW_LIVE_TEST=1si vous invoquez Vitest directement)
- Définissez
OPENCLAW_LIVE_MODELS=modern(ouall, alias de modern) pour exécuter réellement cette suite ; sinon, elle est ignorée afin de garderpnpm test:livecentré sur le smoke Gateway - Sélection des modèles :
OPENCLAW_LIVE_MODELS=modernpour exécuter la liste d’autorisation moderne (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)OPENCLAW_LIVE_MODELS=allest un alias de la liste d’autorisation moderne- ou
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,..."(liste d’autorisation séparée par des virgules) - Les balayages modern/all utilisent par défaut une limite sélectionnée à fort signal ; définissez
OPENCLAW_LIVE_MAX_MODELS=0pour un balayage moderne exhaustif ou un nombre positif pour une limite plus petite. - Les balayages exhaustifs utilisent
OPENCLAW_LIVE_TEST_TIMEOUT_MSpour le délai d’expiration global du test de modèle direct. Valeur par défaut : 60 minutes. - Les sondes de modèle direct s’exécutent par défaut avec un parallélisme de 20 ; définissez
OPENCLAW_LIVE_MODEL_CONCURRENCYpour le remplacer.
- Sélection des fournisseurs :
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(liste d’autorisation séparée par des virgules)
- Origine des clés :
- Par défaut : magasin de profils et solutions de repli d’environnement
- Définissez
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1pour imposer uniquement le magasin de profils
- Raison d’être :
- Sépare « l’API du fournisseur est cassée / la clé est invalide » de « le pipeline d’agent Gateway est cassé »
- Contient de petites régressions isolées (exemple : rejeu de raisonnement OpenAI Responses/Codex Responses + flux d’appels d’outils)
Couche 2 : smoke Gateway + agent de développement (ce que fait réellement « @openclaw »)
- Test :
src/gateway/gateway-models.profiles.live.test.ts - Objectif :
- Démarrer un Gateway en processus
- Créer/corriger une session
agent:dev:*(remplacement de modèle par exécution) - Parcourir les modèles avec clés et vérifier :
- réponse « significative » (sans outils)
- invocation réelle d’un outil fonctionnelle (sonde de lecture)
- sondes d’outils supplémentaires facultatives (sonde exec+read)
- les chemins de régression OpenAI (appel d’outil seul → suivi) continuent de fonctionner
- Détails des sondes (pour expliquer rapidement les échecs) :
- Sonde
read: le test écrit un fichier avec nonce dans l’espace de travail et demande à l’agent de lereadet de renvoyer le nonce. - Sonde
exec+read: le test demande à l’agent d’écrire viaexecun nonce dans un fichier temporaire, puis de leread. - Sonde image : le test joint un PNG généré (chat + code aléatoire) et attend que le modèle renvoie
cat <CODE>. - Référence d’implémentation :
src/gateway/gateway-models.profiles.live.test.tsetsrc/gateway/live-image-probe.ts.
- Sonde
- Activation :
pnpm test:live(ouOPENCLAW_LIVE_TEST=1si vous invoquez Vitest directement)
- Sélection des modèles :
- Par défaut : liste d’autorisation moderne (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)
OPENCLAW_LIVE_GATEWAY_MODELS=allest un alias de la liste d’autorisation moderne- Ou définissez
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(ou une liste séparée par des virgules) pour restreindre - Les balayages Gateway modern/all utilisent par défaut une limite sélectionnée à fort signal ; définissez
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0pour un balayage moderne exhaustif ou un nombre positif pour une limite plus petite.
- Sélection des fournisseurs (éviter « tout OpenRouter ») :
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(liste d’autorisation séparée par des virgules)
- Les sondes d’outils et d’images sont toujours activées dans ce test live :
- Sonde
read+ sondeexec+read(stress des outils) - La sonde image s’exécute lorsque le modèle annonce la prise en charge de l’entrée image
- Flux (vue d’ensemble) :
- Le test génère un petit PNG avec « CAT » + code aléatoire (
src/gateway/live-image-probe.ts) - L’envoie via
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Le Gateway analyse les pièces jointes en
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - L’agent intégré transmet un message utilisateur multimodal au modèle
- Assertion : la réponse contient
cat+ le code (tolérance OCR : erreurs mineures autorisées)
- Le test génère un petit PNG avec « CAT » + code aléatoire (
- Sonde
Live : smoke des backends CLI (Claude, Codex, Gemini ou autres CLI locales)
- Test :
src/gateway/gateway-cli-backend.live.test.ts - Objectif : valider le pipeline Gateway + agent avec un backend CLI local, sans toucher à votre configuration par défaut.
- Les valeurs par défaut de smoke propres à chaque backend résident dans la définition
cli-backend.tsde l’extension propriétaire. - Activer :
pnpm test:live(ouOPENCLAW_LIVE_TEST=1si vous invoquez Vitest directement)OPENCLAW_LIVE_CLI_BACKEND=1
- Valeurs par défaut :
- Fournisseur/modèle par défaut :
claude-cli/claude-sonnet-4-6 - Le comportement commande/arguments/image provient des métadonnées du Plugin backend CLI propriétaire.
- Fournisseur/modèle par défaut :
- Remplacements (facultatifs) :
OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.5"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/codex"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]'OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1pour envoyer une vraie pièce jointe image (les chemins sont injectés dans le prompt). Les recettes Docker la désactivent par défaut sauf demande explicite.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"pour passer les chemins des fichiers image comme arguments CLI au lieu d’une injection dans le prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(ou"list") pour contrôler la façon dont les arguments image sont passés lorsqueIMAGE_ARGest défini.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1pour envoyer un second tour et valider le flux de reprise.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1pour activer la sonde de continuité même session Claude Sonnet -> Opus lorsque le modèle sélectionné prend en charge une cible de bascule. Les recettes Docker la désactivent par défaut pour la fiabilité agrégée.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1pour activer la sonde MCP/outils en loopback. Les recettes Docker la désactivent par défaut sauf demande explicite.
Exemple :
OPENCLAW_LIVE_CLI_BACKEND=1 \
OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.5" \
pnpm test:live src/gateway/gateway-cli-backend.live.test.ts
Smoke économique de configuration MCP Gemini :
OPENCLAW_LIVE_TEST=1 \
pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts
Cela ne demande pas à Gemini de générer une réponse. Il écrit les mêmes paramètres système
qu’OpenClaw fournit à Gemini, puis exécute gemini --debug mcp list pour prouver qu’un
serveur transport: "streamable-http" enregistré est normalisé dans la forme HTTP MCP de Gemini
et peut se connecter à un serveur MCP HTTP streamable local.
Recette Docker :
pnpm test:docker:live-cli-backend
Recettes Docker pour un seul fournisseur :
pnpm test:docker:live-cli-backend:claude
pnpm test:docker:live-cli-backend:claude-subscription
pnpm test:docker:live-cli-backend:codex
pnpm test:docker:live-cli-backend:gemini
Notes :
- Le runner Docker se trouve à
scripts/test-live-cli-backend-docker.sh. - Il exécute le smoke live du backend CLI dans l’image Docker du dépôt avec l’utilisateur non-root
node. - Il résout les métadonnées de smoke CLI depuis l’extension propriétaire, puis installe le package CLI Linux correspondant (
@anthropic-ai/claude-code,@openai/codexou@google/gemini-cli) dans un préfixe inscriptible mis en cache àOPENCLAW_DOCKER_CLI_TOOLS_DIR(par défaut :~/.cache/openclaw/docker-cli-tools). pnpm test:docker:live-cli-backend:claude-subscriptionnécessite un OAuth d’abonnement Claude Code portable via~/.claude/.credentials.jsonavecclaudeAiOauth.subscriptionTypeouCLAUDE_CODE_OAUTH_TOKENprovenant declaude setup-token. Il prouve d’abord l’exécution directe declaude -pdans Docker, puis exécute deux tours de backend CLI Gateway sans conserver les variables d’environnement de clé d’API Anthropic. Cette voie d’abonnement désactive par défaut les sondes MCP/outils et image de Claude, car Claude achemine actuellement l’utilisation d’applications tierces via une facturation d’usage supplémentaire au lieu des limites normales du plan d’abonnement.- Le smoke live du backend CLI exerce maintenant le même flux de bout en bout pour Claude, Codex et Gemini : tour texte, tour de classification d’image, puis appel d’outil MCP
cronvérifié via la CLI du Gateway. - Le smoke par défaut de Claude corrige également la session de Sonnet vers Opus et vérifie que la session reprise se souvient toujours d’une note antérieure.
Live : accessibilité du proxy APNs HTTP/2
- Test :
src/infra/push-apns-http2.live.test.ts - Objectif : passer par un proxy HTTP CONNECT local vers l’endpoint APNs sandbox d’Apple, envoyer la requête de validation HTTP/2 APNs et vérifier que la vraie réponse
403 InvalidProviderTokend’Apple revient par le chemin du proxy. - Activer :
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Délai d’expiration facultatif :
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Live : smoke de liaison ACP (/acp spawn ... --bind here)
- Test :
src/gateway/gateway-acp-bind.live.test.ts - Objectif : valider le flux réel de liaison de conversation ACP avec un agent ACP en direct :
- envoyer
/acp spawn <agent> --bind here - lier sur place une conversation synthétique de canal de messages
- envoyer un suivi normal sur cette même conversation
- vérifier que le suivi arrive dans la transcription de session ACP liée
- envoyer
- Activation :
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Valeurs par défaut :
- Agents ACP dans Docker :
claude,codex,gemini - Agent ACP pour
pnpm test:live ...direct :claude - Canal synthétique : contexte de conversation de type MP Slack
- Backend ACP :
acpx
- Agents ACP dans Docker :
- Surcharges :
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
- Notes :
- Cette voie utilise la surface
chat.senddu gateway avec des champs de route d’origine synthétiques réservés aux administrateurs afin que les tests puissent attacher un contexte de canal de messages sans prétendre livrer quoi que ce soit à l’extérieur. - Lorsque
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDn’est pas défini, le test utilise le registre d’agents intégré du Pluginacpxembarqué pour l’agent de harnais ACP sélectionné. - La création MCP de Cron de session liée est effectuée au mieux par défaut, car les harnais ACP externes peuvent annuler les appels MCP après la réussite de la preuve de liaison/image ; définissez
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1pour rendre cette sonde Cron post-liaison stricte.
- Cette voie utilise la surface
Exemple :
OPENCLAW_LIVE_ACP_BIND=1 \
OPENCLAW_LIVE_ACP_BIND_AGENT=claude \
pnpm test:live src/gateway/gateway-acp-bind.live.test.ts
Recette Docker :
pnpm test:docker:live-acp-bind
Recettes Docker pour un seul 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
Notes Docker :
- Le lanceur Docker se trouve dans
scripts/test-live-acp-bind-docker.sh. - Par défaut, il exécute le test de fumée de liaison ACP sur les agents CLI directs agrégés dans l’ordre :
claude,codex, puisgemini. - Utilisez
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=geminiouOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodepour restreindre la matrice. - Il source
~/.profile, prépare le matériel d’authentification CLI correspondant dans le conteneur, puis installe la CLI directe demandée (@anthropic-ai/claude-code,@openai/codex, Factory Droid viahttps://app.factory.ai/cli,@google/gemini-cliouopencode-ai) si elle manque. Le backend ACP lui-même est le packageacpx/runtimeembarqué provenant du Pluginacpxofficiel. - La variante Docker Droid prépare
~/.factorypour les paramètres, transmetFACTORY_API_KEYet exige cette clé API, car l’authentification OAuth/keyring Factory locale n’est pas portable dans le conteneur. Elle utilise l’entrée de registre intégrée ACPXdroid exec --output-format acp. - La variante Docker OpenCode est une voie de régression stricte à agent unique. Elle écrit un modèle par défaut temporaire
OPENCODE_CONFIG_CONTENTdepuisOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(par défautopencode/kimi-k2.6) après avoir sourcé~/.profile, etpnpm test:docker:live-acp-bind:opencodeexige une transcription d’assistant liée au lieu d’accepter l’omission post-liaison générique. - Les appels CLI
acpxdirects ne sont qu’un chemin manuel/de contournement pour comparer le comportement hors du Gateway. Le test de fumée Docker de liaison ACP exerce le backend d’exécutionacpxembarqué d’OpenClaw.
En direct : test de fumée du harnais de serveur d’application Codex
- Objectif : valider le harnais Codex possédé par le Plugin via la méthode
agentnormale du gateway :- charger le Plugin
codexfourni - sélectionner
OPENCLAW_AGENT_RUNTIME=codex - envoyer un premier tour d’agent gateway à
openai/gpt-5.5avec le harnais Codex forcé - envoyer un second tour à la même session OpenClaw et vérifier que le fil du serveur d’application peut reprendre
- exécuter
/codex statuset/codex modelsvia le même chemin de commande gateway - éventuellement exécuter deux sondes shell avec élévation revues par Guardian : une commande bénigne qui devrait être approuvée et un téléversement de faux secret qui devrait être refusé afin que l’agent réponde par une question
- charger le Plugin
- Test :
src/gateway/gateway-codex-harness.live.test.ts - Activation :
OPENCLAW_LIVE_CODEX_HARNESS=1 - Modèle par défaut :
openai/gpt-5.5 - Sonde image facultative :
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Sonde MCP/outil facultative :
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Sonde Guardian facultative :
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Le test de fumée utilise
agentRuntime.id: "codex"afin qu’un harnais Codex défectueux ne puisse pas réussir en retombant silencieusement sur PI. - Authentification : authentification du serveur d’application Codex issue de la connexion d’abonnement Codex locale. Les tests de fumée Docker
peuvent aussi fournir
OPENAI_API_KEYpour les sondes non-Codex le cas échéant, ainsi que, facultativement, les fichiers copiés~/.codex/auth.jsonet~/.codex/config.toml.
Recette locale :
source ~/.profile
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
Recette Docker :
source ~/.profile
pnpm test:docker:live-codex-harness
Notes Docker :
- Le lanceur Docker se trouve dans
scripts/test-live-codex-harness-docker.sh. - Il source le
~/.profilemonté, transmetOPENAI_API_KEY, copie les fichiers d’authentification Codex CLI lorsqu’ils sont présents, installe@openai/codexdans un préfixe npm monté et inscriptible, prépare l’arborescence source, puis exécute uniquement le test en direct du harnais Codex. - Docker active les sondes image, MCP/outil et Guardian par défaut. Définissez
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0ouOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0ouOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0lorsque vous avez besoin d’une exécution de débogage plus restreinte. - Docker utilise la même configuration explicite d’exécution Codex, de sorte que les alias hérités ou la bascule vers PI ne peuvent pas masquer une régression du harnais Codex.
Recettes en direct recommandées
Les listes d’autorisation étroites et explicites sont les plus rapides et les moins instables :
-
Modèle unique, direct (sans gateway) :
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
Modèle unique, test de fumée gateway :
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Appel d’outils sur plusieurs fournisseurs :
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Focus Google (clé API Gemini + Antigravity) :
- Gemini (clé 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 (clé API) :
-
Test de fumée de pensée adaptative Google :
- Si les clés locales se trouvent dans le profil shell :
source ~/.profile - Valeur dynamique par défaut 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 dynamique 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
- Si les clés locales se trouvent dans le profil shell :
Notes :
google/...utilise l’API Gemini (clé API).google-antigravity/...utilise le pont OAuth Antigravity (endpoint d’agent de type Cloud Code Assist).google-gemini-cli/...utilise la CLI Gemini locale sur votre machine (authentification distincte + particularités d’outillage).- API Gemini vs CLI Gemini :
- API : OpenClaw appelle l’API Gemini hébergée de Google via HTTP (clé API / authentification de profil) ; c’est ce que la plupart des utilisateurs entendent par « Gemini ».
- CLI : OpenClaw lance un binaire local
geminivia le shell ; il possède sa propre authentification et peut se comporter différemment (prise en charge du streaming/des outils/décalage de version).
En direct : matrice de modèles (ce que nous couvrons)
Il n’existe pas de « liste de modèles CI » fixe (le direct est optionnel), mais voici les modèles recommandés à couvrir régulièrement sur une machine de développement avec des clés.
Ensemble de test de fumée moderne (appel d’outils + image)
Voici l’exécution des « modèles courants » que nous prévoyons de maintenir fonctionnelle :
- OpenAI (non-Codex) :
openai/gpt-5.5 - OpenAI Codex OAuth :
openai-codex/gpt-5.5 - Anthropic :
anthropic/claude-opus-4-6(ouanthropic/claude-sonnet-4-6) - Google (API Gemini) :
google/gemini-3.1-pro-previewetgoogle/gemini-3-flash-preview(évitez les anciens modèles Gemini 2.x) - Google (Antigravity) :
google-antigravity/claude-opus-4-6-thinkingetgoogle-antigravity/gemini-3-flash - DeepSeek :
deepseek/deepseek-v4-flashetdeepseek/deepseek-v4-pro - Z.AI (GLM) :
zai/glm-5.1 - MiniMax :
minimax/MiniMax-M2.7
Exécuter le test de fumée gateway avec outils + image :
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5,openai-codex/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-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
Référence : appel d’outils (Read + Exec facultatif)
Choisissez au moins un modèle par famille de fournisseurs :
- OpenAI :
openai/gpt-5.5 - Anthropic :
anthropic/claude-opus-4-6(ouanthropic/claude-sonnet-4-6) - Google :
google/gemini-3-flash-preview(ougoogle/gemini-3.1-pro-preview) - DeepSeek :
deepseek/deepseek-v4-flash - Z.AI (GLM) :
zai/glm-5.1 - MiniMax :
minimax/MiniMax-M2.7
Couverture supplémentaire facultative (utile à avoir) :
- xAI :
xai/grok-4.3(ou le plus récent disponible) - Mistral :
mistral/… (choisissez un modèle compatible « outils » que vous avez activé) - Cerebras :
cerebras/… (si vous avez accès) - LM Studio :
lmstudio/… (local ; l’appel d’outils dépend du mode API)
Vision : envoi d’image (pièce jointe → message multimodal)
Incluez au moins un modèle compatible image dans OPENCLAW_LIVE_GATEWAY_MODELS (variantes Claude/Gemini/OpenAI compatibles vision, etc.) pour exercer la sonde image.
Agrégateurs / gateways alternatifs
Si vous avez des clés activées, nous prenons aussi en charge les tests via :
- OpenRouter :
openrouter/...(des centaines de modèles ; utilisezopenclaw models scanpour trouver des candidats compatibles outils+image) - OpenCode :
opencode/...pour Zen etopencode-go/...pour Go (authentification viaOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Autres fournisseurs que vous pouvez inclure dans la matrice directe (si vous avez les identifiants/la configuration) :
- Intégrés :
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,opencode-go,xai,groq,cerebras,mistral,github-copilot - Via
models.providers(endpoints personnalisés) :minimax(cloud/API), plus tout proxy compatible OpenAI/Anthropic (LM Studio, vLLM, LiteLLM, etc.)
Identifiants (ne jamais valider)
Les tests en direct découvrent les identifiants de la même manière que la CLI. Implications pratiques :
-
Si la CLI fonctionne, les tests en direct devraient trouver les mêmes clés.
-
Si un test en direct indique « aucun identifiant », déboguez de la même manière que vous débogueriez
openclaw models list/ la sélection de modèle. -
Profils d’authentification par agent :
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(c’est ce que « clés de profil » signifie dans les tests en direct) -
Configuration :
~/.openclaw/openclaw.json(ouOPENCLAW_CONFIG_PATH) -
Répertoire d’état hérité :
~/.openclaw/credentials/(copié dans le répertoire personnel de test en direct préparé lorsqu’il est présent, mais pas dans le stockage principal des clés de profil) -
Les exécutions locales en direct copient par défaut la configuration active, les fichiers
auth-profiles.jsonpar agent, le répertoire héritécredentials/et les répertoires d’authentification CLI externes pris en charge dans un répertoire personnel de test temporaire ; les répertoires personnels en direct préparés ignorentworkspace/etsandboxes/, et les remplacements de cheminsagents.*.workspace/agentDirsont supprimés afin que les sondes restent hors de votre véritable espace de travail hôte.
Si vous voulez vous appuyer sur des clés d’environnement (par exemple exportées dans votre ~/.profile), lancez les tests locaux après source ~/.profile, ou utilisez les runners Docker ci-dessous (ils peuvent monter ~/.profile dans le conteneur).
Deepgram en direct (transcription audio)
- Test :
extensions/deepgram/audio.live.test.ts - Activation :
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Plan de codage BytePlus en direct
- Test :
extensions/byteplus/live.test.ts - Activation :
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Remplacement optionnel du modèle :
BYTEPLUS_CODING_MODEL=ark-code-latest
Média de workflow ComfyUI en direct
- Test :
extensions/comfy/comfy.live.test.ts - Activation :
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Portée :
- Exerce les chemins groupés comfy d’image, de vidéo et
music_generate - Ignore chaque capacité sauf si
plugins.entries.comfy.config.<capability>est configuré - Utile après avoir modifié la soumission de workflows comfy, l’interrogation, les téléchargements ou l’enregistrement de plugins
- Exerce les chemins groupés comfy d’image, de vidéo et
Génération d’images en direct
- Test :
test/image-generation.runtime.live.test.ts - Commande :
pnpm test:live test/image-generation.runtime.live.test.ts - Harnais :
pnpm test:live:media image - Portée :
- Énumère chaque plugin fournisseur de génération d’images enregistré
- Charge les variables d’environnement fournisseur manquantes depuis votre shell de connexion (
~/.profile) avant les sondes - Utilise par défaut les clés API en direct/d’environnement avant les profils d’authentification stockés, afin que les clés de test obsolètes dans
auth-profiles.jsonne masquent pas les véritables identifiants du shell - Ignore les fournisseurs sans authentification/profil/modèle utilisable
- Exécute chaque fournisseur configuré via le runtime partagé de génération d’images :
<provider>:generate<provider>:editlorsque le fournisseur déclare la prise en charge de l’édition
- Fournisseurs groupés actuellement couverts :
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Réduction optionnelle :
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"
- Comportement d’authentification optionnel :
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1pour forcer l’authentification via le stockage de profils et ignorer les remplacements uniquement issus de l’environnement
Pour le chemin CLI livré, ajoutez un smoke infer après la réussite du test en direct fournisseur/runtime :
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
Cela couvre l’analyse des arguments CLI, la résolution de la configuration/de l’agent par défaut, l’activation des plugins groupés, le runtime partagé de génération d’images et la requête fournisseur en direct. Les dépendances des plugins doivent être présentes avant le chargement du runtime.
Génération de musique en direct
- Test :
extensions/music-generation-providers.live.test.ts - Activation :
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Harnais :
pnpm test:live:media music - Portée :
- Exerce le chemin fournisseur groupé partagé de génération de musique
- Couvre actuellement Google et MiniMax
- Charge les variables d’environnement fournisseur depuis votre shell de connexion (
~/.profile) avant les sondes - Utilise par défaut les clés API en direct/d’environnement avant les profils d’authentification stockés, afin que les clés de test obsolètes dans
auth-profiles.jsonne masquent pas les véritables identifiants du shell - Ignore les fournisseurs sans authentification/profil/modèle utilisable
- Exécute les deux modes de runtime déclarés lorsqu’ils sont disponibles :
generateavec une entrée contenant uniquement une inviteeditlorsque le fournisseur déclarecapabilities.edit.enabled
- Couverture actuelle de la voie partagée :
google:generate,editminimax:generatecomfy: fichier Comfy en direct séparé, pas ce balayage partagé
- Réduction optionnelle :
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Comportement d’authentification optionnel :
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1pour forcer l’authentification via le stockage de profils et ignorer les remplacements uniquement issus de l’environnement
Génération de vidéos en direct
- Test :
extensions/video-generation-providers.live.test.ts - Activation :
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Harnais :
pnpm test:live:media video - Portée :
- Exerce le chemin fournisseur groupé partagé de génération de vidéos
- Utilise par défaut le chemin smoke sûr pour la publication : fournisseurs non-FAL, une requête texte-vers-vidéo par fournisseur, invite d’une seconde avec homard, et limite d’opération par fournisseur depuis
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000par défaut) - Ignore FAL par défaut car la latence de file d’attente côté fournisseur peut dominer le temps de publication ; passez
--video-providers falouOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"pour l’exécuter explicitement - Charge les variables d’environnement fournisseur depuis votre shell de connexion (
~/.profile) avant les sondes - Utilise par défaut les clés API en direct/d’environnement avant les profils d’authentification stockés, afin que les clés de test obsolètes dans
auth-profiles.jsonne masquent pas les véritables identifiants du shell - Ignore les fournisseurs sans authentification/profil/modèle utilisable
- Exécute uniquement
generatepar défaut - Définissez
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1pour exécuter aussi les modes de transformation déclarés lorsqu’ils sont disponibles :imageToVideolorsque le fournisseur déclarecapabilities.imageToVideo.enabledet que le fournisseur/modèle sélectionné accepte l’entrée d’image locale basée sur un tampon dans le balayage partagévideoToVideolorsque le fournisseur déclarecapabilities.videoToVideo.enabledet que le fournisseur/modèle sélectionné accepte l’entrée de vidéo locale basée sur un tampon dans le balayage partagé
- Fournisseurs
imageToVideoactuellement déclarés mais ignorés dans le balayage partagé :vydraparce que leveo3groupé est uniquement texte et que leklinggroupé exige une URL d’image distante
- Couverture Vydra spécifique au fournisseur :
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- ce fichier exécute
veo3texte-vers-vidéo ainsi qu’une voieklingqui utilise par défaut un fixture d’URL d’image distante
- Couverture en direct actuelle de
videoToVideo:runwayuniquement lorsque le modèle sélectionné estrunway/gen4_aleph
- Fournisseurs
videoToVideoactuellement déclarés mais ignorés dans le balayage partagé :alibaba,qwen,xaiparce que ces chemins exigent actuellement des URL de référence distanteshttp(s)/ MP4googleparce que la voie partagée Gemini/Veo actuelle utilise une entrée locale basée sur un tampon et que ce chemin n’est pas accepté dans le balayage partagéopenaiparce que la voie partagée actuelle ne dispose pas de garanties d’accès propres à l’organisation pour l’inpainting/le remix vidéo
- Réduction optionnelle :
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=""pour inclure tous les fournisseurs dans le balayage par défaut, y compris FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000pour réduire la limite de chaque opération fournisseur lors d’un smoke run agressif
- Comportement d’authentification optionnel :
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1pour forcer l’authentification via le stockage de profils et ignorer les remplacements uniquement issus de l’environnement
Harnais média en direct
- Commande :
pnpm test:live:media - Objectif :
- Exécute les suites en direct partagées d’image, de musique et de vidéo via un point d’entrée natif au dépôt
- Charge automatiquement les variables d’environnement fournisseur manquantes depuis
~/.profile - Réduit automatiquement chaque suite aux fournisseurs qui disposent actuellement d’une authentification utilisable par défaut
- Réutilise
scripts/test-live.mjs, afin que le comportement de Heartbeat et du mode silencieux reste cohérent
- Exemples :
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
Associé
- Tests - suites unitaires, d’intégration, QA et Docker