Start here
Debugging
Strumenti di supporto al debug per l'output in streaming, l'iterazione del Gateway e la profilazione dell'avvio.
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 show/debug set messages.responsePrefix="[openclaw]"/debug unset messages.responsePrefix/debug reset/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.
/trace/trace on/trace offTraccia del ciclo di vita dei plugin
Imposta OPENCLAW_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.
OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 openclaw plugins install tokenjuice --force[plugins:lifecycle] phase="config read" ms=6.83 status=ok command="install"[plugins:lifecycle] phase="slot selection" ms=94.31 status=ok command="install" pluginId="tokenjuice"[plugins:lifecycle] phase="registry refresh" ms=51.56 status=ok command="install" reason="source-changed"Usalo prima di ricorrere a un profiler della CPU. Da un checkout del sorgente, misura il runtime compilato con 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:
pnpm test:startup:bench:smokepnpm tsx scripts/bench-cli-startup.ts --preset real --case status --runs 3pnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpuPer una profilazione una tantum tramite il normale esecutore del sorgente, imposta OPENCLAW_RUN_NODE_CPU_PROF_DIR:
OPENCLAW_RUN_NODE_CPU_PROF_DIR=.artifacts/cli-cpu pnpm openclaw statusL'esecutore del sorgente aggiunge i flag del profilo CPU di Node e scrive un file .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:
OPENCLAW_TRACE_SYNC_IO=1 pnpm openclaw gateway --forcepnpm 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
pnpm gateway:watchPer impostazione predefinita, questo comando avvia o riavvia una sessione tmux denominata 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:
tmux attach -t openclaw-gateway-watch-mainIl riquadro tmux esegue direttamente il processo di monitoraggio:
node scripts/watch-node.mjs gateway --forceArresta un servizio Gateway installato prima di monitorare la stessa porta:
pnpm openclaw gateway stopL'opzione --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:
pnpm gateway:watch:raw# oppureOPENCLAW_GATEWAY_WATCH_TMUX=0 pnpm gateway:watchMantieni la gestione tramite tmux ma disabilita il collegamento automatico:
OPENCLAW_GATEWAY_WATCH_ATTACH=0 pnpm gateway:watchProfila il tempo CPU del Gateway monitorato durante il debug dei punti critici di avvio/runtime:
pnpm gateway:watch --benchmarkIl wrapper di monitoraggio elabora --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:
npx speedscope .artifacts/gateway-watch-profiles/*.cpuprofile--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.
Per impostazione predefinita, la modalità benchmark elimina l'eccesso di messaggi della traccia I/O sincrono. Imposta 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).
Flusso consigliato (profilo di sviluppo + bootstrap di sviluppo):
pnpm gateway:devOPENCLAW_PROFILE=dev openclaw tuiSenza un'installazione globale, esegui la CLI tramite 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 (
Flusso di reimpostazione (nuovo avvio):
pnpm gateway:dev:reset--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:
pnpm gateway:watch --raw-streamOverride facoltativo del percorso:
pnpm gateway:watch --raw-stream --raw-stream-path ~/.openclaw/logs/raw-stream.jsonlVariabili d'ambiente equivalenti:
OPENCLAW_RAW_STREAM=1OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-stream.jsonlFile predefinito: ~/.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 file launch.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.
In alternativa, per gestire manualmente il ciclo di compilazione/debug:
- 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.
Imposta i punti di interruzione nei file TypeScript in 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".