Start here
Foutopsporing
Debughulpmiddelen voor streaminguitvoer, vooral wanneer een provider redenering mengt in normale tekst.
Runtime-debugoverschrijvingen
Gebruik /debug in chat om alleen-runtime configuratieoverschrijvingen in te stellen (geheugen, niet schijf).
/debug is standaard uitgeschakeld; schakel dit in met commands.debug: true.
Dit is handig wanneer je obscure instellingen moet schakelen zonder openclaw.json te bewerken.
Voorbeelden:
/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug unset messages.responsePrefix
/debug reset
/debug reset wist alle overschrijvingen en keert terug naar de configuratie op schijf.
Sessietrace-uitvoer
Gebruik /trace wanneer je Plugin-eigen trace-/debugregels in één sessie wilt zien
zonder de volledige uitgebreide modus in te schakelen.
Voorbeelden:
/trace
/trace on
/trace off
Gebruik /trace voor Plugin-diagnostiek zoals Active Memory-debugsamenvattingen.
Blijf /verbose gebruiken voor normale uitgebreide status-/tooluitvoer, en blijf
/debug gebruiken voor alleen-runtime configuratieoverschrijvingen.
Plugin-lifecycletrace
Gebruik OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 wanneer Plugin-lifecyclecommando's traag aanvoelen
en je een ingebouwde fase-uitsplitsing nodig hebt voor Plugin-metadata, detectie, registry,
runtime-mirror, configuratiemutatie en vernieuwingswerk. De trace is opt-in en schrijft
naar stderr, zodat JSON-commando-uitvoer parseerbaar blijft.
Voorbeeld:
OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 openclaw plugins install tokenjuice --force
Voorbeelduitvoer:
[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"
Gebruik dit voor onderzoek naar de Plugin-lifecycle voordat je naar een CPU-profiler grijpt.
Als het commando wordt uitgevoerd vanuit een source-checkout, meet dan bij voorkeur de gebouwde
runtime met node dist/entry.js ... na pnpm build; pnpm openclaw ...
meet ook overhead van de source-runner.
CLI-opstart en commandoprofilering
Gebruik de ingecheckte opstartbenchmark wanneer een commando traag aanvoelt:
pnpm test:startup:bench:smoke
pnpm tsx scripts/bench-cli-startup.ts --preset real --case status --runs 3
pnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpu
Voor eenmalige profilering via de normale source-runner stel je
OPENCLAW_RUN_NODE_CPU_PROF_DIR in:
OPENCLAW_RUN_NODE_CPU_PROF_DIR=.artifacts/cli-cpu pnpm openclaw status
De source-runner voegt Node CPU-profielvlaggen toe en schrijft een .cpuprofile voor het
commando. Gebruik dit voordat je tijdelijke instrumentatie toevoegt aan commandocode.
Voor opstartvertragingen die lijken op synchroon bestandssysteem- of module-loaderwerk, voeg je Node's tracevlag voor synchrone I/O toe via de source-runner:
OPENCLAW_TRACE_SYNC_IO=1 pnpm openclaw gateway --force
pnpm gateway:watch schakelt deze vlag standaard in voor het bewaakte Gateway-kindproces.
Stel OPENCLAW_TRACE_SYNC_IO=0 in om Node-trace-uitvoer voor synchrone I/O in watchmodus
te onderdrukken.
Gateway-watchmodus
Voor snelle iteratie voer je de gateway uit onder de file watcher:
pnpm gateway:watch
Standaard start of herstart dit een tmux-sessie met de naam
openclaw-gateway-watch-main (of een profiel-/poortspecifieke variant zoals
openclaw-gateway-watch-dev-19001) en hecht automatisch aan vanuit interactieve terminals.
Niet-interactieve shells, CI en agent-exec-aanroepen blijven losgekoppeld en drukken in plaats daarvan
instructies voor aanhechten af. Hecht handmatig aan wanneer nodig:
tmux attach -t openclaw-gateway-watch-main
Het tmux-paneel voert de ruwe watcher uit:
node scripts/watch-node.mjs gateway --force
Gebruik foregroundmodus wanneer tmux niet gewenst is:
pnpm gateway:watch:raw
# or
OPENCLAW_GATEWAY_WATCH_TMUX=0 pnpm gateway:watch
Schakel automatisch aanhechten uit terwijl tmux-beheer behouden blijft:
OPENCLAW_GATEWAY_WATCH_ATTACH=0 pnpm gateway:watch
Profileer bewaakte Gateway-CPU-tijd bij het debuggen van opstart-/runtimehotspots:
pnpm gateway:watch --benchmark
De watch-wrapper verbruikt --benchmark voordat de Gateway wordt aangeroepen en schrijft
één V8 .cpuprofile per afsluiting van een Gateway-kindproces onder
.artifacts/gateway-watch-profiles/. Stop of herstart de bewaakte gateway om
het huidige profiel weg te schrijven, en open het daarna met Chrome DevTools of Speedscope:
npx speedscope .artifacts/gateway-watch-profiles/*.cpuprofile
Gebruik --benchmark-dir <path> wanneer je profielen ergens anders wilt.
Gebruik --benchmark-no-force wanneer je wilt dat het gebenchmarkte kindproces de
standaard --force-poortopruiming overslaat en snel faalt als de Gateway-poort al in
gebruik is.
Benchmarkmodus onderdrukt standaard sync-I/O-tracespam. Stel
OPENCLAW_TRACE_SYNC_IO=1 in met --benchmark wanneer je expliciet zowel CPU-profielen
als Node-stacktraces voor synchrone I/O wilt. In benchmarkmodus worden die traceblokken
geschreven naar gateway-watch-output.log onder de benchmarkdirectory en
uit het terminalpaneel gefilterd; normale Gateway-logs blijven zichtbaar.
De tmux-wrapper geeft gangbare niet-geheime runtime-selectors zoals
OPENCLAW_PROFILE, OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR,
OPENCLAW_GATEWAY_PORT en OPENCLAW_SKIP_CHANNELS door aan het paneel. Zet
providerreferenties in je normale profiel/configuratie, of gebruik ruwe foregroundmodus
voor eenmalige vluchtige geheimen.
Als de bewaakte Gateway tijdens het opstarten afsluit, voert de watcher
openclaw doctor --fix --non-interactive één keer uit en herstart het Gateway-kindproces.
Gebruik OPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0 wanneer je de oorspronkelijke opstartfout
wilt zonder de alleen-voor-ontwikkeling reparatiestap.
Het beheerde tmux-paneel gebruikt ook standaard gekleurde Gateway-logs voor leesbaarheid;
stel FORCE_COLOR=0 in bij het starten van pnpm gateway:watch om ANSI-uitvoer uit te schakelen.
De watcher herstart bij build-relevante bestanden onder src/, bronbestanden van plugins,
Plugin-package.json en openclaw.plugin.json-metadata, tsconfig.json,
package.json en tsdown.config.ts. Wijzigingen in Plugin-metadata herstarten de
gateway zonder een tsdown-rebuild af te dwingen; bron- en configuratiewijzigingen bouwen nog steeds
eerst dist opnieuw.
Voeg eventuele gateway-CLI-vlaggen toe na gateway:watch en ze worden bij elke
herstart doorgegeven. Het opnieuw uitvoeren van hetzelfde watchcommando spawnt het genoemde tmux-paneel opnieuw, en
de ruwe watcher behoudt nog steeds zijn single-watcher-lock zodat dubbele watcher-ouders
worden vervangen in plaats van zich op te stapelen.
Ontwikkelprofiel + ontwikkelgateway (--dev)
Gebruik het ontwikkelprofiel om state te isoleren en een veilige, wegwerpbare setup op te starten voor
debugging. Er zijn twee --dev-vlaggen:
- Globale
--dev(profiel): isoleert state onder~/.openclaw-deven stelt de gateway-poort standaard in op19001(afgeleide poorten verschuiven mee). gateway --dev: vertelt de Gateway om automatisch een standaardconfiguratie + workspace aan te maken wanneer die ontbreekt (en BOOTSTRAP.md over te slaan).
Aanbevolen flow (ontwikkelprofiel + ontwikkelbootstrap):
pnpm gateway:dev
OPENCLAW_PROFILE=dev openclaw tui
Als je nog geen globale installatie hebt, voer de CLI dan uit via pnpm openclaw ....
Wat dit doet:
-
Profielisolatie (globale
--dev)OPENCLAW_PROFILE=devOPENCLAW_STATE_DIR=~/.openclaw-devOPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.jsonOPENCLAW_GATEWAY_PORT=19001(browser/canvas verschuiven overeenkomstig)
-
Ontwikkelbootstrap (
gateway --dev)- Schrijft een minimale configuratie als die ontbreekt (
gateway.mode=local, bind loopback). - Stelt
agent.workspacein op de ontwikkelworkspace. - Stelt
agent.skipBootstrap=truein (geen BOOTSTRAP.md). - Seedt de workspacebestanden als die ontbreken:
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md. - Standaardidentiteit: C3-PO (protocoldroid).
- Slaat kanaalproviders over in ontwikkelmodus (
OPENCLAW_SKIP_CHANNELS=1).
- Schrijft een minimale configuratie als die ontbreekt (
Resetflow (frisse start):
pnpm gateway:dev:reset
--reset wist configuratie, referenties, sessies en de ontwikkelworkspace (met
trash, niet rm), en maakt daarna de standaard ontwikkelsetup opnieuw aan.
Ruwe streamlogging (OpenClaw)
OpenClaw kan de ruwe assistentstream loggen vóór filtering/formattering. Dit is de beste manier om te zien of redenering binnenkomt als plattetekstdelta's (of als afzonderlijke thinking-blokken).
Schakel dit in via CLI:
pnpm gateway:watch --raw-stream
Optionele padoverschrijving:
pnpm gateway:watch --raw-stream --raw-stream-path ~/.openclaw/logs/raw-stream.jsonl
Equivalente env-vars:
OPENCLAW_RAW_STREAM=1
OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-stream.jsonl
Standaardbestand:
~/.openclaw/logs/raw-stream.jsonl
Ruwe chunklogging (pi-mono)
Om ruwe OpenAI-compat chunks vast te leggen voordat ze in blokken worden geparsed, biedt pi-mono een afzonderlijke logger:
PI_RAW_STREAM=1
Optioneel pad:
PI_RAW_STREAM_PATH=~/.pi-mono/logs/raw-openai-completions.jsonl
Standaardbestand:
~/.pi-mono/logs/raw-openai-completions.jsonl
Opmerking: dit wordt alleen uitgezonden door processen die pi-mono's
openai-completions-provider gebruiken.
Veiligheidsnotities
- Ruwe streamlogs kunnen volledige prompts, tooluitvoer en gebruikersgegevens bevatten.
- Houd logs lokaal en verwijder ze na het debuggen.
- Als je logs deelt, scrub dan eerst geheimen en PII.
Debuggen in VSCode
Source maps zijn vereist om debuggen in VSCode-gebaseerde IDE's mogelijk te maken, omdat veel van de gegenereerde bestanden als onderdeel van het buildproces gehashte namen krijgen. De meegeleverde launch.json-configuraties richten zich op de Gateway-service, maar kunnen snel worden aangepast voor andere doeleinden:
- Gateway opnieuw bouwen en debuggen - Debugt de Gateway-service na het maken van een nieuwe build
- Gateway debuggen - Debugt de Gateway-service van een al bestaande build
Setup
De standaardconfiguratie Gateway opnieuw bouwen en debuggen is volledig uitgerust; deze verwijdert automatisch de map /dist en bouwt het project opnieuw met debugging ingeschakeld:
- Open het paneel Uitvoeren en debuggen vanuit de Activity Bar of druk op
Ctrl+Shift+D - Zorg er in de IDE voor dat Gateway opnieuw bouwen en debuggen is geselecteerd in de configuratie-dropdown en druk daarna op de knop Debuggen starten
Als alternatief - als je het build- en debugproces liever handmatig beheert:
- Open een terminal en schakel source maps in:
- Linux/macOS:
export OUTPUT_SOURCE_MAPS=1 - Windows (PowerShell):
$env:OUTPUT_SOURCE_MAPS="1" - Windows (CMD):
set OUTPUT_SOURCE_MAPS=1
- Linux/macOS:
- Bouw in dezelfde terminal het project opnieuw:
pnpm clean:dist && pnpm build - Selecteer in de IDE de optie Gateway debuggen in de configuratie-dropdown Uitvoeren en debuggen en druk daarna op de knop Debuggen starten
Je kunt nu breakpoints zetten in je TypeScript-bronbestanden (directory src/) en de debugger zal breakpoints correct koppelen aan de gecompileerde JavaScript via source maps. Je kunt variabelen inspecteren, stap voor stap door code gaan en call stacks bekijken zoals verwacht.
Notities
- Bij gebruik van de optie "Gateway opnieuw bouwen en debuggen" wordt telkens wanneer de debugger wordt gestart de map
/distvolledig verwijderd en wordt een volledigepnpm buildmet source maps ingeschakeld uitgevoerd voordat de Gateway start - Bij gebruik van de optie "Gateway debuggen" kunnen debugsessies op elk moment worden gestart en gestopt zonder de map
/distte beïnvloeden, maar je moet een afzonderlijk terminalproces gebruiken om zowel debugging in te schakelen als de buildcyclus te beheren - Wijzig de
launch.json-instellingen voorargsom andere delen van het project te debuggen - Als je de gebouwde OpenClaw CLI voor andere taken moet gebruiken (d.w.z.
dashboard --no-openals je debugsessie een nieuw auth-token spawnt), kun je deze in een andere terminal uitvoeren alsnode ./openclaw.mjsof een shellalias maken zoalsalias openclaw-build="node $(pwd)/openclaw.mjs"