Start here
Depuração
Auxiliares de depuração para saída em streaming, iteração do Gateway e criação de perfis de inicialização.
Substituições de depuração em tempo de execução
/debug define substituições de configuração somente em tempo de execução (na memória, não no disco). Desativado por padrão; ative com commands.debug: true.
/debug show/debug set messages.responsePrefix="[openclaw]"/debug unset messages.responsePrefix/debug reset/debug reset limpa todas as substituições e retorna à configuração armazenada em disco.
Saída de rastreamento da sessão
/trace mostra linhas de rastreamento/depuração pertencentes ao plugin para uma sessão, sem ativar o modo totalmente detalhado. Use-o para diagnósticos de plugins, como resumos de depuração da Active Memory; use /verbose para a saída normal de status/ferramentas.
/trace/trace on/trace offRastreamento do ciclo de vida do Plugin
Defina OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 para obter uma análise fase a fase de metadados, descoberta, registro, espelho de tempo de execução, mutação de configuração e trabalho de atualização dos plugins. A saída é gravada em stderr, portanto a saída JSON dos comandos permanece analisável.
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"Use isso antes de recorrer a um criador de perfil de CPU. Em um checkout do código-fonte, meça o tempo de execução compilado com node dist/entry.js ... após pnpm build; pnpm openclaw ... também mede a sobrecarga do executor do código-fonte.
Inicialização da CLI e criação de perfil de comandos
Benchmarks de inicialização versionados:
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-cpuPara uma criação de perfil pontual pelo executor normal do código-fonte, defina OPENCLAW_RUN_NODE_CPU_PROF_DIR:
OPENCLAW_RUN_NODE_CPU_PROF_DIR=.artifacts/cli-cpu pnpm openclaw statusO executor do código-fonte adiciona os sinalizadores de perfil de CPU do Node e grava um arquivo .cpuprofile para o comando. Use isso antes de adicionar instrumentação temporária ao código do comando.
Para travamentos na inicialização que pareçam trabalho síncrono do sistema de arquivos ou do carregador de módulos, adicione o sinalizador de rastreamento de E/S síncrona do Node por meio do executor do código-fonte:
OPENCLAW_TRACE_SYNC_IO=1 pnpm openclaw gateway --forcepnpm gateway:watch mantém esse sinalizador desativado por padrão para o processo filho monitorado do Gateway; defina OPENCLAW_TRACE_SYNC_IO=1 quando também quiser a saída de rastreamento de E/S síncrona no modo de monitoramento.
Modo de monitoramento do Gateway
pnpm gateway:watchPor padrão, isso inicia ou reinicia uma sessão tmux chamada openclaw-gateway-watch-<profile> (por exemplo, openclaw-gateway-watch-main), com um sufixo de porta, como openclaw-gateway-watch-dev-19001, adicionado somente quando OPENCLAW_GATEWAY_PORT difere da porta padrão 18789. A sessão é anexada automaticamente em terminais interativos; shells não interativos, CI e chamadas de execução de agentes permanecem desanexados e exibem instruções de conexão:
tmux attach -t openclaw-gateway-watch-mainO painel do tmux executa o monitor bruto:
node scripts/watch-node.mjs gateway --forceInterrompa um serviço do Gateway instalado antes de monitorar a mesma porta:
pnpm openclaw gateway stopO --force do monitor libera o listener atual, mas não desativa um serviço supervisionado. Caso contrário, um serviço launchd, systemd ou Scheduled Task pode reiniciar e substituir o Gateway monitorado.
Modo em primeiro plano sem tmux:
pnpm gateway:watch:raw# ouOPENCLAW_GATEWAY_WATCH_TMUX=0 pnpm gateway:watchMantenha o gerenciamento pelo tmux, mas desative a conexão automática:
OPENCLAW_GATEWAY_WATCH_ATTACH=0 pnpm gateway:watchCrie um perfil do tempo de CPU do Gateway monitorado ao depurar pontos críticos de inicialização/tempo de execução:
pnpm gateway:watch --benchmarkO wrapper de monitoramento consome --benchmark antes de invocar o Gateway e grava um arquivo V8 .cpuprofile por encerramento de processo filho do Gateway em .artifacts/gateway-watch-profiles/. Interrompa ou reinicie o gateway monitorado para descarregar o perfil atual e depois abra-o com o Chrome DevTools ou o Speedscope:
npx speedscope .artifacts/gateway-watch-profiles/*.cpuprofile--benchmark-dir <path>: grava os perfis em outro local.--benchmark-no-force: ignora a limpeza padrão da porta feita por--forcee falha imediatamente se a porta do Gateway já estiver em uso.
Por padrão, o modo de benchmark suprime o excesso de rastreamentos de E/S síncrona. Defina OPENCLAW_TRACE_SYNC_IO=1 com --benchmark para obter tanto os perfis de CPU quanto os rastreamentos de pilha de E/S síncrona; no modo de benchmark, esses blocos de rastreamento são gravados em gateway-watch-output.log no diretório do benchmark (filtrados do painel do terminal), enquanto os logs normais do Gateway permanecem visíveis.
O wrapper do tmux transfere seletores comuns e não secretos do tempo de execução para o painel, incluindo OPENCLAW_PROFILE, OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR, OPENCLAW_GATEWAY_PORT e OPENCLAW_SKIP_CHANNELS. Coloque as credenciais do provedor no seu perfil/configuração normal ou use o modo bruto em primeiro plano para segredos efêmeros pontuais.
Se o Gateway monitorado encerrar durante a inicialização, o monitor executará openclaw doctor --fix --non-interactive uma vez e reiniciará o processo filho do Gateway. Defina OPENCLAW_GATEWAY_WATCH_AUTO_DOCTOR=0 para ver a falha de inicialização original sem a etapa de reparo exclusiva para desenvolvimento.
Por padrão, o painel tmux gerenciado exibe logs coloridos do Gateway; defina FORCE_COLOR=0 ao iniciar pnpm gateway:watch para desativar a saída ANSI.
O monitor reinicia quando há alterações em arquivos relevantes para a compilação em src/, arquivos-fonte de extensões, metadados package.json e openclaw.plugin.json das extensões, tsconfig.json, package.json e tsdown.config.ts. Alterações nos metadados das extensões reiniciam o gateway sem forçar uma recompilação; alterações no código-fonte e na configuração ainda recompilam dist primeiro.
Adicione sinalizadores da CLI do gateway após gateway:watch, e eles serão repassados a cada reinicialização. Executar novamente o mesmo comando de monitoramento recria o painel tmux nomeado; o monitor bruto mantém um bloqueio de monitor único para que processos-pai de monitoramento duplicados sejam substituídos em vez de se acumularem.
Perfil de desenvolvimento + gateway de desenvolvimento (--dev)
Dois sinalizadores --dev separados:
--devglobal (perfil): isola o estado em~/.openclaw-deve define a porta padrão do gateway como19001(as portas derivadas mudam junto com ela).gateway --dev: instrui o Gateway a criar automaticamente uma configuração e um espaço de trabalho padrão quando estiverem ausentes (e ignorar o bootstrap).
Fluxo recomendado (perfil de desenvolvimento + bootstrap de desenvolvimento):
pnpm gateway:devOPENCLAW_PROFILE=dev openclaw tuiSem uma instalação global, execute a CLI por meio de pnpm openclaw ....
O que isso faz:
-
Isolamento do perfil (
--devglobal)OPENCLAW_PROFILE=devOPENCLAW_STATE_DIR=~/.openclaw-devOPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.jsonOPENCLAW_GATEWAY_PORT=19001(as portas do navegador/canvas mudam de acordo)
-
Bootstrap de desenvolvimento (
gateway --dev)- Grava uma configuração mínima caso esteja ausente (
gateway.mode=local, vinculação a local loopback). - Define
agents.defaults.workspacecomo o espaço de trabalho de desenvolvimento eagents.defaults.skipBootstrap=true. - Cria os arquivos do espaço de trabalho caso estejam ausentes:
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md. - Identidade padrão: C3-PO (droide de protocolo).
pnpm gateway:devtambém defineOPENCLAW_SKIP_CHANNELS=1para ignorar os provedores de canais.
- Grava uma configuração mínima caso esteja ausente (
Fluxo de redefinição (novo começo):
pnpm gateway:dev:reset--reset apaga a configuração, as credenciais, as sessões e o espaço de trabalho de desenvolvimento (movido para a lixeira, não excluído) e depois recria a configuração de desenvolvimento padrão.
Registro do stream bruto
O OpenClaw pode registrar o stream bruto do assistente antes de qualquer filtragem/formatação. Essa é a melhor maneira de verificar se o raciocínio está chegando como deltas de texto simples (ou como blocos de pensamento separados).
Ative-o por meio da CLI:
pnpm gateway:watch --raw-streamSubstituição opcional do caminho:
pnpm gateway:watch --raw-stream --raw-stream-path ~/.openclaw/logs/raw-stream.jsonlVariáveis de ambiente equivalentes:
OPENCLAW_RAW_STREAM=1OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-stream.jsonlArquivo padrão: ~/.openclaw/logs/raw-stream.jsonl
Observações de segurança
- Os logs do stream bruto podem incluir prompts completos, saída de ferramentas e dados do usuário.
- Mantenha os logs localmente e exclua-os após a depuração.
- Se compartilhar os logs, remova primeiro os segredos e dados de identificação pessoal.
Depuração no VSCode
Mapas de código-fonte são necessários porque a compilação aplica hashes aos nomes dos arquivos gerados. O launch.json incluído tem como alvo o serviço do Gateway:
- Rebuild and Debug Gateway - exclui
/diste recompila com a depuração ativada antes de iniciar o Gateway. - Debug Gateway - depura uma compilação existente sem alterar
/dist.
Configuração
- Abra Run and Debug (na Activity Bar ou com
Ctrl+Shift+D). - Selecione Rebuild and Debug Gateway e pressione Start Debugging.
Para gerenciar manualmente o ciclo de compilação/depuração:
- Ative os mapas de código-fonte em um terminal:
- Linux/macOS:
export OUTPUT_SOURCE_MAPS=1 - Windows (PowerShell):
$env:OUTPUT_SOURCE_MAPS="1" - Windows (CMD):
set OUTPUT_SOURCE_MAPS=1
- Linux/macOS:
- Recompile:
pnpm clean:dist && pnpm build - Selecione Debug Gateway e pressione Start Debugging.
Defina pontos de interrupção nos arquivos TypeScript em src/; o depurador os mapeia para o JavaScript compilado por meio dos mapas de código-fonte.
Observações
- Rebuild and Debug Gateway exclui
/diste executa umpnpm buildcompleto com mapas de código-fonte em cada inicialização. - Debug Gateway pode ser iniciado/interrompido sem afetar
/dist, mas você gerencia o ciclo de compilação em um terminal separado. - Edite os
argsdelaunch.jsonpara depurar outros subcomandos da CLI. - Para usar a CLI compilada em outras tarefas (por exemplo,
dashboard --no-opencaso sua sessão de depuração gere um novo token de autenticação), execute-a em outro terminal:node ./openclaw.mjsou use um alias comoalias openclaw-build="node $(pwd)/openclaw.mjs".