Gateway
Solución de problemas
Este es el manual operativo detallado. Empiece primero por /help/troubleshooting para seguir el flujo de triaje rápido.
Secuencia de comandos
Ejecútelos en este orden:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeIndicadores de funcionamiento correcto:
openclaw gateway statusmuestraRuntime: running,Connectivity probe: oky una líneaCapability: ....openclaw doctorno informa de problemas de configuración o servicio que impidan continuar.openclaw channels status --probemuestra el estado activo del transporte por cuenta y, cuando se admite,worksoaudit ok.
Después de una actualización
Utilice esta sección cuando finalice una actualización, pero el Gateway esté inactivo, los canales estén vacíos o las llamadas a modelos fallen con errores 401.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartCompruebe lo siguiente:
Update restartenopenclaw status/openclaw status --all. Las transferencias pendientes o fallidas incluyen el siguiente comando que debe ejecutarse.plugin load failed: dependency tree corrupted; run openclaw doctor --fixen Canales: la configuración del canal todavía existe, pero el registro del plugin falló antes de que pudiera cargarse el canal.- Errores 401 del proveedor después de volver a autenticarse:
openclaw doctor --fixbusca copias obsoletas de autenticación OAuth por agente y elimina las antiguas para que todos los agentes resuelvan el perfil compartido actual.
Instalaciones divergentes y protección frente a configuraciones más recientes
Utilice esta sección cuando un servicio del Gateway se detenga inesperadamente después de una actualización o cuando los registros indiquen que un binario openclaw es anterior a la versión que escribió por última vez openclaw.json.
OpenClaw marca las escrituras de configuración con meta.lastTouchedVersion. Los comandos de solo lectura pueden inspeccionar una configuración escrita por una versión más reciente de OpenClaw, pero las mutaciones de procesos y servicios se niegan a ejecutarse desde un binario anterior. Acciones bloqueadas: iniciar, detener, reiniciar o desinstalar el servicio del Gateway; forzar la reinstalación del servicio; iniciar el Gateway en modo de servicio; y limpiar el puerto gateway --force.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionCorregir PATH
Corrija PATH para que openclaw resuelva la instalación más reciente y vuelva a ejecutar la acción.
Reinstalar el servicio del Gateway
Reinstale el servicio del Gateway previsto desde la instalación más reciente:
openclaw gateway install --forceopenclaw gateway restartEliminar envoltorios obsoletos
Elimine los paquetes del sistema obsoletos o las entradas de envoltorios antiguos que todavía apunten a un binario openclaw anterior.
Incompatibilidad de protocolo después de una reversión
Utilice esta sección cuando los registros sigan mostrando protocol mismatch después de una degradación o reversión. Se está ejecutando un Gateway anterior, pero un proceso cliente local más reciente sigue intentando reconectarse con un intervalo de protocolo que el Gateway anterior no admite.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followCompruebe lo siguiente:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>en los registros del Gateway.Established clients:enopenclaw gateway status --deepoGateway clientsenopenclaw doctor --deep: clientes TCP activos conectados al puerto del Gateway, con PID y líneas de comandos cuando el sistema operativo lo permita.- Un proceso cliente cuya línea de comandos apunte a la instalación o al envoltorio más reciente de OpenClaw desde el que se realizó la reversión.
Solución:
- Detenga o reinicie el proceso cliente obsoleto de OpenClaw que muestra
gateway status --deep. - Reinicie las aplicaciones o los envoltorios que incorporan OpenClaw: paneles locales, editores, asistentes de servidores de aplicaciones o shells
openclaw logs --followde larga duración. - Vuelva a ejecutar
openclaw gateway status --deepoopenclaw doctor --deepy confirme que el PID del cliente obsoleto ha desaparecido.
No haga que un Gateway anterior acepte un protocolo más reciente e incompatible. Los incrementos de versión del protocolo protegen el contrato de comunicación; la recuperación tras una reversión es un problema de limpieza de procesos y versiones.
Enlace simbólico de una Skill omitido por escapar de la ruta
Utilice esta sección cuando los registros incluyan:
Se omite la ruta de la skill que escapa de su raíz configurada: ... reason=symlink-escapeCada raíz de Skills constituye un límite de contención. Un enlace simbólico en ~/.agents/skills, <workspace>/.agents/skills, <workspace>/skills o ~/.openclaw/skills se omite cuando su destino real se resuelve fuera de esa raíz, salvo que el destino sea explícitamente de confianza.
Inspeccione el enlace:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadSi el destino es intencionado, configure tanto la raíz directa de la Skill como el destino permitido del enlace simbólico:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Después, inicie una sesión nueva o espere a que se actualice el observador de Skills. Reinicie el Gateway si el proceso en ejecución es anterior al cambio de configuración.
No utilice destinos amplios como ~, / o una carpeta completa de proyecto sincronizada. Mantenga allowSymlinkTargets limitado a la raíz real de Skills que contiene directorios SKILL.md de confianza.
Si la aplicación de Skill Workshop también debe escribir a través de esas rutas de Skills del espacio de trabajo enlazadas simbólicamente y de confianza, habilite skills.workshop.allowSymlinkTargetWrites. Manténgalo deshabilitado para las raíces compartidas de Skills de solo lectura.
Relacionado:
Anthropic 429: se requiere uso adicional para contextos largos
Utilice esta sección cuando los registros o errores incluyan: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsCompruebe lo siguiente:
- El modelo de Anthropic seleccionado es un modelo Claude 4.x de 1M con disponibilidad general (Opus 4.6/4.7/4.8, Sonnet 4.6), o la configuración del modelo todavía contiene el valor heredado
params.context1m: true. - La credencial actual de Anthropic no cumple los requisitos para usar contextos largos.
- Las solicitudes solo fallan en sesiones o ejecuciones de modelos largas que requieren la ruta de contexto de 1M.
Opciones de solución:
Usar una ventana de contexto estándar
Cambie a un modelo con una ventana estándar o elimine el valor heredado context1m de una
configuración de modelo anterior que no tenga disponibilidad general para contextos de 1M.
Usar una credencial apta
Utilice una credencial de Anthropic apta para solicitudes de contexto largo o cambie a una clave de API de Anthropic.
Configurar modelos de reserva
Configure modelos de reserva para que las ejecuciones continúen cuando se rechacen las solicitudes de contexto largo de Anthropic.
Relacionado:
Respuestas 403 bloqueadas en el servicio ascendente
Utilice esta sección cuando un proveedor de LLM ascendente devuelva un 403 genérico, como Your request was blocked.
No presuponga que esto siempre se debe a un problema de configuración de OpenClaw. La respuesta puede proceder de una capa de seguridad ascendente, como una CDN, un WAF, una regla de gestión de bots o un proxy inverso situado delante de un endpoint compatible con OpenAI.
openclaw statusopenclaw gateway statusopenclaw logs --followCompruebe lo siguiente:
- Varios modelos del mismo proveedor fallan de la misma manera.
- Aparece HTML o texto genérico de seguridad en lugar de un error normal de la API del proveedor.
- Hay eventos de seguridad del proveedor correspondientes a la misma hora de la solicitud.
- Una pequeña prueba directa con
curlfunciona, mientras que las solicitudes normales con la estructura del SDK fallan.
Corrija primero el filtrado del proveedor cuando las pruebas indiquen un bloqueo del WAF o la CDN. Es preferible utilizar una regla de permiso u omisión limitada específicamente a la ruta de la API que utiliza OpenClaw y evitar deshabilitar la protección de todo el sitio.
Relacionado:
El backend local compatible con OpenAI supera las pruebas directas, pero las ejecuciones del agente fallan
Utilice esta sección cuando:
curl ... /v1/modelsfunciona.- Las llamadas directas pequeñas con
/v1/chat/completionsfuncionan. - Las ejecuciones de modelos de OpenClaw solo fallan durante los turnos normales del agente.
curl http://127.0.0.1:1234/v1/modelscurl http://127.0.0.1:1234/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'openclaw infer model run --model <provider/model> --prompt "hi" --jsonopenclaw logs --followCompruebe lo siguiente:
- Las llamadas directas pequeñas funcionan, pero las ejecuciones de OpenClaw solo fallan con prompts más grandes.
- Aparecen errores
model_not_foundo 404, aunque una solicitud directa con/v1/chat/completionsfunciona con el mismo identificador de modelo sin prefijo. - El backend genera errores que indican que
messages[].contentesperaba una cadena. - Aparecen advertencias intermitentes
incomplete turn detected ... stopReason=stop payloads=0con un backend local compatible con OpenAI. - El backend se bloquea únicamente con cantidades mayores de tokens del prompt o con los prompts completos del entorno de ejecución del agente.
Indicadores habituales
model_not_foundcon un servidor local de estilo MLX/vLLM: compruebe quebaseUrlincluya/v1, queapisea"openai-completions"para backends/v1/chat/completionsy quemodels.providers.<provider>.models[].idsea el identificador local del proveedor sin prefijo. Selecciónelo una vez con el prefijo del proveedor, por ejemplomlx/mlx-community/Qwen3-30B-A3B-6bit; mantenga la entrada del catálogo comomlx-community/Qwen3-30B-A3B-6bit.messages[...].content: invalid type: sequence, expected a string: el backend rechaza las partes de contenido estructurado de Chat Completions. Solución: establezcamodels.providers.<provider>.models[].compat.requiresStringContent: true.validation.keyso claves de mensaje permitidas como["role","content"]: el backend rechaza los metadatos de reproducción de estilo OpenAI en los mensajes de Chat Completions. Solución: establezcamodels.providers.<provider>.models[].compat.strictMessageKeys: true.incomplete turn detected ... stopReason=stop payloads=0: el backend completó la solicitud de Chat Completions, pero no devolvió texto visible para el usuario en la respuesta del asistente durante ese turno. OpenClaw vuelve a intentar una vez los turnos vacíos compatibles con OpenAI cuya reproducción sea segura; los fallos persistentes suelen indicar que el backend emite contenido vacío o no textual, o que suprime el texto de la respuesta final.- Las solicitudes directas pequeñas funcionan, pero las ejecuciones del agente de OpenClaw fallan debido a bloqueos del backend o del modelo (por ejemplo, Gemma en algunas compilaciones de
inferrs): es probable que el transporte de OpenClaw ya sea correcto; el backend falla con la estructura más grande del prompt del entorno de ejecución del agente. - Los fallos disminuyen al deshabilitar las herramientas, pero no desaparecen: los esquemas de herramientas contribuían a la carga, pero el problema restante sigue siendo la capacidad del modelo o servidor ascendente, o un error del backend.
Opciones de solución
- Establezca
compat.requiresStringContent: truepara backends de Chat Completions que solo admitan cadenas. - Establezca
compat.strictMessageKeys: truepara backends estrictos de Chat Completions que solo aceptenroleycontenten cada mensaje. - Establezca
compat.supportsTools: falsepara modelos o backends que no puedan gestionar de manera fiable el conjunto de esquemas de herramientas de OpenClaw. - Reduzca la carga del prompt cuando sea posible: un arranque más pequeño del espacio de trabajo, un historial de sesión más corto, un modelo local más ligero o un backend con mejor compatibilidad con contextos largos.
- Si las solicitudes directas pequeñas siguen funcionando, pero los turnos del agente de OpenClaw continúan bloqueándose dentro del backend, trátelo como una limitación del servidor o modelo ascendente y presente allí una reproducción con la estructura de carga útil aceptada.
Relacionado:
Sin respuestas
Si los canales están activos pero nada responde, compruebe el enrutamiento y la política antes de volver a conectar nada.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followBusque:
- Emparejamiento pendiente para remitentes de mensajes directos.
- Restricción por mención en grupos (
requireMention,mentionPatterns). - Discrepancias en la lista de permitidos del canal/grupo.
Indicadores habituales:
drop guild message (mention required→ el mensaje del grupo se ignora hasta que haya una mención.pairing request→ el remitente necesita aprobación.blocked/allowlist→ la política filtró al remitente/canal.
Relacionado:
Conectividad de la interfaz de control del panel
Cuando el panel o la interfaz de control no se conecten, valide la URL, el modo de autenticación y los supuestos del contexto seguro.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonBusque:
- URL de sondeo y URL del panel correctas.
- Discrepancia del modo de autenticación o del token entre el cliente y el gateway.
- Uso de HTTP cuando se requiere la identidad del dispositivo.
Si un navegador local no puede conectarse a 127.0.0.1:18789 después de una actualización, primero recupere el servicio Gateway local y confirme que está sirviendo el panel:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789Si curl devuelve HTML de OpenClaw, el Gateway funciona y probablemente el problema restante sea la caché del navegador, un enlace profundo antiguo o el estado obsoleto de una pestaña. Abra http://127.0.0.1:18789 directamente y navegue desde el panel. Si el servicio no permanece en ejecución después de reiniciarlo, ejecute openclaw gateway start y vuelva a comprobar openclaw gateway status.
Indicadores de conexión/autenticación
device identity required→ contexto no seguro o falta la autenticación del dispositivo.origin not allowed→ elOrigindel navegador no está engateway.controlUi.allowedOrigins(o la conexión procede de un origen de navegador que no es de bucle invertido sin una lista de permitidos explícita).device nonce required/device nonce mismatch→ el cliente no está completando el flujo de autenticación de dispositivo basado en desafío (connect.challenge+device.nonce).device signature invalid/device signature expired→ el cliente firmó la carga útil incorrecta (o una marca de tiempo obsoleta) para el protocolo de enlace actual.AUTH_TOKEN_MISMATCHconcanRetryWithDeviceToken=true→ el cliente puede realizar un reintento de confianza con el token de dispositivo almacenado en caché.- Ese reintento con el token almacenado en caché reutiliza el conjunto de ámbitos almacenado con el token del dispositivo emparejado. En cambio, los llamadores con
deviceTokenexplícito /scopesexplícito conservan el conjunto de ámbitos solicitado. AUTH_SCOPE_MISMATCH→ se reconoció el token del dispositivo, pero sus ámbitos aprobados no cubren esta solicitud de conexión; vuelva a emparejar o apruebe el contrato de ámbitos solicitado en lugar de rotar un token compartido del gateway.- Fuera de esa ruta de reintento, la precedencia de autenticación para la conexión es: primero el token o la contraseña compartidos explícitos, después
deviceTokenexplícito, luego el token de dispositivo almacenado y, por último, el token de arranque. - En la ruta asíncrona de Tailscale Serve para la interfaz de control, los intentos fallidos correspondientes al mismo
{scope, ip}se serializan antes de que el limitador registre el fallo. Por tanto, dos reintentos simultáneos incorrectos del mismo cliente pueden mostrarretry lateren el segundo intento, en vez de dos discrepancias simples. too many failed authentication attempts (retry later)desde un cliente de bucle invertido con origen de navegador → los fallos repetidos del mismoOriginnormalizado se bloquean temporalmente; otro origen de localhost utiliza un depósito distinto.unauthorizedrepetido después de ese reintento → divergencia entre el token compartido y el token del dispositivo; actualice la configuración del token y vuelva a aprobar o rote el token del dispositivo si es necesario.gateway connect failed:→ destino de host, puerto o URL incorrecto.
Mapa rápido de códigos de detalles de autenticación
Utilice error.details.code de la respuesta fallida de connect para elegir la siguiente acción:
| Código de detalle | Significado | Acción recomendada |
|---|---|---|
AUTH_TOKEN_MISSING |
El cliente no envió un token compartido obligatorio. | Pegue o establezca el token en el cliente y vuelva a intentarlo. Para las rutas del panel: openclaw config get gateway.auth.token y, después, péguelo en la configuración de la interfaz de control. |
AUTH_TOKEN_MISMATCH |
El token compartido no coincidió con el token de autenticación del gateway. | Si canRetryWithDeviceToken=true, permita un reintento de confianza. Los reintentos con tokens en caché reutilizan los ámbitos aprobados almacenados; los llamadores con deviceToken / scopes explícitos conservan los ámbitos solicitados. Si sigue fallando, ejecute la lista de comprobación para recuperar la divergencia de tokens. |
AUTH_DEVICE_TOKEN_MISMATCH |
El token almacenado en caché de cada dispositivo está obsoleto o revocado. | Rote o vuelva a aprobar el token del dispositivo mediante la CLI de dispositivos y vuelva a conectarse. |
AUTH_SCOPE_MISMATCH |
El token del dispositivo es válido, pero su rol o sus ámbitos aprobados no cubren esta solicitud de conexión. | Vuelva a emparejar el dispositivo o apruebe el contrato de ámbitos solicitado; no lo trate como una divergencia del token compartido. |
PAIRING_REQUIRED |
La identidad del dispositivo necesita aprobación. Compruebe error.details.reason para not-paired, scope-upgrade, role-upgrade o metadata-upgrade, y utilice requestId / remediationHint cuando estén presentes. |
Apruebe la solicitud pendiente: openclaw devices list y, después, openclaw devices approve <requestId>. Las actualizaciones de ámbito o rol utilizan el mismo flujo después de revisar el acceso solicitado. |
Comprobación de migración de autenticación de dispositivos v2:
openclaw --versionopenclaw doctoropenclaw gateway statusSi los registros muestran errores de nonce o firma, actualice el cliente que se conecta y verifíquelo:
Esperar a connect.challenge
El cliente espera el connect.challenge emitido por el gateway.
Firmar la carga útil
El cliente firma la carga útil vinculada al desafío.
Enviar el nonce del dispositivo
El cliente envía connect.params.device.nonce con el mismo nonce del desafío.
Si openclaw devices rotate / revoke / remove se deniega de forma inesperada:
- Las sesiones con token de dispositivo emparejado solo pueden gestionar su propio dispositivo, a menos que el llamador también tenga
operator.admin. openclaw devices rotate --scope ...solo puede solicitar ámbitos de operador que la sesión del llamador ya posea.
Relacionado:
- Configuración (modos de autenticación del gateway)
- Interfaz de control
- Dispositivos
- Acceso remoto
- Autenticación mediante proxy de confianza
El servicio Gateway no se está ejecutando
Utilice esta sección cuando el servicio esté instalado, pero el proceso no permanezca activo.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # también analiza los servicios del sistemaBusque:
Runtime: stoppedcon indicaciones de salida.- Discrepancia en la configuración del servicio (
Config (cli)frente aConfig (service)). - Conflictos de puerto o proceso de escucha.
- Instalaciones adicionales de launchd/systemd/schtasks cuando se utiliza
--deep. - Indicaciones de limpieza de
Other gateway-like services detected (best effort).
Indicadores habituales
Gateway start blocked: set gateway.mode=localoexisting config is missing gateway.mode→ el modo de gateway local no está habilitado, o el archivo de configuración se sobrescribió y perdiógateway.mode. Solución: establezcagateway.mode="local"en la configuración o vuelva a ejecutaropenclaw onboard --mode local/openclaw setuppara restaurar la configuración prevista del modo local. Si ejecuta OpenClaw mediante Podman, la ruta de configuración predeterminada es~/.openclaw/openclaw.json.refusing to bind gateway ... without auth→ enlace que no es de bucle invertido sin una ruta válida de autenticación del gateway (token/contraseña o proxy de confianza cuando esté configurado).another gateway instance is already listening/EADDRINUSE→ conflicto de puerto.Other gateway-like services detected (best effort)→ existen unidades launchd/systemd/schtasks obsoletas o paralelas. La mayoría de las configuraciones deberían mantener un gateway por máquina; si necesita más de uno, aísle los puertos, la configuración, el estado y el espacio de trabajo. Consulte /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detectedde doctor → existe una unidad de sistema systemd, mientras que falta el servicio de nivel de usuario. Elimine o deshabilite el duplicado antes de permitir que doctor instale un servicio de usuario, o establezcaOPENCLAW_SERVICE_REPAIR_POLICY=externalsi la unidad del sistema es el supervisor previsto.Gateway service port does not match current gateway config→ el supervisor instalado aún fija el antiguo--port. Ejecuteopenclaw doctor --fixoopenclaw gateway install --forcey, después, reinicie el servicio Gateway.
Relacionado:
El gateway de macOS deja de responder silenciosamente y se reanuda al interactuar con el panel
Se utiliza cuando los canales (Telegram, WhatsApp, etc.) de un host macOS dejan de responder durante periodos de entre minutos y horas, y el Gateway parece volver a funcionar en cuanto se abre la interfaz de control, se accede por SSH o se interactúa de otro modo con el host. Normalmente no hay ningún síntoma evidente en openclaw status porque, para cuando se revisa, el Gateway ya vuelve a estar activo.
ls ~/.openclaw/logs/stability/ | tail -5openclaw gateway stability --bundle latestpmset -g log | grep -iE "sleep|wake|maintenance" | tail -50launchctl print gui/$UID/ai.openclaw.gateway | grep -E "state|last exit|runs"Qué buscar:
- Uno o varios paquetes
*-uncaught_exception.jsonen~/.openclaw/logs/stability/conerror.codeestablecido en un código de red transitorio, comoENETDOWN,ENETUNREACH,EHOSTUNREACHoECONNREFUSED. - Líneas de
pmset -g logcomoEntering Sleep state due to 'Maintenance Sleep'oen0 driver is slow (msg: WillChangeState to 0)que coincidan con las marcas de tiempo de los fallos. Power Nap / Maintenance Sleep pone brevemente el controlador Wi-Fi en el estado 0; cualquierconnect()saliente que se produzca durante ese intervalo puede fallar conENETDOWN, incluso en un host que, por lo demás, dispone de conectividad de red completa. - Salida de
launchctl printque muestrestate = not runningcon variosrunsrecientes y un código de salida, especialmente cuando el intervalo entre el fallo y el siguiente inicio es de aproximadamente una hora en lugar de unos segundos. launchd de macOS aplica un mecanismo no documentado de protección contra reapariciones después de una ráfaga de fallos, que puede dejar de respetarKeepAlive=truehasta que un activador externo, como un inicio de sesión interactivo, una conexión al panel olaunchctl kickstart, vuelva a habilitarlo.
Indicadores habituales:
- Un paquete de estabilidad cuyo
error.codeseaENETDOWNo un código relacionado, con la pila de llamadas apuntando anetde Node,lookupAndConnect/Socket.connect. OpenClaw2026.5.26y las versiones posteriores clasifican estos errores como errores de red transitorios benignos, por lo que ya no se propagan al controlador superior de excepciones no capturadas; si se utiliza una versión anterior, se debe actualizar primero. - Periodos prolongados de inactividad que terminan en cuanto se establece una conexión con la interfaz de control o se accede al host mediante SSH: la actividad visible para el usuario es lo que vuelve a habilitar el mecanismo de reaparición de launchd, no ninguna acción del panel sobre el Gateway.
- El recuento de
runsaumenta a lo largo del día sin una líneareceived SIG*; shutting downcorrespondiente en~/Library/Logs/openclaw/gateway.log: los cierres limpios registran una señal; los fallos transitorios no.
Qué hacer:
-
Actualizar el Gateway si se utiliza una versión anterior a
2026.5.26. Después de la actualización, los futuros erroresENETDOWNse registran como advertencias en lugar de finalizar el proceso. -
Reducir la actividad de suspensión de mantenimiento en hosts Mac mini o de escritorio destinados a funcionar como servidores siempre activos:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0Esto reduce considerablemente, pero no elimina por completo, la inestabilidad subyacente del controlador. El sistema todavía puede realizar algunas suspensiones de mantenimiento para conservar conexiones TCP y mantener mDNS, independientemente de estas opciones.
-
Añadir un supervisor de actividad para detectar rápidamente cualquier futura ráfaga de fallos que launchd deje detenida:
bash # Ejemplo de comprobación de actividad compatible con launchd, adecuada para un cron o LaunchAgent de 5 minutosstate=$(launchctl print gui/$UID/ai.openclaw.gateway 2>/dev/null | awk -F'= ' '/state =/ {print $2; exit}')if [ "$state" != "running" ]; then launchctl kickstart -k gui/$UID/ai.openclaw.gatewayfiEl objetivo es volver a habilitar externamente el mecanismo de reaparición;
KeepAlive=truepor sí solo no es suficiente en macOS después de una ráfaga de fallos.
Relacionado:
Bucle del supervisor launchd de macOS con LaunchAgents duplicados de Gateway/Node
Se utiliza cuando una instalación de macOS se reinicia continuamente cada pocos segundos, las comprobaciones de estado de openclaw
alternan entre disponible y no disponible, y el envío a los canales se bloquea
aunque el servicio parezca estar en ejecución.
Esto se observó en instalaciones antiguas en las que tanto ai.openclaw.gateway como
ai.openclaw.node eran LaunchAgents activos y cada uno inyectaba
OPENCLAW_LAUNCHD_LABEL. En ese estado, OpenClaw puede detectar la
supervisión de launchd, intentar devolver el control del reinicio a launchd y caer en un bucle rápido de
EADDRINUSE/reaparición en lugar de mantener un único proceso de Gateway estable.
for i in 1 2 3 4; do ps aux | grep 'openclaw.*index.js' | grep -v grep | awk '{print $2}' sleep 10done openclaw gateway status --deepopenclaw node statuslaunchctl print gui/$UID/ai.openclaw.gateway | grep -E 'state|last exit|runs'tail -n 80 ~/Library/Logs/openclaw/gateway.logQué buscar:
- Más de un PID del Gateway durante la muestra de 30 segundos, en lugar de un único proceso estable.
EADDRINUSE,another gateway instance is already listeningo líneas repetidas de reinicio/transferencia engateway.log.- Tanto
~/Library/LaunchAgents/ai.openclaw.gateway.plistcomo~/Library/LaunchAgents/ai.openclaw.node.plistcargados al mismo tiempo en un host que solo debería ejecutar un servicio de Gateway administrado.
Qué hacer:
-
Si este host solo debe ejecutar el servicio Gateway, se debe eliminar el servicio Node administrado mediante OpenClaw. Omitir este paso si se depende activamente del servicio Node para funciones de nodos remotos; al desinstalarlo, esas funciones dejan de estar disponibles en este host:
bash openclaw node uninstall -
Instalar un contenedor persistente para el Gateway que borre los indicadores heredados de launchd antes de iniciar OpenClaw. Se debe utilizar la opción
--wrappercompatible; no se debe editar el archivo generado en~/.openclaw/service-env/, ya que la reinstalación del servicio, las actualizaciones y las reparaciones de Doctor vuelven a generar ese archivo:bash mkdir -p ~/.local/bincat >~/.local/bin/openclaw-launchd-workaround <<'EOF'#!/bin/shset -euunset OPENCLAW_LAUNCHD_LABEL LAUNCH_JOB_LABEL LAUNCH_JOB_NAME XPC_SERVICE_NAME || trueexec openclaw "$@"EOFchmod 700 ~/.local/bin/openclaw-launchd-workaround openclaw gateway install \ --wrapper ~/.local/bin/openclaw-launchd-workaround \ --forcegateway installconserva la ruta del contenedor entre reinstalaciones forzadas, actualizaciones y reparaciones de Doctor. -
Verificar que el Gateway sea estable y preste servicio RPC, no que simplemente esté escuchando:
bash openclaw gateway status --deep --require-rpc for i in 1 2 3 4; do ps aux | grep 'openclaw.*index.js' | grep -v grep | awk '{print $2}' sleep 10doneLa muestra de PID debe mostrar un único proceso estable en lugar de un conjunto rotatorio de PID, y el envío entrante a los canales debe reanudarse.
-
Después de actualizar a una versión en la que se haya corregido el bucle subyacente de LaunchAgents duplicados, se debe eliminar la solución provisional y reinstalar el servicio administrado normal:
bash OPENCLAW_WRAPPER= openclaw gateway install --forcerm ~/.local/bin/openclaw-launchd-workaround
Relacionado:
El Gateway se cierra durante un uso elevado de memoria
Se utiliza cuando el Gateway desaparece bajo carga, el supervisor informa de un reinicio similar a uno provocado por falta de memoria o los registros mencionan critical memory pressure bundle written.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportQué buscar:
Reason: diagnostic.memory.pressure.criticalen el paquete de estabilidad más reciente.Memory pressure:concritical/rss_threshold,critical/heap_thresholdocritical/rss_growth.- Valores de
V8 heap:cercanos al límite del montón. - Entradas de
Largest session files:comoagents/<agent>/sessions/<session>.jsonlosessions/<session>.jsonl. - Contadores de memoria de cgroup de Linux cuando el Gateway se ejecuta dentro de un contenedor o un servicio con memoria limitada.
Indicadores habituales:
critical memory pressure bundle writtenaparece poco antes del reinicio → OpenClaw capturó un paquete de estabilidad anterior al agotamiento de memoria. Se puede inspeccionar conopenclaw gateway stability --bundle latest.memory pressure: level=criticalaparece en los registros del Gateway → OpenClaw detectó una presión crítica de memoria y registró los datos disponibles sobre la memoria del proceso.Largest session files:apunta a una ruta de transcripción censurada muy grande → se debe reducir el historial conservado de la sesión, inspeccionar su crecimiento o mover las transcripciones antiguas fuera del almacén activo antes de reiniciar.- Los bytes utilizados de
V8 heap:están cerca del límite del montón → primero se debe reducir la presión de las indicaciones o sesiones, o disminuir el trabajo simultáneo. En un servicio administrado, se debe inspeccionarGateway heap:enopenclaw gateway status; si indicanot set, se deben volver a generar los metadatos antiguos del servicio conopenclaw gateway install --force. La variableNODE_OPTIONSdel entorno del shell se ignora intencionadamente. Solo se debe utilizar una configuración explícita del límite del montón en el supervisor después de confirmar la carga de trabajo sostenida y reservar suficiente margen para la memoria nativa. Memory pressure: critical/rss_growth→ la memoria creció rápidamente dentro de un único intervalo de muestreo. Se deben revisar los registros más recientes para detectar una importación grande, una salida descontrolada de herramientas, reintentos repetidos o un lote de trabajo de agentes en cola.- Aparece una presión crítica de memoria en los registros, pero no existe ningún paquete → se debe capturar
openclaw gateway diagnostics exportdespués del suceso para obtener las pruebas operativas disponibles.
El paquete de estabilidad no contiene cargas útiles. Incluye pruebas operativas sobre la memoria y rutas de archivos relativas censuradas, pero no texto de mensajes, cuerpos de Webhook, credenciales, tokens, cookies ni identificadores de sesión sin procesar. Se debe adjuntar la exportación de diagnósticos a los informes de errores en lugar de copiar los registros sin procesar.
Relacionado:
El Gateway rechazó una configuración no válida
Se utiliza cuando el inicio del Gateway falla con Invalid config o cuando los registros de recarga en caliente indican que se omitió una edición no válida.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorQué buscar:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- Un archivo
openclaw.json.rejected.*con marca de tiempo junto a la configuración activa. - Un archivo
openclaw.json.clobbered.*con marca de tiempo sidoctor --fixreparó una edición directa defectuosa. - OpenClaw conserva los 32 archivos
.clobbered.*más recientes de cada ruta de configuración y rota los más antiguos.
Qué ocurrió
- La configuración no superó la validación durante el inicio, la recarga en caliente o una escritura gestionada por OpenClaw.
- El inicio del Gateway falla de forma segura en lugar de sobrescribir
openclaw.json. - La recarga en caliente omite las ediciones externas no válidas y mantiene activa la configuración actual del entorno de ejecución.
- Las escrituras gestionadas por OpenClaw rechazan las cargas útiles no válidas o destructivas antes de confirmarlas y guardan
.rejected.*. openclaw doctor --fixse encarga de la reparación. Puede eliminar prefijos que no sean JSON o restaurar la última copia válida conocida, al tiempo que conserva la carga útil rechazada como.clobbered.*.- Cuando se realizan muchas reparaciones en una misma ruta de configuración, OpenClaw rota los archivos
.clobbered.*más antiguos para que la carga útil reparada más reciente siga estando disponible.
Inspeccionar y reparar
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | headdiff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"openclaw config validateopenclaw doctorIndicadores comunes
.clobbered.*existe → doctor conservó una edición externa dañada mientras reparaba la configuración activa..rejected.*existe → una escritura de configuración propiedad de OpenClaw no superó las comprobaciones de esquema o sobrescritura antes de confirmarse.Config write rejected:→ la escritura intentó eliminar una estructura obligatoria, reducir drásticamente el archivo o guardar una configuración no válida.config reload skipped (invalid config):→ una edición directa no superó la validación y el Gateway en ejecución la ignoró.Invalid config at ...→ el inicio falló antes de que arrancaran los servicios del Gateway.missing-meta-vs-last-good,gateway-mode-missing-vs-last-goodosize-drop-vs-last-good:*→ se rechazó una escritura propiedad de OpenClaw porque perdió campos o tamaño en comparación con la última copia de seguridad válida conocida.Config last-known-good promotion skipped→ el candidato contenía marcadores de posición de secretos censurados, como***.
Opciones de corrección
- Ejecute
openclaw doctor --fixpara que doctor repare la configuración con prefijo o sobrescrita, o restaure la última válida conocida. - Copie únicamente las claves deseadas de
.clobbered.*o.rejected.*y, a continuación, aplíquelas conopenclaw config setoconfig.patch. - Ejecute
openclaw config validateantes de reiniciar. - Si edita manualmente, conserve la configuración JSON5 completa, no solo el objeto parcial que deseaba cambiar.
Relacionado:
Advertencias de la sonda del Gateway
Úselo cuando openclaw gateway probe llegue a algún destino, pero siga mostrando un bloque de advertencias.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostBusque:
warnings[].codeyprimaryTargetIden la salida JSON.- Si la advertencia trata sobre la alternativa mediante SSH, varios gateways, ámbitos ausentes o referencias de autenticación sin resolver.
Indicadores comunes:
SSH tunnel failed to start; falling back to direct probes.→ la configuración de SSH falló, pero el comando aun así intentó usar los destinos directos configurados o de bucle invertido.multiple reachable gateway identities detected→ respondieron gateways distintos, o OpenClaw no pudo demostrar que los destinos accesibles fueran el mismo gateway. Un túnel SSH, una URL de proxy o una URL remota configurada hacia el mismo gateway se consideran un único gateway con varios transportes, aunque los puertos de transporte sean diferentes.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ la conexión funcionó, pero el RPC de detalles está limitado por el ámbito; empareje la identidad del dispositivo o use credenciales conoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ la conexión funcionó, pero el conjunto completo de RPC de diagnóstico agotó el tiempo de espera o falló. Considérelo un Gateway accesible con diagnósticos degradados; compareconnect.okyconnect.rpcOken la salida de--json.Capability: pairing-pendingogateway closed (1008): pairing required→ el gateway respondió, pero este cliente aún necesita emparejamiento o aprobación antes del acceso normal del operador.- Texto de advertencia de SecretRef sin resolver para
gateway.auth.*/gateway.remote.*→ el material de autenticación no estaba disponible en esta ruta de comandos para el destino fallido.
Relacionado:
Canal conectado, pero los mensajes no circulan
Si el estado del canal es conectado pero el flujo de mensajes está interrumpido, céntrese en la política, los permisos y las reglas de entrega específicas del canal.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsBusque:
- Política de mensajes directos (
pairing,allowlist,open,disabled). - Lista de permitidos de grupos y requisitos de mención.
- Permisos o ámbitos de API del canal ausentes.
Indicadores comunes:
mention required→ la política de menciones del grupo ignoró el mensaje.pairing/ rastros de aprobación pendiente → el remitente no está aprobado.missing_scope,not_in_channel,Forbidden,401/403→ problema de autenticación o permisos del canal.
Relacionado:
Entrega de Cron y Heartbeat
Si Cron o Heartbeat no se ejecutaron o no realizaron la entrega, verifique primero el estado del planificador y después el destino de entrega.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followBusque:
- Cron habilitado y la siguiente activación presente.
- Estado del historial de ejecución del trabajo (
ok,skipped,error). - Motivos por los que se omitió Heartbeat (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file).
Indicadores comunes
cron: scheduler disabled; jobs will not run automatically→ Cron deshabilitado.cron: timer tick failed→ el ciclo del planificador falló; compruebe si hay errores de archivos, registros o tiempo de ejecución.heartbeat skippedconreason=quiet-hours→ fuera del intervalo de horas activas.heartbeat skippedconreason=empty-heartbeat-file→ el borrador del monitor de Heartbeat solo contiene espacios en blanco, comentarios, encabezados, delimitadores de bloque o una estructura de lista de comprobación vacía, por lo que OpenClaw omite la llamada al modelo.heartbeat: unknown accountId→ id. de cuenta no válido para el destino de entrega de Heartbeat.heartbeat skippedconreason=dm-blocked→ el destino de Heartbeat se resolvió como un destino de tipo mensaje directo mientrasagents.defaults.heartbeat.directPolicy(o la anulación por agente) está establecido enblock.
Relacionado:
Node emparejado, pero la herramienta falla
Si un Node está emparejado pero las herramientas fallan, aísle el estado de primer plano, permisos y aprobaciones.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusBusque:
- Node en línea con las capacidades esperadas.
- Concesiones de permisos del sistema operativo para cámara, micrófono, ubicación y pantalla.
- Aprobaciones de ejecución y estado de la lista de permitidos.
Indicadores comunes:
NODE_BACKGROUND_UNAVAILABLE→ la aplicación del Node debe estar en primer plano.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ falta un permiso del sistema operativo.SYSTEM_RUN_DENIED: approval required→ aprobación de ejecución pendiente.SYSTEM_RUN_DENIED: allowlist miss→ comando bloqueado por la lista de permitidos.
Relacionado:
La herramienta de navegador falla
Úselo cuando las acciones de la herramienta de navegador fallen aunque el gateway esté en buen estado.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorBusque:
- Si
plugins.allowestá establecido e incluyebrowser. - Ruta válida al ejecutable del navegador.
- Accesibilidad del perfil CDP.
- Disponibilidad local de Chrome para los perfiles
existing-session/user.
Indicadores del Plugin o ejecutable
unknown command "browser"ounknown command 'browser'→plugins.allowexcluye el Plugin de navegador incluido.- Herramienta de navegador ausente o no disponible mientras
browser.enabled=true→plugins.allowexcluyebrowser, por lo que el Plugin nunca se cargó. Failed to start Chrome CDP on port→ el proceso del navegador no pudo iniciarse.browser.executablePath not found→ la ruta configurada no es válida.browser.cdpUrl must be http(s) or ws(s)→ la URL de CDP configurada utiliza un esquema no compatible, comofile:oftp:.browser.cdpUrl has invalid port→ la URL de CDP configurada tiene un puerto no válido o fuera de rango.Playwright is not available in this gateway build; '<feature>' is unsupported.→ la instalación actual del Gateway carece de la dependencia principal del entorno de ejecución del navegador; reinstale o actualice OpenClaw y, a continuación, reinicie el Gateway. Las instantáneas ARIA y las capturas de pantalla básicas de páginas aún pueden funcionar, pero la navegación, las instantáneas de IA, las capturas de pantalla de elementos mediante selectores CSS y la exportación a PDF permanecen no disponibles.
Indicadores de Chrome MCP o sesiones existentes
Could not find DevToolsActivePort for chrome→ la sesión existente de Chrome MCP aún no pudo conectarse al directorio de datos del navegador seleccionado. Abra la página de inspección del navegador, habilite la depuración remota, mantenga abierto el navegador, apruebe la primera solicitud de conexión y vuelva a intentarlo. Si no se requiere el estado de sesión iniciada, es preferible el perfil administradoopenclaw.No browser tabs found for profile="user"→ el perfil de conexión de Chrome MCP no tiene pestañas locales de Chrome abiertas.Remote CDP for profile "<name>" is not reachable→ el host del Gateway no puede acceder al punto de conexión CDP remoto configurado.Browser attachOnly is enabled ... not reachableoBrowser attachOnly is enabled and CDP websocket ... is not reachable→ el perfil exclusivo para conexiones no tiene ningún destino accesible, o el punto de conexión HTTP respondió pero aun así no se pudo abrir el WebSocket de CDP.
Indicadores de elementos, capturas de pantalla o cargas
fullPage is not supported for element screenshots→ la solicitud de captura de pantalla combinó--full-pagecon--refo--element.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ las llamadas de captura de pantalla de Chrome MCP /existing-sessiondeben usar la captura de página o una--refde instantánea, no un--elementCSS.existing-session file uploads do not support element selectors; use ref/inputRef.→ los enlaces de carga de Chrome MCP necesitan referencias de instantáneas, no selectores CSS.existing-session file uploads currently support one file at a time.→ envíe una carga por llamada en los perfiles de Chrome MCP.existing-session dialog handling does not support timeoutMs.→ los enlaces de diálogo de los perfiles de Chrome MCP no admiten anulaciones del tiempo de espera.existing-session type does not support timeoutMs overrides.→ omitatimeoutMsparaact:typeen los perfilesprofile="user"/ de sesión existente de Chrome MCP, o use un perfil de navegador administrado o CDP cuando se requiera un tiempo de espera personalizado.response body is not supported for existing-session profiles yet.→responsebodyaún requiere un navegador administrado o un perfil CDP sin procesar.- Anulaciones obsoletas de área de visualización, modo oscuro, configuración regional o modo sin conexión en perfiles exclusivos para conexiones o CDP remotos → ejecute
openclaw browser stop --browser-profile <name>para cerrar la sesión de control activa y liberar el estado de emulación de Playwright/CDP sin reiniciar todo el Gateway.
Relacionado:
Si actualizó y algo dejó de funcionar de repente
La mayoría de los fallos posteriores a una actualización se deben a desviaciones en la configuración o a que ahora se aplican valores predeterminados más estrictos.
1. Cambió el comportamiento de las anulaciones de autenticación y URL
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeQué comprobar:
- Si
gateway.mode=remote, las llamadas de la CLI pueden estar apuntando al servicio remoto aunque el servicio local funcione correctamente. - Las llamadas explícitas a
--urlno recurren a las credenciales almacenadas.
Indicadores habituales:
gateway connect failed:→ destino de URL incorrecto.unauthorized→ el endpoint es accesible, pero la autenticación es incorrecta.
2. Las medidas de seguridad de vinculación y autenticación son más estrictas
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followQué comprobar:
- Las vinculaciones que no sean de bucle invertido (
lan,tailnet,custom) necesitan una vía válida de autenticación del Gateway: autenticación mediante token compartido o contraseña, o una implementacióntrusted-proxyque no sea de bucle invertido y esté configurada correctamente. - Las claves antiguas como
gateway.tokenno sustituyen agateway.auth.token.
Indicadores habituales:
refusing to bind gateway ... without auth→ vinculación que no es de bucle invertido sin una vía válida de autenticación del Gateway.Connectivity probe: failedmientras el entorno de ejecución está en funcionamiento → el Gateway está activo, pero no se puede acceder a él con la autenticación o la URL actuales.
3. El estado del emparejamiento y de la identidad del dispositivo ha cambiado
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorQué comprobar:
- Aprobaciones de dispositivos pendientes para el panel de control o los nodos.
- Aprobaciones de emparejamiento por mensaje directo pendientes tras cambios en las políticas o la identidad.
Indicadores habituales:
device identity required→ no se ha satisfecho la autenticación del dispositivo.pairing required→ se debe aprobar el remitente o el dispositivo.
Si la configuración del servicio y el entorno de ejecución siguen sin coincidir después de las comprobaciones, reinstale los metadatos del servicio desde el mismo perfil o directorio de estado:
openclaw gateway install --forceopenclaw gateway restartContenido relacionado: