Gateway
Risoluzione dei problemi
Questo è il runbook approfondito. Per prima cosa, iniziare da /help/risoluzione-dei-problemi per il flusso di triage rapido.
Sequenza di comandi
Eseguire nell'ordine seguente:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeSegnali di funzionamento corretto:
openclaw gateway statusmostraRuntime: running,Connectivity probe: oke una rigaCapability: ....openclaw doctornon segnala problemi bloccanti di configurazione o del servizio.openclaw channels status --probemostra lo stato in tempo reale del trasporto per ogni account e, dove supportato,worksoaudit ok.
Dopo un aggiornamento
Utilizzare questa procedura quando un aggiornamento è terminato, ma il Gateway non è attivo, i canali sono vuoti oppure le chiamate ai modelli non riescono con errori 401.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartVerificare quanto segue:
Update restartinopenclaw status/openclaw status --all. I passaggi di consegna in sospeso o non riusciti includono il comando successivo da eseguire.plugin load failed: dependency tree corrupted; run openclaw doctor --fixnella sezione Canali: la configurazione del canale esiste ancora, ma la registrazione del Plugin non è riuscita prima che il canale potesse essere caricato.- Errori 401 del provider dopo una nuova autenticazione:
openclaw doctor --fixverifica la presenza di copie obsolete delle credenziali OAuth per singolo agente e le rimuove, affinché tutti gli agenti risolvano il profilo condiviso corrente.
Installazioni disallineate e protezione dalle configurazioni più recenti
Utilizzare questa procedura quando un servizio Gateway si arresta inaspettatamente dopo un aggiornamento oppure i log mostrano che un file binario openclaw è precedente alla versione che ha scritto per ultima openclaw.json.
OpenClaw contrassegna le scritture della configurazione con meta.lastTouchedVersion. I comandi di sola lettura possono esaminare una configurazione scritta da una versione più recente di OpenClaw, ma le operazioni che modificano processi e servizi non possono essere eseguite da un file binario precedente. Azioni bloccate: avvio, arresto, riavvio e disinstallazione del servizio Gateway; reinstallazione forzata del servizio; avvio del Gateway in modalità servizio; pulizia della porta gateway --force.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionCorreggere PATH
Correggere PATH affinché openclaw risolva l'installazione più recente, quindi eseguire nuovamente l'azione.
Reinstallare il servizio Gateway
Reinstallare il servizio Gateway previsto dall'installazione più recente:
openclaw gateway install --forceopenclaw gateway restartRimuovere i wrapper obsoleti
Rimuovere i pacchetti di sistema obsoleti o le vecchie voci dei wrapper che puntano ancora a un file binario openclaw precedente.
Mancata corrispondenza del protocollo dopo un rollback
Utilizzare questa procedura quando i log continuano a mostrare protocol mismatch dopo un downgrade o un rollback. È in esecuzione un Gateway precedente, ma un processo client locale più recente continua a riconnettersi con un intervallo di versioni del protocollo non supportato dal Gateway precedente.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followVerificare quanto segue:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>nei log del Gateway.Established clients:inopenclaw gateway status --deepoppureGateway clientsinopenclaw doctor --deep: client TCP attivi connessi alla porta del Gateway, con PID e righe di comando quando consentito dal sistema operativo.- Un processo client la cui riga di comando punta all'installazione o al wrapper OpenClaw più recente da cui è stato eseguito il rollback.
Correzione:
- Arrestare o riavviare il processo client OpenClaw obsoleto mostrato da
gateway status --deep. - Riavviare le applicazioni o i wrapper che incorporano OpenClaw: dashboard locali, editor, helper del server applicativo o shell
openclaw logs --followdi lunga durata. - Eseguire nuovamente
openclaw gateway status --deepoopenclaw doctor --deepe verificare che il PID del client obsoleto non sia più presente.
Non fare in modo che un Gateway precedente accetti un protocollo più recente e incompatibile. Gli incrementi di versione del protocollo proteggono il contratto di comunicazione; il ripristino dopo un rollback richiede la pulizia dei processi e delle versioni.
Collegamento simbolico di una Skill ignorato perché esce dal percorso
Utilizzare questa procedura quando i log includono:
Percorso della Skill ignorato perché esce dalla relativa radice configurata: ... reason=symlink-escapeOgni radice delle Skill costituisce un limite di contenimento. Un collegamento simbolico in ~/.agents/skills, <workspace>/.agents/skills, <workspace>/skills o ~/.openclaw/skills viene ignorato quando la sua destinazione reale viene risolta al di fuori di tale radice, a meno che la destinazione non sia esplicitamente considerata attendibile.
Esaminare il collegamento:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadSe la destinazione è intenzionale, configurare sia la radice diretta delle Skill sia la destinazione consentita del collegamento simbolico:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Avviare quindi una nuova sessione oppure attendere che il monitoraggio delle Skill esegua l'aggiornamento. Riavviare il Gateway se il processo in esecuzione è precedente alla modifica della configurazione.
Non utilizzare destinazioni generiche come ~, / o un'intera cartella di progetto sincronizzata. Limitare allowSymlinkTargets alla radice reale delle Skill che contiene directory SKILL.md attendibili.
Se l'applicazione di Skill Workshop deve anche scrivere attraverso tali percorsi attendibili delle Skill nell'area di lavoro collegati simbolicamente, abilitare skills.workshop.allowSymlinkTargetWrites. Mantenerlo disabilitato per le radici condivise delle Skill in sola lettura.
Correlati:
Utilizzo aggiuntivo richiesto da Anthropic 429 per il contesto esteso
Utilizzare questa procedura quando i log o gli errori includono: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsVerificare quanto segue:
- Il modello Anthropic selezionato è un modello Claude 4.x da 1M con disponibilità generale (Opus 4.6/4.7/4.8, Sonnet 4.6), oppure la configurazione del modello contiene ancora il valore obsoleto
params.context1m: true. - Le credenziali Anthropic correnti non sono idonee all'utilizzo del contesto esteso.
- Le richieste non riescono solo durante sessioni o esecuzioni del modello prolungate che richiedono il percorso di contesto da 1M.
Opzioni di correzione:
Utilizzare una finestra di contesto standard
Passare a un modello con finestra standard oppure rimuovere il valore obsoleto context1m dalla precedente
configurazione del modello che non supporta il contesto da 1M con disponibilità generale.
Utilizzare credenziali idonee
Utilizzare credenziali Anthropic idonee per le richieste con contesto esteso oppure passare a una chiave API Anthropic.
Configurare modelli di fallback
Configurare modelli di fallback affinché le esecuzioni continuino quando le richieste Anthropic con contesto esteso vengono rifiutate.
Correlati:
Risposte 403 bloccate a monte
Utilizzare questa procedura quando un provider LLM a monte restituisce un errore generico 403, ad esempio Your request was blocked.
Non presupporre che si tratti sempre di un problema di configurazione di OpenClaw. La risposta può provenire da un livello di sicurezza a monte, ad esempio una CDN, un WAF, una regola di gestione dei bot o un proxy inverso posto davanti a un endpoint compatibile con OpenAI.
openclaw statusopenclaw gateway statusopenclaw logs --followVerificare quanto segue:
- Più modelli dello stesso provider non riescono nello stesso modo.
- Viene restituito HTML o testo generico relativo alla sicurezza anziché un normale errore dell'API del provider.
- Sono presenti eventi di sicurezza sul lato del provider relativi allo stesso momento della richiesta.
- Una piccola richiesta di verifica diretta
curlriesce, mentre le normali richieste con la struttura dell'SDK non riescono.
Quando le evidenze indicano un blocco WAF/CDN, correggere prima il filtraggio sul lato del provider. Preferire una regola di autorizzazione o esclusione strettamente limitata al percorso API utilizzato da OpenClaw ed evitare di disabilitare la protezione per l'intero sito.
Correlati:
Il backend locale compatibile con OpenAI supera le verifiche dirette, ma le esecuzioni dell'agente non riescono
Utilizzare questa procedura quando:
curl ... /v1/modelsfunziona.- Le piccole chiamate dirette
/v1/chat/completionsfunzionano. - Le esecuzioni dei modelli OpenClaw non riescono solo durante i normali turni dell'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 --followVerificare quanto segue:
- Le piccole chiamate dirette riescono, ma le esecuzioni di OpenClaw non riescono solo con prompt più grandi.
- Si verificano errori
model_not_foundo 404, anche se una richiesta diretta/v1/chat/completionsfunziona con lo stesso ID di modello senza prefisso. - Il backend segnala errori perché
messages[].contentrichiede una stringa. - Si verificano avvisi intermittenti
incomplete turn detected ... stopReason=stop payloads=0con un backend locale compatibile con OpenAI. - Il backend si arresta in modo anomalo solo con un numero maggiore di token del prompt o con i prompt completi del runtime dell'agente.
Sintomi comuni
model_not_foundcon un server locale in stile MLX/vLLM: verificare chebaseUrlincluda/v1, cheapisia"openai-completions"per i backend/v1/chat/completionse chemodels.providers.<provider>.models[].idsia l'ID locale del provider senza prefisso. Selezionarlo una sola volta con il prefisso del provider, ad esempiomlx/mlx-community/Qwen3-30B-A3B-6bit; mantenere la voce del catalogo comemlx-community/Qwen3-30B-A3B-6bit.messages[...].content: invalid type: sequence, expected a string: il backend rifiuta le parti strutturate del contenuto di Chat Completions. Correzione: impostaremodels.providers.<provider>.models[].compat.requiresStringContent: true.validation.keyso chiavi consentite per i messaggi come["role","content"]: il backend rifiuta i metadati di riproduzione in stile OpenAI nei messaggi di Chat Completions. Correzione: impostaremodels.providers.<provider>.models[].compat.strictMessageKeys: true.incomplete turn detected ... stopReason=stop payloads=0: il backend ha completato la richiesta di Chat Completions, ma non ha restituito alcun testo dell'assistente visibile all'utente per quel turno. OpenClaw riprova una volta i turni vuoti compatibili con OpenAI che possono essere riprodotti in sicurezza; gli errori persistenti indicano generalmente che il backend emette contenuti vuoti o non testuali oppure omette il testo della risposta finale.- Le piccole richieste dirette riescono, ma le esecuzioni degli agenti OpenClaw non riescono a causa di arresti anomali del backend o del modello (ad esempio Gemma in alcune build
inferrs): il trasporto di OpenClaw è probabilmente già corretto; il backend non riesce a gestire la struttura più grande del prompt del runtime dell'agente. - Gli errori diminuiscono dopo la disabilitazione degli strumenti, ma non scompaiono: gli schemi degli strumenti contribuivano al carico, ma il problema residuo riguarda ancora la capacità del modello o del server a monte oppure un bug del backend.
Opzioni di correzione
- Impostare
compat.requiresStringContent: trueper i backend Chat Completions che accettano solo stringhe. - Impostare
compat.strictMessageKeys: trueper i backend Chat Completions rigorosi che accettano soloroleecontentin ciascun messaggio. - Impostare
compat.supportsTools: falseper i modelli o i backend che non riescono a gestire in modo affidabile la superficie degli schemi degli strumenti di OpenClaw. - Ridurre, dove possibile, il carico del prompt: bootstrap più piccolo dell'area di lavoro, cronologia della sessione più breve, modello locale più leggero o backend con un supporto migliore per il contesto esteso.
- Se le piccole richieste dirette continuano a riuscire mentre i turni degli agenti OpenClaw continuano a causare arresti anomali nel backend, considerare il problema una limitazione del server o del modello a monte e inviare una riproduzione al relativo progetto con la struttura del payload accettata.
Correlati:
Nessuna risposta
Se i canali sono attivi ma non arriva alcuna risposta, controllare l'instradamento e i criteri prima di riconnettere qualsiasi elemento.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followVerificare la presenza di:
- Associazione in sospeso per i mittenti dei messaggi diretti.
- Limitazione basata sulle menzioni nei gruppi (
requireMention,mentionPatterns). - Mancate corrispondenze nelle liste consentite di canali/gruppi.
Segnali comuni:
drop guild message (mention required→ messaggio di gruppo ignorato fino a una menzione.pairing request→ il mittente deve essere approvato.blocked/allowlist→ il mittente/canale è stato filtrato dai criteri.
Argomenti correlati:
Connettività dell'interfaccia di controllo della dashboard
Quando la dashboard/interfaccia di controllo non riesce a connettersi, verificare l'URL, la modalità di autenticazione e le condizioni relative al contesto sicuro.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonVerificare la presenza di:
- URL di verifica e URL della dashboard corretti.
- Mancata corrispondenza della modalità di autenticazione/del token tra client e Gateway.
- Utilizzo di HTTP quando è richiesta l'identità del dispositivo.
Se un browser locale non riesce a connettersi a 127.0.0.1:18789 dopo un aggiornamento, ripristinare innanzitutto il servizio Gateway locale e verificare che stia rendendo disponibile la dashboard:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789Se curl restituisce l'HTML di OpenClaw, il Gateway funziona e il problema restante è probabilmente dovuto alla cache del browser, a un vecchio collegamento diretto o allo stato obsoleto di una scheda. Aprire direttamente http://127.0.0.1:18789 e navigare dalla dashboard. Se dopo il riavvio il servizio non rimane in esecuzione, eseguire openclaw gateway start e ricontrollare openclaw gateway status.
Segnali di connessione/autenticazione
device identity required→ contesto non sicuro o autenticazione del dispositivo mancante.origin not allowed→ il valoreOrigindel browser non è presente ingateway.controlUi.allowedOrigins(oppure la connessione proviene da un'origine browser non di loopback priva di una lista consentita esplicita).device nonce required/device nonce mismatch→ il client non sta completando il flusso di autenticazione del dispositivo basato sulla richiesta di verifica (connect.challenge+device.nonce).device signature invalid/device signature expired→ il client ha firmato il payload errato (o con una marca temporale obsoleta) per l'handshake corrente.AUTH_TOKEN_MISMATCHconcanRetryWithDeviceToken=true→ il client può effettuare un solo nuovo tentativo attendibile con il token del dispositivo memorizzato nella cache.- Questo nuovo tentativo con il token memorizzato nella cache riutilizza l'insieme di ambiti memorizzato insieme al token del dispositivo associato. I chiamanti con
deviceTokenesplicito /scopesesplicito mantengono invece l'insieme di ambiti richiesto. AUTH_SCOPE_MISMATCH→ il token del dispositivo è stato riconosciuto, ma i relativi ambiti approvati non coprono questa richiesta di connessione; associare nuovamente o approvare il contratto degli ambiti richiesto anziché ruotare un token Gateway condiviso.- Al di fuori di questo percorso di nuovo tentativo, l'ordine di precedenza per l'autenticazione della connessione è: prima token/password condivisi espliciti, quindi
deviceTokenesplicito, poi il token del dispositivo memorizzato e infine il token di bootstrap. - Nel percorso asincrono dell'interfaccia di controllo Tailscale Serve, i tentativi non riusciti per lo stesso
{scope, ip}vengono serializzati prima che il limitatore registri l'errore. Due nuovi tentativi simultanei non validi dallo stesso client possono quindi produrreretry lateral secondo tentativo anziché due semplici mancate corrispondenze. too many failed authentication attempts (retry later)da un client di loopback con origine browser → gli errori ripetuti dallo stessoOriginnormalizzato vengono temporaneamente bloccati; un'altra origine localhost utilizza un gruppo distinto.unauthorizedripetuto dopo il nuovo tentativo → divergenza tra token condiviso e token del dispositivo; aggiornare la configurazione del token e, se necessario, approvare nuovamente o ruotare il token del dispositivo.gateway connect failed:→ destinazione host/porta/URL errata.
Mappa rapida dei codici di dettaglio dell'autenticazione
Utilizzare error.details.code dalla risposta connect non riuscita per scegliere l'azione successiva:
| Codice di dettaglio | Significato | Azione consigliata |
|---|---|---|
AUTH_TOKEN_MISSING |
Il client non ha inviato un token condiviso obbligatorio. | Incollare/impostare il token nel client e riprovare. Per i percorsi della dashboard: openclaw config get gateway.auth.token, quindi incollare il valore nelle impostazioni dell'interfaccia di controllo. |
AUTH_TOKEN_MISMATCH |
Il token condiviso non corrispondeva al token di autenticazione del Gateway. | Se canRetryWithDeviceToken=true, consentire un solo nuovo tentativo attendibile. I nuovi tentativi con token memorizzato nella cache riutilizzano gli ambiti approvati memorizzati; i chiamanti con deviceToken / scopes espliciti mantengono gli ambiti richiesti. Se l'errore persiste, seguire l'elenco di controllo per il ripristino dalla divergenza dei token. |
AUTH_DEVICE_TOKEN_MISMATCH |
Il token memorizzato nella cache per il singolo dispositivo è obsoleto o revocato. | Ruotare/approvare nuovamente il token del dispositivo tramite la CLI dei dispositivi, quindi riconnettersi. |
AUTH_SCOPE_MISMATCH |
Il token del dispositivo è valido, ma il ruolo/gli ambiti approvati non coprono questa richiesta di connessione. | Associare nuovamente il dispositivo o approvare il contratto degli ambiti richiesto; non considerare il problema come una divergenza del token condiviso. |
PAIRING_REQUIRED |
L'identità del dispositivo deve essere approvata. Controllare error.details.reason per not-paired, scope-upgrade, role-upgrade o metadata-upgrade e utilizzare requestId / remediationHint quando disponibili. |
Approvare la richiesta in sospeso: openclaw devices list, quindi openclaw devices approve <requestId>. Gli aggiornamenti di ambito/ruolo utilizzano lo stesso flusso dopo la verifica dell'accesso richiesto. |
Verifica della migrazione all'autenticazione del dispositivo v2:
openclaw --versionopenclaw doctoropenclaw gateway statusSe i log mostrano errori di nonce/firma, aggiornare il client che si connette e verificarlo:
Attendere connect.challenge
Il client attende il valore connect.challenge emesso dal Gateway.
Firmare il payload
Il client firma il payload vincolato alla richiesta di verifica.
Inviare il nonce del dispositivo
Il client invia connect.params.device.nonce con lo stesso nonce della richiesta di verifica.
Se openclaw devices rotate / revoke / remove viene negato inaspettatamente:
- Le sessioni con token di un dispositivo associato possono gestire soltanto il proprio dispositivo, a meno che il chiamante non disponga anche di
operator.admin. openclaw devices rotate --scope ...può richiedere soltanto ambiti operatore già posseduti dalla sessione del chiamante.
Argomenti correlati:
- Configurazione (modalità di autenticazione del Gateway)
- Interfaccia di controllo
- Dispositivi
- Accesso remoto
- Autenticazione tramite proxy attendibile
Servizio Gateway non in esecuzione
Utilizzare questa sezione quando il servizio è installato, ma il processo non rimane attivo.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # analizza anche i servizi a livello di sistemaVerificare la presenza di:
Runtime: stoppedcon indicazioni sull'uscita.- Mancata corrispondenza della configurazione del servizio (
Config (cli)rispetto aConfig (service)). - Conflitti di porta/listener.
- Installazioni aggiuntive di launchd/systemd/schtasks quando viene utilizzato
--deep. - Indicazioni per la pulizia di
Other gateway-like services detected (best effort).
Segnali comuni
Gateway start blocked: set gateway.mode=localoexisting config is missing gateway.mode→ la modalità Gateway locale non è abilitata oppure il file di configurazione è stato sovrascritto e ha persogateway.mode. Soluzione: impostaregateway.mode="local"nella configurazione oppure rieseguireopenclaw onboard --mode local/openclaw setupper ripristinare la configurazione prevista della modalità locale. Se OpenClaw viene eseguito tramite Podman, il percorso di configurazione predefinito è~/.openclaw/openclaw.json.refusing to bind gateway ... without auth→ associazione non di loopback senza un percorso di autenticazione Gateway valido (token/password oppure proxy attendibile, se configurato).another gateway instance is already listening/EADDRINUSE→ conflitto di porta.Other gateway-like services detected (best effort)→ esistono unità launchd/systemd/schtasks obsolete o parallele. Nella maggior parte delle configurazioni è opportuno mantenere un solo Gateway per macchina; se ne serve più di uno, isolare porte, configurazione, stato e area di lavoro. Consultare /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detectedda doctor → esiste un'unità di sistema systemd mentre manca il servizio a livello utente. Rimuovere o disabilitare il duplicato prima di consentire a doctor di installare un servizio utente, oppure impostareOPENCLAW_SERVICE_REPAIR_POLICY=externalse l'unità di sistema è il supervisore previsto.Gateway service port does not match current gateway config→ il supervisore installato è ancora vincolato al vecchio--port. Eseguireopenclaw doctor --fixoopenclaw gateway install --force, quindi riavviare il servizio Gateway.
Argomenti correlati:
Il Gateway su macOS smette silenziosamente di rispondere e riprende quando si interagisce con la dashboard
Da utilizzare quando i canali (Telegram, WhatsApp, ecc.) su un host macOS smettono di rispondere per periodi che vanno da alcuni minuti ad alcune ore e il Gateway sembra riattivarsi non appena si apre la Control UI, si accede tramite SSH o si interagisce in altro modo con l'host. Di solito non è presente alcun sintomo evidente in openclaw status, perché quando lo si controlla il Gateway è già di nuovo attivo.
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"Cercare:
- Uno o più bundle
*-uncaught_exception.jsonin~/.openclaw/logs/stability/conerror.codeimpostato su un codice di rete transitorio comeENETDOWN,ENETUNREACH,EHOSTUNREACHoECONNREFUSED. - Righe
pmset -g logcomeEntering Sleep state due to 'Maintenance Sleep'oen0 driver is slow (msg: WillChangeState to 0)in corrispondenza dei timestamp degli arresti anomali. Power Nap / Maintenance Sleep porta brevemente il driver Wi-Fi nello stato 0; qualsiasiconnect()in uscita che si verifichi in quell'intervallo può non riuscire conENETDOWN, anche su un host che dispone altrimenti di connettività di rete completa. - Output di
launchctl printche mostrastate = not runningcon piùrunsrecenti e un codice di uscita, soprattutto quando l'intervallo tra l'arresto anomalo e l'avvio successivo è nell'ordine di un'ora anziché di pochi secondi. Dopo una serie di arresti anomali, launchd di macOS applica un meccanismo di protezione dal riavvio non documentato che può smettere di rispettareKeepAlive=truefinché un evento esterno, come un accesso interattivo, una connessione alla dashboard olaunchctl kickstart, non lo riattiva.
Segnali comuni:
- Un bundle di stabilità il cui
error.codeèENETDOWNo un codice correlato, con lo stack di chiamate che punta a NodenetlookupAndConnect/Socket.connect. OpenClaw2026.5.26e versioni successive classificano questi eventi come errori di rete transitori innocui, impedendo che si propaghino al gestore di primo livello delle eccezioni non intercettate; se si utilizza una versione precedente, eseguire prima l'aggiornamento. - Lunghi periodi di inattività che terminano nell'istante in cui ci si connette alla Control UI o si accede all'host tramite SSH: è l'attività visibile all'utente a riattivare il meccanismo di riavvio di launchd, non un'azione della dashboard sul Gateway.
- Il conteggio
runsaumenta nel corso della giornata senza una rigareceived SIG*; shutting downcorrispondente in~/Library/Logs/openclaw/gateway.log: gli arresti regolari registrano un segnale, mentre gli arresti anomali transitori no.
Cosa fare:
-
Aggiornare il Gateway se si utilizza una versione precedente a
2026.5.26. Dopo l'aggiornamento, i futuri erroriENETDOWNvengono registrati come avvisi anziché terminare il processo. -
Ridurre l'attività di sospensione per manutenzione sugli host Mac mini / desktop destinati a funzionare come server sempre attivi:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0Questa operazione riduce significativamente, ma non elimina del tutto, l'instabilità del driver sottostante. Il sistema può comunque eseguire alcune sospensioni per manutenzione per mantenere attivi TCP keepalive e mDNS, indipendentemente da questi flag.
-
Aggiungere un watchdog di operatività affinché un'eventuale futura serie di arresti anomali bloccata da launchd venga rilevata rapidamente:
bash # Esempio di controllo dell'operatività compatibile con launchd, adatto a un Cron o LaunchAgent eseguito ogni 5 minutistate=$(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.gatewayfiLo scopo è riattivare esternamente il meccanismo di riavvio; dopo una serie di arresti anomali su macOS, il solo
KeepAlive=truenon è sufficiente.
Correlati:
Ciclo del supervisore launchd di macOS con LaunchAgent duplicati per Gateway/Node
Da utilizzare quando un'installazione macOS continua a riavviarsi ogni pochi secondi, i controlli di integrità openclaw
oscillano tra disponibile e non disponibile e l'inoltro dei canali si blocca,
anche se il servizio sembra essere in esecuzione.
Questo comportamento è stato osservato nelle installazioni meno recenti in cui sia ai.openclaw.gateway sia
ai.openclaw.node erano LaunchAgent attivi e ciascuno inseriva
OPENCLAW_LAUNCHD_LABEL. In questo stato OpenClaw può rilevare la supervisione di launchd,
tentare di delegare nuovamente il riavvio a launchd e finire in un rapido ciclo di
EADDRINUSE/riavvio anziché mantenere un unico processo Gateway stabile.
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.logCercare:
- Più di un PID del Gateway nel campione di 30 secondi anziché un unico processo stabile.
EADDRINUSE,another gateway instance is already listeningo ripetute righe di riavvio/delega ingateway.log.- Sia
~/Library/LaunchAgents/ai.openclaw.gateway.plistsia~/Library/LaunchAgents/ai.openclaw.node.plistcaricati contemporaneamente su un host che dovrebbe eseguire un solo servizio Gateway gestito.
Cosa fare:
-
Se questo host deve eseguire soltanto il servizio Gateway, rimuovere tramite OpenClaw il servizio Node gestito. Saltare questo passaggio se si utilizza attivamente il servizio Node per le funzionalità dei Node remoti; la disinstallazione interrompe tali funzionalità su questo host:
bash openclaw node uninstall -
Installare un wrapper permanente per il Gateway che elimini i marcatori launchd ereditati prima di avviare OpenClaw. Utilizzare l'opzione
--wrappersupportata; non modificare il file generato in~/.openclaw/service-env/, perché la reinstallazione del servizio, l'aggiornamento e la riparazione tramite Doctor rigenerano tale file: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 installmantiene il percorso del wrapper durante le reinstallazioni forzate, gli aggiornamenti e le riparazioni tramite Doctor. -
Verificare che il Gateway sia stabile e gestisca RPC, anziché limitarsi ad ascoltare:
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 10doneIl campione di PID dovrebbe mostrare un unico processo stabile anziché un insieme variabile di PID e l'inoltro dei canali in entrata dovrebbe riprendere.
-
Dopo l'aggiornamento a una versione in cui il ciclo sottostante dei due LaunchAgent è stato corretto, rimuovere la soluzione alternativa e reinstallare il normale servizio gestito:
bash OPENCLAW_WRAPPER= openclaw gateway install --forcerm ~/.local/bin/openclaw-launchd-workaround
Correlati:
Chiusura del Gateway durante un utilizzo elevato della memoria
Da utilizzare quando il Gateway scompare sotto carico, il supervisore segnala un riavvio dovuto all'esaurimento della memoria oppure i log menzionano critical memory pressure bundle written.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportCercare:
Reason: diagnostic.memory.pressure.criticalnel bundle di stabilità più recente.Memory pressure:concritical/rss_threshold,critical/heap_thresholdocritical/rss_growth.- Valori
V8 heap:prossimi al limite dell'heap. - Voci
Largest session files:comeagents/<agent>/sessions/<session>.jsonlosessions/<session>.jsonl. - Contatori della memoria cgroup di Linux quando il Gateway viene eseguito in un container o in un servizio con memoria limitata.
Segnali comuni:
critical memory pressure bundle writtencompare poco prima del riavvio → OpenClaw ha acquisito un bundle di stabilità precedente all'esaurimento della memoria. Esaminarlo conopenclaw gateway stability --bundle latest.memory pressure: level=critical ... memoryPressureSnapshot=disabledcompare nei log del Gateway → OpenClaw ha rilevato una pressione critica sulla memoria, ma l'acquisizione di stabilità precedente all'esaurimento della memoria è disattivata.Largest session files:indica un percorso molto grande di una trascrizione oscurata → ridurre la cronologia delle sessioni conservata, esaminare la crescita delle sessioni o spostare le vecchie trascrizioni fuori dall'archivio attivo prima del riavvio.- I byte utilizzati in
V8 heap:sono prossimi al limite dell'heap → ridurre il carico di prompt/sessioni, diminuire il lavoro simultaneo oppure aumentare il limite dell'heap di Node solo dopo aver confermato che il carico di lavoro è previsto. Memory pressure: critical/rss_growth→ la memoria è aumentata rapidamente durante un singolo intervallo di campionamento. Controllare nei log più recenti la presenza di un'importazione di grandi dimensioni, un output incontrollato degli strumenti, tentativi ripetuti o un gruppo di attività dell'agente in coda.- Nei log compare una pressione critica sulla memoria, ma non esiste alcun bundle → questo è il comportamento predefinito. Impostare
diagnostics.memoryPressureSnapshot: trueper acquisire il bundle di stabilità precedente all'esaurimento della memoria in occasione di futuri eventi di pressione critica sulla memoria.
Il bundle di stabilità non contiene payload. Include dati operativi relativi alla memoria e percorsi di file relativi oscurati, ma non testo dei messaggi, corpi dei Webhook, credenziali, token, cookie o ID di sessione non elaborati. Allegare l'esportazione della diagnostica alle segnalazioni di bug anziché copiare i log non elaborati.
Correlati:
Il Gateway ha rifiutato una configurazione non valida
Da utilizzare quando l'avvio del Gateway non riesce con Invalid config o i log del ricaricamento a caldo indicano che una modifica non valida è stata ignorata.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorCercare:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- Un file
openclaw.json.rejected.*con timestamp accanto alla configurazione attiva. - Un file
openclaw.json.clobbered.*con timestamp sedoctor --fixha riparato una modifica diretta non valida. - OpenClaw conserva i 32 file
.clobbered.*più recenti per ogni percorso di configurazione ed elimina progressivamente quelli meno recenti.
Che cosa è successo
- La configurazione non ha superato la convalida durante l'avvio, il ricaricamento a caldo o una scrittura gestita da OpenClaw.
- L'avvio del Gateway si interrompe in modo sicuro anziché riscrivere
openclaw.json. - Il ricaricamento a caldo ignora le modifiche esterne non valide e mantiene attiva la configurazione di runtime corrente.
- Le scritture gestite da OpenClaw rifiutano i payload non validi o distruttivi prima del commit e salvano
.rejected.*. openclaw doctor --fixgestisce la riparazione. Può rimuovere i prefissi non JSON o ripristinare l'ultima copia valida nota, conservando il payload rifiutato come.clobbered.*.- Quando vengono eseguite molte riparazioni per un singolo percorso di configurazione, OpenClaw elimina progressivamente i file
.clobbered.*meno recenti, in modo che il payload riparato più recente rimanga disponibile.
Ispezione e riparazione
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 doctorIndicatori comuni
.clobbered.*esiste → doctor ha conservato una modifica esterna non valida durante la riparazione della configurazione attiva..rejected.*esiste → la scrittura di una configurazione gestita da OpenClaw non ha superato i controlli dello schema o di sovrascrittura prima del commit.Config write rejected:→ la scrittura ha tentato di eliminare una struttura obbligatoria, ridurre drasticamente il file o rendere persistente una configurazione non valida.config reload skipped (invalid config):→ una modifica diretta non ha superato la convalida ed è stata ignorata dal Gateway in esecuzione.Invalid config at ...→ l'avvio non è riuscito prima dell'attivazione dei servizi del Gateway.missing-meta-vs-last-good,gateway-mode-missing-vs-last-goodosize-drop-vs-last-good:*→ una scrittura gestita da OpenClaw è stata rifiutata perché ha perso campi o dimensioni rispetto all'ultimo backup valido noto.Config last-known-good promotion skipped→ il candidato conteneva segnaposto di segreti oscurati, come***.
Opzioni di correzione
- Eseguire
openclaw doctor --fixper consentire a doctor di riparare la configurazione con prefisso o sovrascritta oppure ripristinare l'ultima configurazione valida nota. - Copiare solo le chiavi desiderate da
.clobbered.*o.rejected.*, quindi applicarle conopenclaw config setoconfig.patch. - Eseguire
openclaw config validateprima del riavvio. - In caso di modifica manuale, mantenere la configurazione JSON5 completa, non soltanto l'oggetto parziale che si desidera modificare.
Contenuti correlati:
Avvisi del probe del Gateway
Utilizzare quando openclaw gateway probe raggiunge una destinazione, ma visualizza comunque un blocco di avviso.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostVerificare:
warnings[].codeeprimaryTargetIdnell'output JSON.- Se l'avviso riguarda il fallback SSH, più gateway, ambiti mancanti o riferimenti di autenticazione non risolti.
Indicatori comuni:
SSH tunnel failed to start; falling back to direct probes.→ la configurazione SSH non è riuscita, ma il comando ha comunque tentato di usare le destinazioni dirette configurate o di loopback.multiple reachable gateway identities detected→ hanno risposto gateway distinti oppure OpenClaw non ha potuto dimostrare che le destinazioni raggiungibili fossero lo stesso gateway. Un tunnel SSH, un URL proxy o un URL remoto configurato per lo stesso gateway viene considerato un singolo gateway con più trasporti, anche quando le porte dei trasporti sono diverse.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ la connessione è riuscita, ma l'RPC dei dettagli è limitata dall'ambito; associare l'identità del dispositivo o utilizzare credenziali conoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ la connessione è riuscita, ma il set completo di RPC diagnostiche è scaduto o non è riuscito. Considerarlo un Gateway raggiungibile con diagnostica degradata; confrontareconnect.okeconnect.rpcOknell'output di--json.Capability: pairing-pendingogateway closed (1008): pairing required→ il gateway ha risposto, ma questo client richiede ancora l'associazione o l'approvazione prima del normale accesso da parte dell'operatore.- Testo di avviso SecretRef
gateway.auth.*/gateway.remote.*non risolto → il materiale di autenticazione non era disponibile in questo percorso del comando per la destinazione non riuscita.
Contenuti correlati:
Canale connesso, ma i messaggi non vengono trasmessi
Se lo stato del canale risulta connesso ma il flusso dei messaggi è interrotto, concentrarsi sui criteri, sulle autorizzazioni e sulle regole di recapito specifiche del canale.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsVerificare:
- Criterio per i messaggi diretti (
pairing,allowlist,open,disabled). - Elenco consentito del gruppo e requisiti per le menzioni.
- Autorizzazioni o ambiti API del canale mancanti.
Indicatori comuni:
mention required→ messaggio ignorato dai criteri per le menzioni del gruppo.pairing/ tracce di approvazione in sospeso → il mittente non è approvato.missing_scope,not_in_channel,Forbidden,401/403→ problema di autenticazione o autorizzazioni del canale.
Contenuti correlati:
Recapito di Cron e Heartbeat
Se Cron o Heartbeat non è stato eseguito o non ha effettuato il recapito, verificare prima lo stato dell'utilità di pianificazione, quindi la destinazione di recapito.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followVerificare:
- Cron abilitato e prossima attivazione presente.
- Stato della cronologia delle esecuzioni del processo (
ok,skipped,error). - Motivi per cui Heartbeat è stato ignorato (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file,no-tasks-due).
Indicatori comuni
cron: scheduler disabled; jobs will not run automatically→ Cron disabilitato.cron: timer tick failed→ il ciclo dell'utilità di pianificazione non è riuscito; controllare gli errori di file, log o runtime.heartbeat skippedconreason=quiet-hours→ fuori dalla finestra delle ore di attività.heartbeat skippedconreason=empty-heartbeat-file→HEARTBEAT.mdesiste, ma contiene soltanto una struttura vuota, commenti, intestazioni, delimitatori di blocchi o elenchi di controllo vuoti, quindi OpenClaw ignora la chiamata al modello.heartbeat skippedconreason=no-tasks-due→HEARTBEAT.mdcontiene un bloccotasks:, ma nessuna attività è prevista in questo ciclo.heartbeat: unknown accountId→ ID account non valido per la destinazione di recapito di Heartbeat.heartbeat skippedconreason=dm-blocked→ la destinazione di Heartbeat è stata risolta come una destinazione di tipo messaggio diretto mentreagents.defaults.heartbeat.directPolicy(o la sostituzione specifica dell'agente) è impostato sublock.
Contenuti correlati:
Node associato, strumento non riuscito
Se un Node è associato ma gli strumenti non funzionano, isolare lo stato di primo piano, delle autorizzazioni e dell'approvazione.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusVerificare:
- Node online con le funzionalità previste.
- Autorizzazioni del sistema operativo concesse per fotocamera, microfono, posizione e schermo.
- Stato delle approvazioni di esecuzione e dell'elenco consentito.
Indicatori comuni:
NODE_BACKGROUND_UNAVAILABLE→ l'app del Node deve essere in primo piano.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ autorizzazione del sistema operativo mancante.SYSTEM_RUN_DENIED: approval required→ approvazione dell'esecuzione in sospeso.SYSTEM_RUN_DENIED: allowlist miss→ comando bloccato dall'elenco consentito.
Contenuti correlati:
Strumento browser non riuscito
Utilizzare quando le azioni dello strumento browser non riescono anche se il gateway è integro.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorVerificare:
- Se
plugins.allowè impostato e includebrowser. - Percorso valido dell'eseguibile del browser.
- Raggiungibilità del profilo CDP.
- Disponibilità locale di Chrome per i profili
existing-session/user.
Indicatori del Plugin o dell'eseguibile
unknown command "browser"ounknown command 'browser'→ il Plugin browser incluso è escluso daplugins.allow.- Strumento browser mancante o non disponibile mentre
browser.enabled=true→plugins.allowescludebrowser, quindi il Plugin non è mai stato caricato. Failed to start Chrome CDP on port→ l'avvio del processo del browser non è riuscito.browser.executablePath not found→ il percorso configurato non è valido.browser.cdpUrl must be http(s) or ws(s)→ l'URL CDP configurato utilizza uno schema non supportato, comefile:oftp:.browser.cdpUrl has invalid port→ l'URL CDP configurato ha una porta non valida o fuori intervallo.Playwright is not available in this gateway build; '<feature>' is unsupported.→ l'installazione corrente del gateway non include la dipendenza del runtime browser di base; reinstallare o aggiornare OpenClaw, quindi riavviare il gateway. Le istantanee ARIA e le schermate di base delle pagine possono continuare a funzionare, ma la navigazione, le istantanee AI, le schermate degli elementi tramite selettore CSS e l'esportazione PDF restano non disponibili.
Indicatori di Chrome MCP o della sessione esistente
Could not find DevToolsActivePort for chrome→ la sessione esistente di Chrome MCP non è ancora riuscita a connettersi alla directory dei dati del browser selezionata. Aprire la pagina di ispezione del browser, abilitare il debug remoto, mantenere aperto il browser, approvare la prima richiesta di connessione, quindi riprovare. Se lo stato di accesso non è necessario, preferire il profilo gestitoopenclaw.No browser tabs found for profile="user"→ il profilo di connessione Chrome MCP non ha schede locali di Chrome aperte.Remote CDP for profile "<name>" is not reachable→ l'endpoint CDP remoto configurato non è raggiungibile dall'host del gateway.Browser attachOnly is enabled ... not reachableoBrowser attachOnly is enabled and CDP websocket ... is not reachable→ il profilo di sola connessione non ha destinazioni raggiungibili oppure l'endpoint HTTP ha risposto, ma non è stato comunque possibile aprire il WebSocket CDP.
Indicatori di elementi, schermate o caricamenti
fullPage is not supported for element screenshots→ la richiesta di schermata combinava--full-pagecon--refo--element.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ le chiamate per le schermate di Chrome MCP /existing-sessiondevono utilizzare l'acquisizione della pagina o un--refdell'istantanea, non un--elementCSS.existing-session file uploads do not support element selectors; use ref/inputRef.→ gli hook di caricamento di Chrome MCP richiedono riferimenti alle istantanee, non selettori CSS.existing-session file uploads currently support one file at a time.→ inviare un solo caricamento per chiamata nei profili Chrome MCP.existing-session dialog handling does not support timeoutMs.→ gli hook delle finestre di dialogo nei profili Chrome MCP non supportano sostituzioni del timeout.existing-session type does not support timeoutMs overrides.→ ometteretimeoutMsperact:typenei profili di sessione esistenteprofile="user"/ Chrome MCP oppure utilizzare un profilo browser gestito/CDP quando è necessario un timeout personalizzato.response body is not supported for existing-session profiles yet.→responsebodyrichiede ancora un browser gestito o un profilo CDP non elaborato.- Sostituzioni obsolete di viewport, modalità scura, impostazioni locali o modalità offline nei profili di sola connessione o CDP remoti → eseguire
openclaw browser stop --browser-profile <name>per chiudere la sessione di controllo attiva e rilasciare lo stato di emulazione Playwright/CDP senza riavviare l'intero gateway.
Contenuti correlati:
Se dopo un aggiornamento qualcosa ha improvvisamente smesso di funzionare
La maggior parte dei problemi successivi a un aggiornamento è dovuta a una divergenza della configurazione o all'applicazione di impostazioni predefinite ora più rigorose.
1. Il comportamento di autenticazione e sovrascrittura dell'URL è cambiato
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeElementi da verificare:
- Se
gateway.mode=remote, le chiamate CLI potrebbero essere indirizzate al servizio remoto anche se quello locale funziona correttamente. - Le chiamate esplicite
--urlnon utilizzano come alternativa le credenziali memorizzate.
Indicatori comuni:
gateway connect failed:→ destinazione URL errata.unauthorized→ endpoint raggiungibile, ma autenticazione errata.
2. Le protezioni per il binding e l'autenticazione sono più rigide
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followElementi da verificare:
- I binding non loopback (
lan,tailnet,custom) richiedono un percorso di autenticazione del Gateway valido: autenticazione tramite token/password condivisi oppure una distribuzione non loopbacktrusted-proxyconfigurata correttamente. - Le chiavi precedenti come
gateway.tokennon sostituisconogateway.auth.token.
Indicatori comuni:
refusing to bind gateway ... without auth→ binding non loopback senza un percorso di autenticazione del Gateway valido.Connectivity probe: failedmentre il runtime è in esecuzione → Gateway attivo ma inaccessibile con l'autenticazione o l'URL correnti.
3. Lo stato di associazione e dell'identità del dispositivo è cambiato
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorElementi da verificare:
- Approvazioni dei dispositivi in sospeso per dashboard/nodi.
- Approvazioni di associazione dei messaggi diretti in sospeso dopo modifiche ai criteri o all'identità.
Indicatori comuni:
device identity required→ autenticazione del dispositivo non soddisfatta.pairing required→ il mittente/dispositivo deve essere approvato.
Se la configurazione del servizio e il runtime continuano a non corrispondere dopo le verifiche, reinstallare i metadati del servizio dalla stessa directory di profilo/stato:
openclaw gateway install --forceopenclaw gateway restartArgomenti correlati: