Start here
ãããã°
ã¹ããªãŒãã³ã°åºåã®ãããã°ãã«ããŒãç¹ã«ããããã€ããŒãæšè«ãéåžžããã¹ãã«æ··ããå Žåã«åœ¹ç«ã¡ãŸãã
ã©ã³ã¿ã€ã ãããã°ãªãŒããŒã©ã€ã
ãã£ããã§ /debug ã䜿çšããŠãã©ã³ã¿ã€ã éå®ã®èšå®ãªãŒããŒã©ã€ããèšå®ããŸãïŒã¡ã¢ãªäžã®ã¿ããã£ã¹ã¯ã«ã¯ä¿åãããŸããïŒã
/debug ã¯ããã©ã«ãã§ç¡å¹ã§ããcommands.debug: true ã§æå¹ã«ããŸãã
ããã¯ãopenclaw.json ãç·šéããã«åããã«ããèšå®ãåãæ¿ããå¿
èŠãããå Žåã«äŸ¿å©ã§ãã
äŸ:
/debug show/debug set messages.responsePrefix="[openclaw]"/debug unset messages.responsePrefix/debug reset/debug reset ã¯ãã¹ãŠã®ãªãŒããŒã©ã€ããã¯ãªã¢ãããã£ã¹ã¯äžã®èšå®ã«æ»ããŸãã
ã»ãã·ã§ã³ãã¬ãŒã¹åºå
å®å
šãª verbose ã¢ãŒããæå¹ã«ããã«ã1ã€ã®ã»ãã·ã§ã³ã§ Plugin ææã®ãã¬ãŒã¹/ãããã°è¡ã確èªãããå Žå㯠/trace ã䜿çšããŸãã
äŸ:
/trace/trace on/trace offActive Memory ã®ãããã°èŠçŽãªã©ãPlugin 蚺æã«ã¯ /trace ã䜿çšããŸãã
éåžžã® verbose ãªã¹ããŒã¿ã¹/ããŒã«åºåã«ã¯åŒãç¶ã /verbose ã䜿çšããã©ã³ã¿ã€ã éå®ã®èšå®ãªãŒããŒã©ã€ãã«ã¯åŒãç¶ã /debug ã䜿çšããŸãã
Plugin ã©ã€ããµã€ã¯ã«ãã¬ãŒã¹
Plugin ã©ã€ããµã€ã¯ã«ã³ãã³ããé
ãæããããPlugin ã¡ã¿ããŒã¿ãæ€åºãã¬ãžã¹ããªãã©ã³ã¿ã€ã ãã©ãŒãèšå®å€æŽãæŽæ°äœæ¥ã«ã€ããŠçµã¿èŸŒã¿ã®ãã§ãŒãºå
èš³ãå¿
èŠãªå Žåã¯ãOPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 ã䜿çšããŸãããã¬ãŒã¹ã¯ãªããã€ã³ã§ stderr ã«æžã蟌ãŸãããããJSON ã³ãã³ãåºåã¯è§£æå¯èœãªãŸãŸã§ãã
äŸ:
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"CPU ãããã¡ã€ã©ãŒã䜿ãåã«ãPlugin ã©ã€ããµã€ã¯ã«èª¿æ»ã«ã¯ããã䜿çšããŸãã
ã³ãã³ãããœãŒã¹ãã§ãã¯ã¢ãŠãããå®è¡ããŠããå Žåã¯ãpnpm build åŸã« node dist/entry.js ... ã§ãã«ãæžã¿ã©ã³ã¿ã€ã ãèšæž¬ããããšãåªå
ããŸããpnpm openclaw ... ã§ã¯ãœãŒã¹ã©ã³ããŒã®ãªãŒããŒããããèšæž¬ãããŸãã
CLI èµ·åãšã³ãã³ããããã¡ã€ãªã³ã°
ã³ãã³ããé ãæããããå Žåã¯ããã§ãã¯ã€ã³æžã¿ã®èµ·åãã³ãããŒã¯ã䜿çšããŸã:
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-cpuéåžžã®ãœãŒã¹ã©ã³ããŒçµç±ã§åçºãããã¡ã€ãªã³ã°ãè¡ãã«ã¯ãOPENCLAW_RUN_NODE_CPU_PROF_DIR ãèšå®ããŸã:
OPENCLAW_RUN_NODE_CPU_PROF_DIR=.artifacts/cli-cpu pnpm openclaw statusãœãŒã¹ã©ã³ããŒã¯ Node CPU ãããã¡ã€ã«ãã©ã°ã远å ããã³ãã³ãçšã® .cpuprofile ãæžã蟌ã¿ãŸããã³ãã³ãã³ãŒãã«äžæçãªèšæž¬ã远å ããåã«ããã䜿çšããŸãã
èµ·åã®åæ¢ãåæãã¡ã€ã«ã·ã¹ãã åŠçãŸãã¯ã¢ãžã¥ãŒã«ããŒããŒåŠçã«èŠããå Žåã¯ããœãŒã¹ã©ã³ããŒçµç±ã§ Node ã®åæ I/O ãã¬ãŒã¹ãã©ã°ã远å ããŸã:
OPENCLAW_TRACE_SYNC_IO=1 pnpm openclaw gateway --forcepnpm gateway:watch ã¯ãç£èŠå¯Ÿè±¡ã® Gateway åããã»ã¹ã§ã¯ãã®ãã©ã°ãããã©ã«ãã§ç¡å¹ã®ãŸãŸã«ããŸãããŠã©ããã¢ãŒãã§ Node åæ I/O ãã¬ãŒã¹åºåãæç€ºçã«å¿
èŠãšããå Žåã¯ãOPENCLAW_TRACE_SYNC_IO=1 ãèšå®ããŸãã
Gateway ãŠã©ããã¢ãŒã
é«éãªååŸ©äœæ¥ã«ã¯ããã¡ã€ã«ãŠã©ããã£ãŒé äžã§ gateway ãå®è¡ããŸã:
pnpm gateway:watchããã©ã«ãã§ã¯ããã㯠openclaw-gateway-watch-main ãšããååã® tmux ã»ãã·ã§ã³ïŒãŸã㯠openclaw-gateway-watch-dev-19001 ã®ãããªãããã¡ã€ã«/ããŒãåºæã®ããªã¢ã³ãïŒãéå§ãŸãã¯åèµ·åãã察話åã¿ãŒããã«ããèªåçã«ã¢ã¿ããããŸãã
é察話åã·ã§ã«ãCIããšãŒãžã§ã³ãã® exec åŒã³åºãã§ã¯ãã¿ããããããŸãŸã«ãªãã代ããã«ã¢ã¿ããæé ãåºåããŸããå¿
èŠã«å¿ããŠæåã§ã¢ã¿ããããŸã:
tmux attach -t openclaw-gateway-watch-maintmux ãã€ã³ã¯çã®ãŠã©ããã£ãŒãå®è¡ããŸã:
node scripts/watch-node.mjs gateway --forcetmux ãäžèŠãªå Žåã¯ãã©ã¢ã°ã©ãŠã³ãã¢ãŒãã䜿çšããŸã:
pnpm gateway:watch:raw# orOPENCLAW_GATEWAY_WATCH_TMUX=0 pnpm gateway:watchtmux 管çãç¶æããªããèªåã¢ã¿ãããç¡å¹ã«ããŸã:
OPENCLAW_GATEWAY_WATCH_ATTACH=0 pnpm gateway:watchèµ·åæ/å®è¡æã®ãããã¹ãããããããã°ããå Žåã¯ãç£èŠå¯Ÿè±¡ Gateway ã® CPU æéããããã¡ã€ã«ããŸã:
pnpm gateway:watch --benchmarkãŠã©ããã©ãããŒã¯ Gateway ãèµ·åããåã« --benchmark ãæ¶è²»ããGateway åããã»ã¹ãçµäºãããã³ã« .artifacts/gateway-watch-profiles/ é
äžãž V8 .cpuprofile ã1ã€æžã蟌ã¿ãŸããçŸåšã®ãããã¡ã€ã«ããã©ãã·ã¥ããã«ã¯ãç£èŠå¯Ÿè±¡ gateway ã忢ãŸãã¯åèµ·åãããã®åŸ Chrome DevTools ãŸã㯠Speedscope ã§éããŸã:
npx speedscope .artifacts/gateway-watch-profiles/*.cpuprofileãããã¡ã€ã«ãå¥ã®å Žæã«çœ®ãããå Žå㯠--benchmark-dir <path> ã䜿çšããŸãã
ãã³ãããŒã¯å¯Ÿè±¡ã®åããã»ã¹ã§ããã©ã«ãã® --force ããŒãã¯ãªãŒã³ã¢ãããã¹ãããããGateway ããŒãããã§ã«äœ¿çšäžã®å Žåã«å³åº§ã«å€±æããããå Žåã¯ã--benchmark-no-force ã䜿çšããŸãã
ãã³ãããŒã¯ã¢ãŒãã§ã¯ãåæ I/O ãã¬ãŒã¹ã®å€§éåºåã¯ããã©ã«ãã§æå¶ãããŸããCPU ãããã¡ã€ã«ãš Node åæ I/O ã¹ã¿ãã¯ãã¬ãŒã¹ã®äž¡æ¹ãæç€ºçã«å¿
èŠãšããå Žåã¯ã--benchmark ãšãšãã« OPENCLAW_TRACE_SYNC_IO=1 ãèšå®ããŸãããã³ãããŒã¯ã¢ãŒãã§ã¯ããããã®ãã¬ãŒã¹ãããã¯ã¯ãã³ãããŒã¯ãã£ã¬ã¯ããªé
äžã® gateway-watch-output.log ã«æžã蟌ãŸããã¿ãŒããã«ãã€ã³ããã¯ãã£ã«ã¿ãªã³ã°ãããŸããéåžžã® Gateway ãã°ã¯åŒãç¶ã衚瀺ãããŸãã
tmux ã©ãããŒã¯ãOPENCLAW_PROFILEãOPENCLAW_CONFIG_PATHãOPENCLAW_STATE_DIRãOPENCLAW_GATEWAY_PORTãOPENCLAW_SKIP_CHANNELS ãªã©ãäžè¬çãªéç§å¯ã®ã©ã³ã¿ã€ã ã»ã¬ã¯ã¿ãŒããã€ã³ã«åŒãç¶ããŸãã
ãããã€ããŒèªèšŒæ
å ±ã¯éåžžã®ãããã¡ã€ã«/èšå®ã«å
¥ããããåçºã®äžæçãªç§å¯ã«ã¯çã®ãã©ã¢ã°ã©ãŠã³ãã¢ãŒãã䜿çšããŸãã
ç£èŠå¯Ÿè±¡ Gateway ãèµ·åäžã«çµäºããå ŽåããŠã©ããã£ãŒã¯ openclaw doctor --fix --non-interactive ã1åå®è¡ããGateway åããã»ã¹ãåèµ·åããŸãã
éçºå°çšã®ä¿®åŸ©ãã¹ãªãã§å
ã®èµ·å倱æã確èªãããå Žåã¯ãOPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0 ã䜿çšããŸãã
管ç察象㮠tmux ãã€ã³ã§ã¯ãèªã¿ãããã®ããã« Gateway ãã°ã«è²ãä»ããããšãããã©ã«ãã§ããANSI åºåãç¡å¹ã«ããã«ã¯ãpnpm gateway:watch ã®éå§æã« FORCE_COLOR=0 ãèšå®ããŸãã
ãŠã©ããã£ãŒã¯ãsrc/ é
äžã®ãã«ãé¢é£ãã¡ã€ã«ãæ¡åŒµæ©èœã®ãœãŒã¹ãã¡ã€ã«ãæ¡åŒµæ©èœã® package.json ãš openclaw.plugin.json ã¡ã¿ããŒã¿ãtsconfig.jsonãpackage.jsonãtsdown.config.ts ã®å€æŽã§åèµ·åããŸããæ¡åŒµæ©èœã¡ã¿ããŒã¿ã®å€æŽã§ã¯ãtsdown ã®åãã«ãã匷å¶ããã« gateway ãåèµ·åããŸãããœãŒã¹ãšèšå®ã®å€æŽã§ã¯ãåŒãç¶ãå
ã« dist ãåãã«ãããŸãã
Gateway CLI ãã©ã°ã¯ gateway:watch ã®åŸã«è¿œå ãããšãååèµ·åæã«ãã®ãŸãŸæž¡ãããŸããåã watch ã³ãã³ããåå®è¡ãããšãååä»ã tmux ãã€ã³ãåçæãããŸãããŸããçã®ãŠã©ããã£ãŒã¯åŒãç¶ãåäžãŠã©ããã£ãŒããã¯ãä¿æãããããéè€ãããŠã©ããã£ãŒèŠªããã»ã¹ã¯ç©ã¿éãªããã«çœ®ãæããããŸãã
dev ãããã¡ã€ã« + dev gatewayïŒ--devïŒ
ãããã°çšã«ç¶æ
ãåé¢ããå®å
šã§äœ¿ãæšãŠã®ã»ããã¢ãããèµ·åããã«ã¯ dev ãããã¡ã€ã«ã䜿çšããŸãã--dev ãã©ã°ã¯2ã€ãããŸã:
- ã°ããŒãã«
--devïŒãããã¡ã€ã«ïŒ: ç¶æ ã~/.openclaw-devé äžã«åé¢ããgateway ããŒãã®ããã©ã«ãã19001ã«ããŸãïŒæŽŸçããŒããããã«åãããŠãããŸãïŒã gateway --dev: æ¬ èœããŠããå Žåã«ããã©ã«ãèšå® + ã¯ãŒã¯ã¹ããŒã¹ãèªåäœæãããã Gateway ã«æç€ºããŸãïŒãã㊠BOOTSTRAP.md ãã¹ãããããŸãïŒã
æšå¥šãããŒïŒdev ãããã¡ã€ã« + dev ããŒãã¹ãã©ããïŒ:
pnpm gateway:devOPENCLAW_PROFILE=dev openclaw tuiãŸã ã°ããŒãã«ã€ã³ã¹ããŒã«ããªãå Žåã¯ãpnpm openclaw ... çµç±ã§ CLI ãå®è¡ããŸãã
ãããè¡ãããš:
-
ãããã¡ã€ã«åé¢ïŒã°ããŒãã«
--devïŒOPENCLAW_PROFILE=devOPENCLAW_STATE_DIR=~/.openclaw-devOPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.jsonOPENCLAW_GATEWAY_PORT=19001ïŒãã©ãŠã¶ãŒ/canvas ãããã«å¿ããŠãããŸãïŒ
-
dev ããŒãã¹ãã©ããïŒ
gateway --devïŒ- æ¬ èœããŠããå Žåã¯æå°èšå®ãæžã蟌ã¿ãŸãïŒ
gateway.mode=localãloopback ã« bindïŒã agent.workspaceã dev ã¯ãŒã¯ã¹ããŒã¹ã«èšå®ããŸããagent.skipBootstrap=trueãèšå®ããŸãïŒBOOTSTRAP.md ãªãïŒã- æ¬ èœããŠããå Žåã¯ã¯ãŒã¯ã¹ããŒã¹ãã¡ã€ã«ãã·ãŒãããŸã:
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md. - ããã©ã«ãã® identity: C3-POïŒprotocol droidïŒã
- dev ã¢ãŒãã§ã¯ãã£ãã«ãããã€ããŒãã¹ãããããŸãïŒ
OPENCLAW_SKIP_CHANNELS=1ïŒã
- æ¬ èœããŠããå Žåã¯æå°èšå®ãæžã蟌ã¿ãŸãïŒ
ãªã»ãããããŒïŒæ°èŠéå§ïŒ:
pnpm gateway:dev:reset--reset ã¯èšå®ãèªèšŒæ
å ±ãã»ãã·ã§ã³ãdev ã¯ãŒã¯ã¹ããŒã¹ãïŒrm ã§ã¯ãªã trash ã䜿ã£ãŠïŒæ¶å»ãããã®åŸããã©ã«ãã® dev ã»ããã¢ãããåäœæããŸãã
çã¹ããªãŒã ãã®ã³ã°ïŒOpenClawïŒ
OpenClaw ã¯ããã£ã«ã¿ãªã³ã°/æŽåœ¢ã®åã«çã®ã¢ã·ã¹ã¿ã³ãã¹ããªãŒã ããã°åºåã§ããŸãã ããã¯ãæšè«ããã¬ãŒã³ããã¹ã delta ãšããŠå±ããŠããã®ãïŒãŸãã¯å¥åã® thinking ãããã¯ãšããŠå±ããŠããã®ãïŒã確èªããæé©ãªæ¹æ³ã§ãã
CLI çµç±ã§æå¹ã«ããŸã:
pnpm gateway:watch --raw-streamä»»æã®ãã¹äžæžã:
pnpm gateway:watch --raw-stream --raw-stream-path ~/.openclaw/logs/raw-stream.jsonlåçã®ç°å¢å€æ°:
OPENCLAW_RAW_STREAM=1OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-stream.jsonlããã©ã«ããã¡ã€ã«:
~/.openclaw/logs/raw-stream.jsonl
çã® OpenAI äºæãã£ã³ã¯ãã®ã³ã°
çã® OpenAI äºæãã£ã³ã¯ãããããã¯ãžè§£æãããåã«ååŸããã«ã¯ãtransport logger ãæå¹ã«ããŸã:
OPENCLAW_RAW_STREAM=1ä»»æã®ãã¹:
OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-openai-completions.jsonlããã©ã«ããã¡ã€ã«:
~/.openclaw/logs/raw-openai-completions.jsonl
å®å šäžã®æ³šæ
- çã¹ããªãŒã ãã°ã«ã¯ãå®å šãªããã³ãããããŒã«åºåããŠãŒã¶ãŒããŒã¿ãå«ãŸããå ŽåããããŸãã
- ãã°ã¯ããŒã«ã«ã«ä¿æãããããã°åŸã«åé€ããŠãã ããã
- ãã°ãå ±æããå Žåã¯ãå ã«ç§å¯æ å ±ãš PII ãé€å»ããŠãã ããã
VSCode ã§ã®ãããã°
VSCode ããŒã¹ã® IDE ã§ãããã°ãæå¹ã«ããã«ã¯ããœãŒã¹ããããå¿
èŠã§ãããã«ãããã»ã¹ã®äžéšãšããŠãçæããããã¡ã€ã«ã®å€ããããã·ã¥åãããååã«ãªãããã§ããå«ãŸããŠãã launch.json èšå®ã¯ Gateway ãµãŒãã¹ã察象ã«ããŠããŸãããä»ã®ç®çã«ããã°ããé©çšã§ããŸã:
- Gateway ãåãã«ãããŠãããã° - æ°ãããã«ããäœæããåŸã« Gateway ãµãŒãã¹ããããã°ããŸã
- Gateway ããããã° - æ¢åãã«ãã® Gateway ãµãŒãã¹ããããã°ããŸã
ã»ããã¢ãã
ããã©ã«ãã® Gateway ãåãã«ãããŠãããã° èšå®ã«ã¯å¿
èŠãªãã®ãæã£ãŠããã/dist ãã©ã«ããŒãèªåçã«åé€ãããããã°ãæå¹ã«ããŠãããžã§ã¯ããåãã«ãããŸã:
- Activity Bar ãã Run and Debug ããã«ãéããã
Ctrl+Shift+DãæŒããŸã - IDE ã§ãèšå®ããããããŠã³ã« Gateway ãåãã«ãããŠãããã° ãéžæãããŠããããšã確èªãããã®åŸ Start Debugging ãã¿ã³ãæŒããŸã
ãŸãã¯ããã«ããšãããã°ã®ããã»ã¹ãæåã§ç®¡çãããå Žå:
- ã¿ãŒããã«ãéãããœãŒã¹ããããæå¹ã«ããŸã:
- Linux/macOS:
export OUTPUT_SOURCE_MAPS=1 - Windows (PowerShell):
$env:OUTPUT_SOURCE_MAPS="1" - Windows (CMD):
set OUTPUT_SOURCE_MAPS=1
- Linux/macOS:
- åãã¿ãŒããã«ã§ãããžã§ã¯ããåãã«ãããŸã:
pnpm clean:dist && pnpm build - IDE ã§ãRun and Debug èšå®ããããããŠã³ãã Gateway ããããã° ãªãã·ã§ã³ãéžæãããã®åŸ Start Debugging ãã¿ã³ãæŒããŸã
ããã§ TypeScript ãœãŒã¹ãã¡ã€ã«ïŒsrc/ ãã£ã¬ã¯ããªïŒã«ãã¬ãŒã¯ãã€ã³ããèšå®ã§ãããããã¬ãŒã¯ãœãŒã¹ãããçµç±ã§ãã¬ãŒã¯ãã€ã³ããã³ã³ãã€ã«æžã¿ JavaScript ã«æ£ãã察å¿ä»ããŸããæåŸ
ã©ããã«ã倿°ã®æ€æ»ãã³ãŒãã®ã¹ãããå®è¡ãã³ãŒã«ã¹ã¿ãã¯ã®ç¢ºèªãã§ããŸãã
泚èš
- "Rebuild and Debug Gateway" ãªãã·ã§ã³ã䜿çšããå Žåããããã¬ãŒãèµ·åãããã³ã«
/distãã©ã«ããŒãå®å šã«åé€ãããGateway ã®èµ·ååã«ãœãŒã¹ããããæå¹ã«ããå®å šãªpnpm buildãå®è¡ãããŸã - "Debug Gateway" ãªãã·ã§ã³ã䜿çšããå Žåããããã°ã»ãã·ã§ã³ã¯
/distãã©ã«ããŒã«åœ±é¿ãäžããã«ãã€ã§ãéå§ããã³åæ¢ã§ããŸããããããã°ã®æå¹åãšãã«ããµã€ã¯ã«ã®ç®¡çã®äž¡æ¹ã«å¥ã®ã¿ãŒããã«ããã»ã¹ã䜿çšããå¿ èŠããããŸã - ãããžã§ã¯ãã®ä»ã®ã»ã¯ã·ã§ã³ããããã°ããã«ã¯ã
argsã®launch.jsonèšå®ã倿ŽããŸã - ä»ã®ã¿ã¹ã¯ã§ãã«ãæžã¿ OpenClaw CLI ã䜿çšããå¿
èŠãããå ŽåïŒããšãã°ããããã°ã»ãã·ã§ã³ãæ°ããèªèšŒããŒã¯ã³ãçæãããªã
dashboard --no-openïŒãå¥ã®ã¿ãŒããã«ã§node ./openclaw.mjsãšããŠå®è¡ããããalias openclaw-build="node $(pwd)/openclaw.mjs"ã®ãããªã·ã§ã«ãšã€ãªã¢ã¹ãäœæã§ããŸã