Testing
Pruebas: suites en vivo
Para inicio rápido, ejecutores de QA, conjuntos de pruebas unitarias/de integración y flujos de Docker, consulta Pruebas. Esta página cubre los conjuntos de pruebas en vivo (con acceso a red): matriz de modelos, backends de CLI, ACP y pruebas en vivo de proveedores de medios, además del manejo de credenciales.
En vivo: comandos smoke del perfil local
Carga ~/.profile antes de comprobaciones en vivo ad hoc para que las claves de proveedor y las rutas de herramientas locales coincidan con tu shell:
source ~/.profile
Smoke seguro de medios:
pnpm openclaw infer tts convert --local --json \
--text "OpenClaw live smoke." \
--output /tmp/openclaw-live-smoke.mp3
Smoke seguro de preparación para llamadas de voz:
pnpm openclaw voicecall setup --json
pnpm openclaw voicecall smoke --to "+15555550123"
voicecall smoke es una ejecución de prueba a menos que también esté presente --yes. Usa --yes solo cuando quieras realizar intencionalmente una llamada de notificación real. Para Twilio, Telnyx y Plivo, una comprobación de preparación correcta requiere una URL pública de Webhook; los respaldos de local-only loopback/privados se rechazan por diseño.
En vivo: barrido de capacidades de nodo Android
- Prueba:
src/gateway/android-node.capabilities.live.test.ts - Script:
pnpm android:test:integration - Objetivo: invocar cada comando anunciado actualmente por un nodo Android conectado y verificar el comportamiento del contrato de comandos.
- Alcance:
- Configuración previa/manual (el conjunto de pruebas no instala/ejecuta/empareja la app).
- Validación comando por comando de
node.invokedel Gateway para el nodo Android seleccionado.
- Configuración previa requerida:
- App de Android ya conectada y emparejada con el Gateway.
- App mantenida en primer plano.
- Permisos/consentimiento de captura concedidos para las capacidades que esperas que pasen.
- Reemplazos de destino opcionales:
OPENCLAW_ANDROID_NODE_IDoOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Detalles completos de configuración de Android: App de Android
En vivo: smoke de modelos (claves de perfil)
Las pruebas en vivo se dividen en dos capas para que podamos aislar los fallos:
- "Modelo directo" nos indica si el proveedor/modelo puede responder en absoluto con la clave dada.
- "Smoke de Gateway" nos indica si la canalización completa de Gateway+agente funciona para ese modelo (sesiones, historial, herramientas, política de sandbox, etc.).
Capa 1: finalización directa de modelo (sin Gateway)
- Prueba:
src/agents/models.profiles.live.test.ts - Objetivo:
- Enumerar los modelos descubiertos
- Usar
getApiKeyForModelpara seleccionar los modelos para los que tienes credenciales - Ejecutar una finalización pequeña por modelo (y regresiones dirigidas cuando sea necesario)
- Cómo habilitar:
pnpm test:live(oOPENCLAW_LIVE_TEST=1si invocas Vitest directamente)
- Define
OPENCLAW_LIVE_MODELS=modern(oall, alias de modern) para ejecutar realmente este conjunto; de lo contrario, se omite para mantenerpnpm test:liveenfocado en el smoke de Gateway - Cómo seleccionar modelos:
OPENCLAW_LIVE_MODELS=modernpara ejecutar la lista permitida moderna (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, DeepSeek V4, GLM 4.7, MiniMax M2.7, Grok 4.3)OPENCLAW_LIVE_MODELS=alles un alias de la lista permitida moderna- o
OPENCLAW_LIVE_MODELS="openai/gpt-5.5,openai-codex/gpt-5.5,anthropic/claude-opus-4-6,..."(lista permitida separada por comas) - Los barridos modern/all usan de forma predeterminada un límite curado de alta señal; define
OPENCLAW_LIVE_MAX_MODELS=0para un barrido moderno exhaustivo o un número positivo para un límite menor. - Los barridos exhaustivos usan
OPENCLAW_LIVE_TEST_TIMEOUT_MSpara el timeout completo de la prueba de modelos directos. Valor predeterminado: 60 minutos. - Las sondas de modelos directos se ejecutan con paralelismo de 20 vías de forma predeterminada; define
OPENCLAW_LIVE_MODEL_CONCURRENCYpara reemplazarlo.
- Cómo seleccionar proveedores:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(lista permitida separada por comas)
- De dónde vienen las claves:
- De forma predeterminada: almacén de perfiles y respaldos de env
- Define
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1para exigir solo el almacén de perfiles
- Por qué existe esto:
- Separa "la API del proveedor está rota / la clave no es válida" de "la canalización de agentes de Gateway está rota"
- Contiene regresiones pequeñas y aisladas (ejemplo: reproducción de razonamiento de OpenAI Responses/Codex Responses + flujos de llamadas a herramientas)
Capa 2: smoke de Gateway + agente dev (lo que realmente hace "@openclaw")
- Prueba:
src/gateway/gateway-models.profiles.live.test.ts - Objetivo:
- Levantar un Gateway en proceso
- Crear/parchear una sesión
agent:dev:*(reemplazo de modelo por ejecución) - Iterar modelos con claves y verificar:
- respuesta "significativa" (sin herramientas)
- funciona una invocación real de herramienta (sonda de lectura)
- sondas de herramientas adicionales opcionales (sonda de exec+lectura)
- las rutas de regresión de OpenAI (solo llamada a herramienta → seguimiento) siguen funcionando
- Detalles de las sondas (para que puedas explicar fallos rápidamente):
- Sonda
read: la prueba escribe un archivo nonce en el workspace y le pide al agente que lo lea conready devuelva el nonce. - Sonda
exec+read: la prueba le pide al agente que escriba conexecun nonce en un archivo temporal y luego lo lea conread. - Sonda de imagen: la prueba adjunta un PNG generado (gato + código aleatorio) y espera que el modelo devuelva
cat <CODE>. - Referencia de implementación:
src/gateway/gateway-models.profiles.live.test.tsysrc/gateway/live-image-probe.ts.
- Sonda
- Cómo habilitar:
pnpm test:live(oOPENCLAW_LIVE_TEST=1si invocas Vitest directamente)
- Cómo seleccionar modelos:
- Predeterminado: lista permitida moderna (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=alles un alias de la lista permitida moderna- O define
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(o una lista separada por comas) para acotar - Los barridos de Gateway modern/all usan de forma predeterminada un límite curado de alta señal; define
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0para un barrido moderno exhaustivo o un número positivo para un límite menor.
- Cómo seleccionar proveedores (evita "todo OpenRouter"):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(lista permitida separada por comas)
- Las sondas de herramientas + imagen siempre están activas en esta prueba en vivo:
- Sonda
read+ sondaexec+read(estrés de herramientas) - La sonda de imagen se ejecuta cuando el modelo anuncia compatibilidad con entrada de imagen
- Flujo (alto nivel):
- La prueba genera un PNG diminuto con "CAT" + código aleatorio (
src/gateway/live-image-probe.ts) - Lo envía mediante
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway analiza los adjuntos en
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - El agente embebido reenvía un mensaje de usuario multimodal al modelo
- Aserción: la respuesta contiene
cat+ el código (tolerancia de OCR: se permiten errores menores)
- La prueba genera un PNG diminuto con "CAT" + código aleatorio (
- Sonda
En vivo: smoke de backend de CLI (Claude, Codex, Gemini u otras CLI locales)
- Prueba:
src/gateway/gateway-cli-backend.live.test.ts - Objetivo: validar la canalización de Gateway + agente usando un backend de CLI local, sin tocar tu configuración predeterminada.
- Los valores predeterminados de smoke específicos del backend viven con la definición
cli-backend.tsdel Plugin propietario. - Habilitar:
pnpm test:live(oOPENCLAW_LIVE_TEST=1si invocas Vitest directamente)OPENCLAW_LIVE_CLI_BACKEND=1
- Valores predeterminados:
- Proveedor/modelo predeterminado:
claude-cli/claude-sonnet-4-6 - El comportamiento de comando/args/imagen viene de los metadatos del Plugin de backend de CLI propietario.
- Proveedor/modelo predeterminado:
- Reemplazos (opcionales):
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=1para enviar un adjunto de imagen real (las rutas se inyectan en el prompt). Las recetas de Docker desactivan esto de forma predeterminada a menos que se solicite explícitamente.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"para pasar rutas de archivos de imagen como argumentos de CLI en lugar de inyección en el prompt.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(o"list") para controlar cómo se pasan los argumentos de imagen cuandoIMAGE_ARGestá definido.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1para enviar un segundo turno y validar el flujo de reanudación.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1para optar por la sonda de continuidad Claude Sonnet -> Opus en la misma sesión cuando el modelo seleccionado admite un destino de cambio. Las recetas de Docker desactivan esto de forma predeterminada para mejorar la fiabilidad agregada.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1para optar por la sonda de MCP/herramienta local loopback. Las recetas de Docker desactivan esto de forma predeterminada a menos que se solicite explícitamente.
Ejemplo:
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 económico de configuración MCP de Gemini:
OPENCLAW_LIVE_TEST=1 \
pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts
Esto no le pide a Gemini que genere una respuesta. Escribe la misma configuración de sistema que OpenClaw le da a Gemini y luego ejecuta gemini --debug mcp list para demostrar que un servidor guardado con transport: "streamable-http" se normaliza a la forma MCP HTTP de Gemini y puede conectarse a un servidor MCP streamable-HTTP local.
Receta de Docker:
pnpm test:docker:live-cli-backend
Recetas de Docker de proveedor único:
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
Notas:
- El ejecutor de Docker vive en
scripts/test-live-cli-backend-docker.sh. - Ejecuta el smoke de backend de CLI en vivo dentro de la imagen Docker del repo como el usuario no root
node. - Resuelve los metadatos de smoke de CLI desde la extensión propietaria y luego instala el paquete de CLI de Linux correspondiente (
@anthropic-ai/claude-code,@openai/codexo@google/gemini-cli) en un prefijo escribible en caché enOPENCLAW_DOCKER_CLI_TOOLS_DIR(predeterminado:~/.cache/openclaw/docker-cli-tools). pnpm test:docker:live-cli-backend:claude-subscriptionrequiere OAuth portátil de suscripción de Claude Code mediante~/.claude/.credentials.jsonconclaudeAiOauth.subscriptionTypeoCLAUDE_CODE_OAUTH_TOKENdeclaude setup-token. Primero demuestraclaude -pdirecto en Docker y luego ejecuta dos turnos de backend de CLI de Gateway sin conservar variables env de clave de API de Anthropic. Esta vía de suscripción desactiva de forma predeterminada las sondas de MCP/herramienta e imagen de Claude porque Claude actualmente enruta el uso de apps de terceros mediante facturación de uso adicional en lugar de los límites normales del plan de suscripción.- El smoke de backend de CLI en vivo ahora ejercita el mismo flujo de extremo a extremo para Claude, Codex y Gemini: turno de texto, turno de clasificación de imagen y luego llamada a herramienta
cronde MCP verificada a través de la CLI de Gateway. - El smoke predeterminado de Claude también parchea la sesión de Sonnet a Opus y verifica que la sesión reanudada todavía recuerde una nota anterior.
En vivo: alcanzabilidad del proxy HTTP/2 de APNs
- Prueba:
src/infra/push-apns-http2.live.test.ts - Objetivo: tunelizar a través de un proxy HTTP CONNECT local hasta el endpoint APNs de sandbox de Apple, enviar la solicitud de validación HTTP/2 de APNs y verificar que la respuesta real
403 InvalidProviderTokende Apple vuelve por la ruta del proxy. - Habilitar:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Timeout opcional:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
En vivo: smoke de enlace ACP (/acp spawn ... --bind here)
- Prueba:
src/gateway/gateway-acp-bind.live.test.ts - Objetivo: validar el flujo real de enlace de conversación ACP con un agente ACP en vivo:
- enviar
/acp spawn <agent> --bind here - enlazar en el lugar una conversación sintética de canal de mensajes
- enviar un seguimiento normal en esa misma conversación
- verificar que el seguimiento llegue a la transcripción de la sesión ACP enlazada
- enviar
- Habilitar:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Valores predeterminados:
- Agentes ACP en Docker:
claude,codex,gemini - Agente ACP para
pnpm test:live ...directo:claude - Canal sintético: contexto de conversación con estilo de MD de Slack
- Backend ACP:
acpx
- Agentes ACP en Docker:
- Sobrescrituras:
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
- Notas:
- Este carril usa la superficie
chat.senddel Gateway con campos de ruta de origen sintética solo para administradores, para que las pruebas puedan adjuntar contexto de canal de mensajes sin fingir una entrega externa. - Cuando
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDno está definido, la prueba usa el registro de agentes integrado del Pluginacpxembebido para el agente de arnés ACP seleccionado. - La creación de Cron MCP de sesión enlazada es de mejor esfuerzo de forma predeterminada porque los arneses ACP externos pueden cancelar llamadas MCP después de que la prueba de enlace/imagen haya pasado; establece
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1para hacer estricta esa sonda de Cron posterior al enlace.
- Este carril usa la superficie
Ejemplo:
OPENCLAW_LIVE_ACP_BIND=1 \
OPENCLAW_LIVE_ACP_BIND_AGENT=claude \
pnpm test:live src/gateway/gateway-acp-bind.live.test.ts
Receta de Docker:
pnpm test:docker:live-acp-bind
Recetas de Docker para un solo agente:
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
Notas de Docker:
- El ejecutor de Docker vive en
scripts/test-live-acp-bind-docker.sh. - De forma predeterminada, ejecuta el humo de enlace ACP contra los agentes CLI en vivo agregados en secuencia:
claude,codexy luegogemini. - Usa
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=geminiuOPENCLAW_LIVE_ACP_BIND_AGENTS=opencodepara acotar la matriz. - Carga
~/.profile, prepara el material de autenticación de CLI correspondiente dentro del contenedor y luego instala la CLI en vivo solicitada (@anthropic-ai/claude-code,@openai/codex, Factory Droid mediantehttps://app.factory.ai/cli,@google/gemini-cliuopencode-ai) si falta. El backend ACP en sí es el paqueteacpx/runtimeembebido del Pluginacpxoficial. - La variante de Docker Droid prepara
~/.factorypara configuración, reenvíaFACTORY_API_KEYy requiere esa clave de API porque la autenticación local de OAuth/keyring de Factory no es portable al contenedor. Usa la entrada de registro integrada de ACPXdroid exec --output-format acp. - La variante de Docker OpenCode es un carril de regresión estricto de un solo agente. Escribe un modelo predeterminado temporal en
OPENCODE_CONFIG_CONTENTdesdeOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(predeterminadoopencode/kimi-k2.6) después de cargar~/.profile, ypnpm test:docker:live-acp-bind:opencoderequiere una transcripción de asistente enlazada en lugar de aceptar el salto genérico posterior al enlace. - Las llamadas directas a la CLI
acpxson solo una ruta manual/de solución alternativa para comparar el comportamiento fuera del Gateway. El humo de enlace ACP de Docker ejercita el backend de runtimeacpxembebido de OpenClaw.
En vivo: humo del arnés de servidor de aplicación de Codex
- Objetivo: validar el arnés Codex propiedad del Plugin mediante el método normal
agentdel gateway:- cargar el Plugin
codexincluido - seleccionar
OPENCLAW_AGENT_RUNTIME=codex - enviar un primer turno de agente del gateway a
openai/gpt-5.5con el arnés Codex forzado - enviar un segundo turno a la misma sesión de OpenClaw y verificar que el hilo del servidor de aplicación pueda reanudarse
- ejecutar
/codex statusy/codex modelsmediante la misma ruta de comando del gateway - opcionalmente ejecutar dos sondas de shell escaladas revisadas por Guardian: un comando benigno que debería aprobarse y una carga de secreto falso que debería denegarse para que el agente vuelva a preguntar
- cargar el Plugin
- Prueba:
src/gateway/gateway-codex-harness.live.test.ts - Habilitar:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Modelo predeterminado:
openai/gpt-5.5 - Sonda de imagen opcional:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Sonda MCP/herramienta opcional:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Sonda Guardian opcional:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - El humo usa
agentRuntime.id: "codex"para que un arnés Codex roto no pueda pasar al recurrir silenciosamente a Pi. - Autenticación: autenticación del servidor de aplicación Codex desde el inicio de sesión de suscripción local de Codex. Los humos de Docker
también pueden proporcionar
OPENAI_API_KEYpara sondas que no son de Codex cuando corresponda, más~/.codex/auth.jsony~/.codex/config.tomlcopiados opcionales.
Receta local:
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
Receta de Docker:
source ~/.profile
pnpm test:docker:live-codex-harness
Notas de Docker:
- El ejecutor de Docker vive en
scripts/test-live-codex-harness-docker.sh. - Carga el
~/.profilemontado, pasaOPENAI_API_KEY, copia archivos de autenticación de la CLI de Codex cuando están presentes, instala@openai/codexen un prefijo npm montado con permiso de escritura, prepara el árbol de código fuente y luego ejecuta solo la prueba en vivo del arnés Codex. - Docker habilita las sondas de imagen, MCP/herramienta y Guardian de forma predeterminada. Establece
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0oOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0oOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0cuando necesites una ejecución de depuración más acotada. - Docker usa la misma configuración explícita de runtime Codex, por lo que los alias heredados o la reserva a Pi no pueden ocultar una regresión del arnés Codex.
Recetas en vivo recomendadas
Las listas permitidas acotadas y explícitas son las más rápidas y menos inestables:
-
Modelo único, directo (sin gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.5" pnpm test:live src/agents/models.profiles.live.test.ts
-
Modelo único, humo de gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Llamadas a herramientas en varios proveedores:
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
-
Enfoque en Google (clave de API de Gemini + Antigravity):
- Gemini (clave de 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 (clave de API):
-
Humo de pensamiento adaptativo de Google:
- Si las claves locales viven en el perfil de shell:
source ~/.profile - Valor predeterminado dinámico de 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 - Presupuesto dinámico de 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 las claves locales viven en el perfil de shell:
Notas:
google/...usa la API de Gemini (clave de API).google-antigravity/...usa el puente OAuth de Antigravity (endpoint de agente al estilo Cloud Code Assist).google-gemini-cli/...usa la CLI local de Gemini en tu máquina (autenticación separada + peculiaridades de herramientas).- API de Gemini frente a CLI de Gemini:
- API: OpenClaw llama a la API hospedada de Gemini de Google por HTTP (clave de API / autenticación de perfil); esto es lo que la mayoría de los usuarios entienden por "Gemini".
- CLI: OpenClaw invoca un binario local
gemini; tiene su propia autenticación y puede comportarse de forma diferente (soporte de streaming/herramientas/desfase de versiones).
En vivo: matriz de modelos (lo que cubrimos)
No hay una "lista de modelos de CI" fija (en vivo es opt-in), pero estos son los modelos recomendados para cubrir regularmente en una máquina de desarrollo con claves.
Conjunto de humo moderno (llamadas a herramientas + imagen)
Esta es la ejecución de "modelos comunes" que esperamos mantener funcionando:
- OpenAI (no Codex):
openai/gpt-5.5 - OAuth de OpenAI Codex:
openai-codex/gpt-5.5 - Anthropic:
anthropic/claude-opus-4-6(oanthropic/claude-sonnet-4-6) - Google (API de Gemini):
google/gemini-3.1-pro-previewygoogle/gemini-3-flash-preview(evita modelos Gemini 2.x más antiguos) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingygoogle-antigravity/gemini-3-flash - DeepSeek:
deepseek/deepseek-v4-flashydeepseek/deepseek-v4-pro - Z.AI (GLM):
zai/glm-5.1 - MiniMax:
minimax/MiniMax-M2.7
Ejecuta el humo de gateway con herramientas + imagen:
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
Línea base: llamadas a herramientas (Read + Exec opcional)
Elige al menos uno por familia de proveedores:
- 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 - MiniMax:
minimax/MiniMax-M2.7
Cobertura adicional opcional (conveniente tenerla):
- xAI:
xai/grok-4.3(o el último disponible) - Mistral:
mistral/… (elige un modelo compatible con "herramientas" que tengas habilitado) - Cerebras:
cerebras/… (si tienes acceso) - LM Studio:
lmstudio/… (local; las llamadas a herramientas dependen del modo de API)
Visión: envío de imagen (adjunto → mensaje multimodal)
Incluye al menos un modelo compatible con imágenes en OPENCLAW_LIVE_GATEWAY_MODELS (variantes de Claude/Gemini/OpenAI compatibles con visión, etc.) para ejercitar la sonda de imagen.
Agregadores / gateways alternativos
Si tienes claves habilitadas, también admitimos pruebas mediante:
- OpenRouter:
openrouter/...(cientos de modelos; usaopenclaw models scanpara encontrar candidatos compatibles con herramientas+imagen) - OpenCode:
opencode/...para Zen yopencode-go/...para Go (autenticación medianteOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Más proveedores que puedes incluir en la matriz en vivo (si tienes credenciales/configuración):
- Integrados:
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,opencode-go,xai,groq,cerebras,mistral,github-copilot - Mediante
models.providers(endpoints personalizados):minimax(nube/API), más cualquier proxy compatible con OpenAI/Anthropic (LM Studio, vLLM, LiteLLM, etc.)
Credenciales (nunca confirmar)
Las pruebas en vivo descubren credenciales de la misma forma que la CLI. Implicaciones prácticas:
-
Si la CLI funciona, las pruebas en vivo deberían encontrar las mismas claves.
-
Si una prueba en vivo dice "sin credenciales", depura de la misma forma que depurarías
openclaw models list/ la selección de modelo. -
Per-agent auth profiles:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(esto es lo que significa "claves de perfil" en las pruebas en vivo) -
Configuración:
~/.openclaw/openclaw.json(oOPENCLAW_CONFIG_PATH) -
Directorio de estado heredado:
~/.openclaw/credentials/(se copia en el home en vivo preparado cuando está presente, pero no en el almacén principal de claves de perfil) -
Las ejecuciones locales en vivo copian de forma predeterminada la configuración activa, los archivos
auth-profiles.jsonpor agente,credentials/heredado y los directorios de autenticación de CLI externas compatibles en un home de prueba temporal; los homes en vivo preparados omitenworkspace/ysandboxes/, y las sobrescrituras de rutaagents.*.workspace/agentDirse eliminan para que las sondas no toquen tu workspace real del host.
Si quieres depender de claves de entorno (por ejemplo, exportadas en tu ~/.profile), ejecuta las pruebas locales después de source ~/.profile, o usa los ejecutores de Docker que aparecen abajo (pueden montar ~/.profile en el contenedor).
Deepgram en vivo (transcripción de audio)
- Prueba:
extensions/deepgram/audio.live.test.ts - Activar:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Plan de codificación BytePlus en vivo
- Prueba:
extensions/byteplus/live.test.ts - Activar:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Sobrescritura de modelo opcional:
BYTEPLUS_CODING_MODEL=ark-code-latest
Medios de flujo de trabajo ComfyUI en vivo
- Prueba:
extensions/comfy/comfy.live.test.ts - Activar:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Alcance:
- Ejercita las rutas de imagen, video y
music_generatede comfy incluidas - Omite cada capacidad salvo que
plugins.entries.comfy.config.<capability>esté configurado - Útil después de cambiar el envío de flujos de trabajo comfy, el sondeo, las descargas o el registro de plugins
- Ejercita las rutas de imagen, video y
Generación de imágenes en vivo
- Prueba:
test/image-generation.runtime.live.test.ts - Comando:
pnpm test:live test/image-generation.runtime.live.test.ts - Arnés:
pnpm test:live:media image - Alcance:
- Enumera todos los Plugins de proveedores de generación de imágenes registrados
- Carga las variables de entorno faltantes del proveedor desde tu shell de inicio de sesión (
~/.profile) antes de sondear - Usa de forma predeterminada las claves de API en vivo/de entorno antes que los perfiles de autenticación almacenados, de modo que las claves de prueba obsoletas en
auth-profiles.jsonno oculten credenciales reales del shell - Omite proveedores sin autenticación/perfil/modelo utilizable
- Ejecuta cada proveedor configurado mediante el runtime compartido de generación de imágenes:
<provider>:generate<provider>:editcuando el proveedor declara compatibilidad con edición
- Proveedores incluidos actualmente cubiertos:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Reducción opcional:
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"
- Comportamiento de autenticación opcional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1para forzar la autenticación del almacén de perfiles e ignorar sobrescrituras solo de entorno
Para la ruta de CLI enviada, agrega un smoke infer después de que pase la prueba en vivo del proveedor/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
Esto cubre el análisis de argumentos de CLI, la resolución de configuración/agente predeterminado, la activación del Plugin incluido, el runtime compartido de generación de imágenes y la solicitud al proveedor en vivo. Se espera que las dependencias de Plugins estén presentes antes de la carga del runtime.
Generación de música en vivo
- Prueba:
extensions/music-generation-providers.live.test.ts - Activar:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Arnés:
pnpm test:live:media music - Alcance:
- Ejercita la ruta compartida del proveedor incluido de generación de música
- Actualmente cubre Google y MiniMax
- Carga las variables de entorno del proveedor desde tu shell de inicio de sesión (
~/.profile) antes de sondear - Usa de forma predeterminada las claves de API en vivo/de entorno antes que los perfiles de autenticación almacenados, de modo que las claves de prueba obsoletas en
auth-profiles.jsonno oculten credenciales reales del shell - Omite proveedores sin autenticación/perfil/modelo utilizable
- Ejecuta ambos modos de runtime declarados cuando están disponibles:
generatecon entrada solo de prompteditcuando el proveedor declaracapabilities.edit.enabled
- Cobertura actual de carril compartido:
google:generate,editminimax:generatecomfy: archivo en vivo de Comfy separado, no este barrido compartido
- Reducción opcional:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Comportamiento de autenticación opcional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1para forzar la autenticación del almacén de perfiles e ignorar sobrescrituras solo de entorno
Generación de video en vivo
- Prueba:
extensions/video-generation-providers.live.test.ts - Activar:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Arnés:
pnpm test:live:media video - Alcance:
- Ejercita la ruta compartida del proveedor incluido de generación de video
- Usa de forma predeterminada la ruta smoke segura para releases: proveedores que no son FAL, una solicitud de texto a video por proveedor, prompt de langosta de un segundo y un límite de operación por proveedor desde
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(180000de forma predeterminada) - Omite FAL de forma predeterminada porque la latencia de la cola del lado del proveedor puede dominar el tiempo de release; pasa
--video-providers faloOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"para ejecutarlo explícitamente - Carga las variables de entorno del proveedor desde tu shell de inicio de sesión (
~/.profile) antes de sondear - Usa de forma predeterminada las claves de API en vivo/de entorno antes que los perfiles de autenticación almacenados, de modo que las claves de prueba obsoletas en
auth-profiles.jsonno oculten credenciales reales del shell - Omite proveedores sin autenticación/perfil/modelo utilizable
- Ejecuta solo
generatede forma predeterminada - Establece
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1para ejecutar también los modos de transformación declarados cuando estén disponibles:imageToVideocuando el proveedor declaracapabilities.imageToVideo.enabledy el proveedor/modelo seleccionado acepta entrada de imagen local respaldada por búfer en el barrido compartidovideoToVideocuando el proveedor declaracapabilities.videoToVideo.enabledy el proveedor/modelo seleccionado acepta entrada de video local respaldada por búfer en el barrido compartido
- Proveedores
imageToVideoactualmente declarados pero omitidos en el barrido compartido:vydraporque elveo3incluido es solo texto y elklingincluido requiere una URL de imagen remota
- Cobertura específica de proveedor de Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- ese archivo ejecuta texto a video con
veo3más un carrilklingque usa de forma predeterminada una fixture de URL de imagen remota
- Cobertura en vivo actual de
videoToVideo:runwaysolo cuando el modelo seleccionado esrunway/gen4_aleph
- Proveedores
videoToVideoactualmente declarados pero omitidos en el barrido compartido:alibaba,qwen,xaiporque esas rutas actualmente requieren URL remotas de referenciahttp(s)/ MP4googleporque el carril compartido actual de Gemini/Veo usa entrada local respaldada por búfer y esa ruta no se acepta en el barrido compartidoopenaiporque el carril compartido actual carece de garantías de acceso a inpaint/remix de video específicas de la organización
- Reducción opcional:
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=""para incluir todos los proveedores en el barrido predeterminado, incluido FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000para reducir el límite de cada operación de proveedor para una ejecución smoke agresiva
- Comportamiento de autenticación opcional:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1para forzar la autenticación del almacén de perfiles e ignorar sobrescrituras solo de entorno
Arnés en vivo de medios
- Comando:
pnpm test:live:media - Propósito:
- Ejecuta las suites en vivo compartidas de imagen, música y video mediante un único punto de entrada nativo del repositorio
- Carga automáticamente las variables de entorno faltantes del proveedor desde
~/.profile - Reduce automáticamente cada suite a los proveedores que actualmente tienen autenticación utilizable de forma predeterminada
- Reutiliza
scripts/test-live.mjs, por lo que el comportamiento de Heartbeat y modo silencioso permanece consistente
- Ejemplos:
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
Relacionado
- Pruebas - suites unitarias, de integración, QA y Docker