Override di debug in fase di esecuzione
/debug imposta override di configurazione solo in fase di esecuzione (in memoria, non su disco). È disabilitato per impostazione predefinita; abilitalo con commands.debug: true.
/debug reset cancella tutti gli override e ripristina la configurazione su disco.
Output di traccia della sessione
/trace mostra le righe di traccia/debug gestite dal plugin per una singola sessione senza abilitare la modalità completamente dettagliata. Usalo per la diagnostica dei plugin, ad esempio i riepiloghi di debug di Active Memory; usa /verbose per il normale output di stato/degli strumenti.
Traccia del ciclo di vita dei plugin
ImpostaOPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 per ottenere una suddivisione fase per fase delle operazioni relative a metadati dei plugin, rilevamento, registro, mirror di runtime, modifica della configurazione e aggiornamento. Scrive su stderr, così l’output JSON dei comandi rimane analizzabile.
node dist/entry.js ... dopo pnpm build; anche pnpm openclaw ... misura l’overhead dell’esecutore del sorgente.
Profilazione dell’avvio e dei comandi della CLI
Benchmark di avvio inclusi nel repository:OPENCLAW_RUN_NODE_CPU_PROF_DIR:
.cpuprofile per il comando. Usalo prima di aggiungere strumentazione temporanea al codice del comando.
Per blocchi durante l’avvio che sembrano dovuti a operazioni sincrone del file system o del caricatore di moduli, aggiungi il flag di traccia I/O sincrono di Node tramite l’esecutore del sorgente:
pnpm gateway:watch lascia questo flag disabilitato per impostazione predefinita per il processo figlio Gateway monitorato; imposta OPENCLAW_TRACE_SYNC_IO=1 quando vuoi l’output della traccia I/O sincrono anche in modalità di monitoraggio.
Modalità di monitoraggio del Gateway
openclaw-gateway-watch-<profile> (ad esempio openclaw-gateway-watch-main), con un suffisso della porta come openclaw-gateway-watch-dev-19001 aggiunto solo quando OPENCLAW_GATEWAY_PORT differisce dalla porta predefinita 18789. Si collega automaticamente dai terminali interattivi; le shell non interattive, la CI e le chiamate di esecuzione degli agenti rimangono scollegate e mostrano invece le istruzioni per il collegamento:
--force del processo di monitoraggio rimuove il listener corrente, ma non disabilita un servizio supervisionato. In caso contrario, un servizio launchd, systemd o Scheduled Task può riavviarsi e sostituire il Gateway monitorato.
Modalità in primo piano senza tmux:
--benchmark prima di invocare il Gateway e scrive un file V8 .cpuprofile per ogni terminazione del processo figlio Gateway in .artifacts/gateway-watch-profiles/. Arresta o riavvia il Gateway monitorato per completare il profilo corrente, quindi aprilo con Chrome DevTools o Speedscope:
--benchmark-dir <path>: scrive i profili in un’altra posizione.--benchmark-no-force: evita la pulizia predefinita della porta tramite--forcee termina immediatamente con un errore se la porta del Gateway è già in uso.
OPENCLAW_TRACE_SYNC_IO=1 insieme a --benchmark per ottenere sia i profili CPU sia le tracce dello stack dell’I/O sincrono; in modalità benchmark, questi blocchi di traccia vengono scritti in gateway-watch-output.log nella directory del benchmark (e filtrati dal riquadro del terminale), mentre i normali log del Gateway rimangono visibili.
Il wrapper tmux trasferisce nel riquadro i comuni selettori di runtime non segreti, inclusi OPENCLAW_PROFILE, OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR, OPENCLAW_GATEWAY_PORT e OPENCLAW_SKIP_CHANNELS. Inserisci le credenziali del provider nel normale profilo/nella configurazione oppure usa la modalità raw in primo piano per segreti temporanei una tantum.
Se il Gateway monitorato termina durante l’avvio, il processo di monitoraggio esegue una volta openclaw doctor --fix --non-interactive e riavvia il processo figlio Gateway. Imposta OPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0 per visualizzare l’errore di avvio originale senza il passaggio di riparazione riservato allo sviluppo.
Il riquadro tmux gestito usa per impostazione predefinita log colorati del Gateway; imposta FORCE_COLOR=0 all’avvio di pnpm gateway:watch per disabilitare l’output ANSI.
Il processo di monitoraggio si riavvia quando cambiano i file rilevanti per la compilazione in src/, i file sorgente delle estensioni, i metadati package.json e openclaw.plugin.json delle estensioni, tsconfig.json, package.json e tsdown.config.ts. Le modifiche ai metadati delle estensioni riavviano il Gateway senza forzare una ricompilazione; le modifiche al sorgente e alla configurazione continuano invece a ricompilare prima dist.
Aggiungi i flag della CLI del Gateway dopo gateway:watch: verranno trasmessi a ogni riavvio. La riesecuzione dello stesso comando di monitoraggio rigenera il riquadro tmux denominato; il processo di monitoraggio raw mantiene un blocco per una singola istanza, così i processi di monitoraggio principali duplicati vengono sostituiti anziché accumularsi.
Profilo di sviluppo + Gateway di sviluppo (—dev)
Due flag--dev distinti:
--devglobale (profilo): isola lo stato in~/.openclaw-deve imposta per impostazione predefinita la porta del Gateway su19001(le porte derivate cambiano di conseguenza).gateway --dev: indica al Gateway di creare automaticamente una configurazione e uno spazio di lavoro predefiniti quando mancanti (e di saltare il bootstrap).
pnpm openclaw ....
Cosa comporta:
-
Isolamento del profilo (
--devglobale)OPENCLAW_PROFILE=devOPENCLAW_STATE_DIR=~/.openclaw-devOPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.jsonOPENCLAW_GATEWAY_PORT=19001(le porte del browser/canvas cambiano di conseguenza)
-
Bootstrap di sviluppo (
gateway --dev)- Scrive una configurazione minima se mancante (
gateway.mode=local, associazione a local loopback). - Imposta
agents.defaults.workspacesullo spazio di lavoro di sviluppo eagents.defaults.skipBootstrap=true. - Inizializza i file dello spazio di lavoro se mancanti:
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md. - Identità predefinita: C3-PO (droide protocollare).
pnpm gateway:devimposta inoltreOPENCLAW_SKIP_CHANNELS=1per ignorare i provider dei canali.
- Scrive una configurazione minima se mancante (
--dev è un flag di profilo globale e viene intercettato da alcuni esecutori. Se devi specificarlo esplicitamente, usa la forma con variabile d’ambiente:--reset cancella configurazione, credenziali, sessioni e spazio di lavoro di sviluppo (spostandoli nel cestino, senza eliminarli), quindi ricrea la configurazione di sviluppo predefinita.
Registrazione dello stream raw
OpenClaw può registrare lo stream raw dell’assistente prima di qualsiasi filtro/formattazione. È il modo migliore per verificare se il ragionamento arriva come delta di testo normale oppure come blocchi di pensiero separati. Abilitalo tramite la CLI:~/.openclaw/logs/raw-stream.jsonl
Note sulla sicurezza
- I log dello stream raw possono includere prompt completi, output degli strumenti e dati degli utenti.
- Mantieni i log in locale ed eliminali al termine del debug.
- Se condividi i log, rimuovi prima i segreti e i dati personali identificabili.
Debug in VSCode
Le mappe del sorgente sono necessarie perché la compilazione genera nomi di file con hash. Il filelaunch.json incluso è configurato per il servizio Gateway:
- Rebuild and Debug Gateway - elimina
/diste ricompila con il debug abilitato prima di avviare il Gateway. - Debug Gateway - esegue il debug di una compilazione esistente senza modificare
/dist.
Configurazione
- Apri Run and Debug (nella barra delle attività oppure con
Ctrl+Shift+D). - Seleziona Rebuild and Debug Gateway e premi Start Debugging.
- Abilita le mappe del sorgente in un terminale:
- Linux/macOS:
export OUTPUT_SOURCE_MAPS=1 - Windows (PowerShell):
$env:OUTPUT_SOURCE_MAPS="1" - Windows (CMD):
set OUTPUT_SOURCE_MAPS=1
- Linux/macOS:
- Ricompila:
pnpm clean:dist && pnpm build - Seleziona Debug Gateway e premi Start Debugging.
src/; il debugger li associa al codice JavaScript compilato tramite le mappe del sorgente.
Note
- Rebuild and Debug Gateway elimina
/disted esegue una compilazione completa conpnpm builde mappe del sorgente a ogni avvio. - Debug Gateway può essere avviato/arrestato senza influire su
/dist, ma devi gestire il ciclo di compilazione in un terminale separato. - Modifica
argsinlaunch.jsonper eseguire il debug di altri sottocomandi della CLI. - Per usare la CLI compilata per altre attività (ad esempio
dashboard --no-opense la sessione di debug genera un nuovo token di autenticazione), eseguila da un altro terminale:node ./openclaw.mjsoppure usa un alias comealias openclaw-build="node $(pwd)/openclaw.mjs".