Referência de configuração central paraDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json. Para uma visão geral orientada a tarefas, consulte Configuração.
Cobre as principais superfícies de configuração do OpenClaw e aponta links quando um subsistema tem sua própria referência mais aprofundada. Catálogos de comandos de propriedade de canais e plugins e opções avançadas de memória/QMD ficam em suas próprias páginas, em vez desta.
Verdade do código:
openclaw config schemaimprime o JSON Schema ativo usado para validação e a UI de Controle, com metadados de pacotes/plugins/canais mesclados quando disponíveisconfig.schema.lookupretorna um nó de esquema com escopo por caminho para ferramentas de detalhamentopnpm config:docs:check/pnpm config:docs:genvalidam o hash da linha de base da documentação de configuração em relação à superfície atual do esquema
gateway config.schema.lookup para
documentação e restrições exatas em nível de campo antes de editar. Use
Configuração para orientação orientada a tarefas e esta página
para o mapa de campos mais amplo, padrões e links para referências de subsistemas.
Referências avançadas dedicadas:
- Referência de configuração de memória para
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationse configuração de Dreaming emplugins.entries.memory-core.config.dreaming - Comandos slash para o catálogo atual de comandos integrados + incluídos no pacote
- páginas dos canais/plugins proprietários para superfícies de comandos específicas de canal
Canais
As chaves de configuração por canal foram movidas para uma página dedicada - consulte Configuração - canais parachannels.*,
incluindo Slack, Discord, Telegram, WhatsApp, Matrix, iMessage e outros
canais incluídos no pacote (autenticação, controle de acesso, múltiplas contas, bloqueio por menção).
Padrões de agentes, multiagente, sessões e mensagens
Movido para uma página dedicada - consulte Configuração - agentes para:agents.defaults.*(workspace, modelo, raciocínio, Heartbeat, memória, mídia, Skills, sandbox)multiAgent.*(roteamento e vínculos multiagente)session.*(ciclo de vida da sessão, Compaction, poda)messages.*(entrega de mensagens, TTS, renderização de markdown)talk.*(modo Talk)talk.consultThinkingLevel: substituição do nível de raciocínio para a execução completa do agente OpenClaw por trás das consultas em tempo real do Talk da UI de Controletalk.consultFastMode: substituição única de modo rápido para consultas em tempo real do Talk da UI de Controletalk.speechLocale: id de localidade BCP 47 opcional para reconhecimento de fala do Talk no iOS/macOStalk.silenceTimeoutMs: quando não definido, o Talk mantém a janela de pausa padrão da plataforma antes de enviar a transcrição (700 ms on macOS and Android, 900 ms on iOS)
Ferramentas e provedores personalizados
Política de ferramentas, alternâncias experimentais, configuração de ferramentas respaldada por provedor e configuração de provedor personalizado / URL base foram movidas para uma página dedicada - consulte Configuração - ferramentas e provedores personalizados.Modelos
Definições de provedores, listas de permissão de modelos e configuração de provedores personalizados ficam em Configuração - ferramentas e provedores personalizados. A raizmodels também controla o comportamento global do catálogo de modelos.
models.mode: comportamento do catálogo de provedores (mergeoureplace).models.providers: mapa de provedores personalizados indexado por id de provedor.models.providers.*.localService: gerenciador de processos sob demanda opcional para servidores de modelo locais. O OpenClaw verifica o endpoint de integridade configurado, inicia ocommandabsoluto quando necessário, aguarda a prontidão e então envia a solicitação do modelo. Consulte Serviços de modelo locais.models.pricing.enabled: controla a inicialização de preços em segundo plano que começa depois que sidecars e canais alcançam o caminho pronto do Gateway. Quandofalse, o Gateway ignora buscas de catálogos de preços do OpenRouter e LiteLLM; valores configurados emmodels.providers.*.models[].costainda funcionam para estimativas de custo locais.
MCP
Definições de servidores MCP gerenciados pelo OpenClaw ficam emmcp.servers e são
consumidas pelo Pi incorporado e outros adaptadores de runtime. Os comandos openclaw mcp list,
show, set e unset gerenciam esse bloco sem se conectar ao
servidor de destino durante edições de configuração.
mcp.servers: definições nomeadas de servidores MCP stdio ou remotos para runtimes que expõem ferramentas MCP configuradas. Entradas remotas usamtransport: "streamable-http"outransport: "sse";type: "http"é um alias nativo da CLI queopenclaw mcp seteopenclaw doctor --fixnormalizam para o campo canônicotransport.mcp.sessionIdleTtlMs: TTL ocioso para runtimes MCP incluídos no pacote e com escopo de sessão. Execuções incorporadas únicas solicitam limpeza no fim da execução; este TTL é a proteção final para sessões de longa duração e chamadores futuros.- Alterações em
mcp.*são aplicadas a quente descartando runtimes MCP de sessão em cache. A próxima descoberta/uso de ferramenta os recria a partir da nova configuração, portanto entradas removidas demcp.serverssão coletadas imediatamente em vez de aguardar o TTL ocioso.
Skills
allowBundled: lista de permissão opcional apenas para Skills incluídas no pacote (Skills gerenciadas/workspace não afetadas).load.extraDirs: raízes extras compartilhadas de Skills (menor precedência).load.allowSymlinkTargets: raízes de destino reais confiáveis para as quais symlinks de Skills podem resolver quando o link fica fora da raiz de origem configurada.install.preferBrew: quando true, prefere instaladores Homebrew quandobrewestá disponível antes de recorrer a outros tipos de instalador.install.nodeManager: preferência de instalador Node para especificaçõesmetadata.openclaw.install(npm|pnpm|yarn|bun).install.allowUploadedArchives: permite que clientes Gateway confiáveisoperator.admininstalem arquivos zip privados preparados por meio deskills.upload.*(padrão: false). Isso só habilita o caminho de arquivos enviados; instalações normais do ClawHub não exigem isso.entries.<skillKey>.enabled: falsedesabilita uma Skill mesmo se ela estiver incluída no pacote/instalada.entries.<skillKey>.apiKey: conveniência para Skills que declaram uma variável de ambiente primária (string em texto claro ou objeto SecretRef).
Plugins
- Carregados de
~/.openclaw/extensions,<workspace>/.openclaw/extensions, além deplugins.load.paths. - A descoberta aceita plugins nativos do OpenClaw, além de pacotes compatíveis do Codex e pacotes do Claude, incluindo pacotes Claude sem manifesto com layout padrão.
- Alterações de configuração exigem uma reinicialização do gateway.
allow: lista de permissão opcional (somente os plugins listados são carregados).denyprevalece.bundledDiscovery: o padrão é"allowlist"para novas configurações, então umplugins.allownão vazio também controla plugins de provedor incluídos no pacote, incluindo provedores de runtime de busca na web. O Doctor grava"compat"para configurações migradas de lista de permissão legada para preservar o comportamento existente de provedores incluídos no pacote até você optar por entrar.plugins.entries.<id>.apiKey: campo de conveniência para chave de API em nível de plugin (quando compatível com o plugin).plugins.entries.<id>.env: mapa de variáveis de ambiente com escopo de plugin.plugins.entries.<id>.hooks.allowPromptInjection: quandofalse, o core bloqueiabefore_prompt_builde ignora campos que modificam prompts dobefore_agent_startlegado, preservandomodelOverrideeproviderOverridelegados. Aplica-se a hooks de plugins nativos e diretórios de hooks fornecidos por pacotes compatíveis.plugins.entries.<id>.hooks.allowConversationAccess: quandotrue, plugins não incluídos no pacote e confiáveis podem ler o conteúdo bruto da conversa a partir de hooks tipados comollm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalizeeagent_end.plugins.entries.<id>.subagent.allowModelOverride: confia explicitamente neste plugin para solicitar substituições deprovideremodelpor execução para execuções de subagentes em segundo plano.plugins.entries.<id>.subagent.allowedModels: lista de permissão opcional de destinos canônicosprovider/modelpara substituições confiáveis de subagente. Use"*"somente quando você intencionalmente quiser permitir qualquer modelo.plugins.entries.<id>.llm.allowModelOverride: confia explicitamente neste plugin para solicitar substituições de modelo paraapi.runtime.llm.complete.plugins.entries.<id>.llm.allowedModels: lista de permissão opcional de destinos canônicosprovider/modelpara substituições confiáveis de conclusão LLM de plugin. Use"*"somente quando você intencionalmente quiser permitir qualquer modelo.plugins.entries.<id>.llm.allowAgentIdOverride: confia explicitamente neste plugin para executarapi.runtime.llm.completecontra um id de agente não padrão.plugins.entries.<id>.config: objeto de configuração definido pelo plugin (validado pelo esquema de plugin nativo do OpenClaw quando disponível).- Configurações de conta/runtime de plugin de canal ficam em
channels.<id>e devem ser descritas pelos metadadoschannelConfigsdo manifesto do plugin proprietário, não por um registro central de opções do OpenClaw.
Configuração do plugin de harness do Codex
O plugincodex incluído no pacote controla configurações nativas de harness de servidor de app do Codex em
plugins.entries.codex.config. Consulte
Referência do harness do Codex para a superfície completa de configuração
e Harness do Codex para o modelo de runtime.
codexPlugins se aplica somente a sessões que selecionam o harness nativo do Codex.
Ele não habilita plugins do Codex para Pi, execuções normais do provedor OpenAI, vínculos de conversa
ACP ou qualquer harness que não seja do Codex.
plugins.entries.codex.config.codexPlugins.enabled: habilita o suporte nativo a plugin/app Codex para o harness Codex. Padrão:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: política padrão de ação destrutiva para elicitações de app de plugin migradas. Padrão:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: habilita uma entrada de plugin migrada quandocodexPlugins.enabledglobal também é true. Padrão:truepara entradas explícitas.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: identidade estável do marketplace. A V1 só oferece suporte a"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: identidade estável de plugin Codex a partir da migração, por exemplo"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: substituição de ação destrutiva por plugin. Quando omitido, o valor global deallow_destructive_actionsé usado.
codexPlugins.enabled é a diretiva global de habilitação. Entradas explícitas de plugin
gravadas pela migração são o conjunto durável de instalação e elegibilidade para reparo.
plugins["*"] não é compatível, não há alternância install, e valores locais de
marketplacePath intencionalmente não são campos de configuração porque são
específicos do host.
As verificações de prontidão de app/list são armazenadas em cache por uma hora e atualizadas
de forma assíncrona quando ficam obsoletas. A configuração de app de thread Codex é calculada
no estabelecimento da sessão do harness Codex, não em cada turno; use /new, /reset ou uma reinicialização do gateway
após alterar a configuração nativa de plugin.
plugins.entries.firecrawl.config.webFetch: configurações do provedor de busca web Firecrawl.apiKey: chave de API do Firecrawl (aceita SecretRef). Recorre aplugins.entries.firecrawl.config.webSearch.apiKey, ao legadotools.web.fetch.firecrawl.apiKeyou à variável de ambienteFIRECRAWL_API_KEY.baseUrl: URL base da API do Firecrawl (padrão:https://api.firecrawl.dev; substituições auto-hospedadas devem apontar para endpoints privados/internos).onlyMainContent: extrai apenas o conteúdo principal das páginas (padrão:true).maxAgeMs: idade máxima do cache em milissegundos (padrão:172800000/ 2 dias).timeoutSeconds: tempo limite da solicitação de scrape em segundos (padrão:60).
plugins.entries.xai.config.xSearch: configurações do xAI X Search (busca web do Grok).enabled: habilita o provedor X Search.model: modelo Grok a usar para busca (por exemplo,"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: configurações de dreaming da memória. Consulte Dreaming para fases e limites.enabled: alternância mestre de dreaming (padrãofalse).frequency: cadência cron para cada varredura completa de dreaming ("0 3 * * *"por padrão).model: substituição opcional do modelo do subagente Dream Diary. Requerplugins.entries.memory-core.subagent.allowModelOverride: true; combine comallowedModelspara restringir destinos. Erros de modelo indisponível tentam novamente uma vez com o modelo padrão da sessão; falhas de confiança ou allowlist não recorrem silenciosamente.- a política e os limites de fase são detalhes de implementação (não chaves de configuração voltadas ao usuário).
- A configuração completa de memória fica em Referência de configuração de memória:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Plugins do pacote Claude habilitados também podem contribuir padrões Pi incorporados de
settings.json; o OpenClaw aplica esses valores como configurações sanitizadas de agente, não como patches brutos de configuração do OpenClaw. plugins.slots.memory: escolhe o id do plugin de memória ativo, ou"none"para desabilitar plugins de memória.plugins.slots.contextEngine: escolhe o id do plugin de mecanismo de contexto ativo; o padrão é"legacy", a menos que você instale e selecione outro mecanismo.
Compromissos
commitments controla a memória inferida de acompanhamento: o OpenClaw pode detectar check-ins a partir de turnos de conversa e entregá-los por meio de execuções de heartbeat.
commitments.enabled: habilita extração oculta por LLM, armazenamento e entrega por heartbeat para compromissos inferidos de acompanhamento. Padrão:false.commitments.maxPerDay: número máximo de compromissos inferidos de acompanhamento entregues por sessão de agente em um dia móvel. Padrão:3.
Navegador
evaluateEnabled: falsedesabilitaact:evaluateewait --fn.tabCleanuprecupera abas rastreadas do agente primário após tempo ocioso ou quando uma sessão excede seu limite. DefinaidleMinutes: 0oumaxTabsPerSession: 0para desabilitar esses modos individuais de limpeza.ssrfPolicy.dangerouslyAllowPrivateNetworkfica desabilitado quando não definido, portanto a navegação do navegador permanece rigorosa por padrão.- Defina
ssrfPolicy.dangerouslyAllowPrivateNetwork: trueapenas quando você confiar intencionalmente na navegação de navegador em rede privada. - No modo rigoroso, endpoints de perfil CDP remoto (
profiles.*.cdpUrl) estão sujeitos ao mesmo bloqueio de rede privada durante verificações de alcance/descoberta. ssrfPolicy.allowPrivateNetworkcontinua compatível como alias legado.- No modo rigoroso, use
ssrfPolicy.hostnameAllowlistessrfPolicy.allowedHostnamespara exceções explícitas. - Perfis remotos são somente anexação (iniciar/parar/redefinir desabilitados).
profiles.*.cdpUrlaceitahttp://,https://,ws://ewss://. Use HTTP(S) quando quiser que o OpenClaw descubra/json/version; use WS(S) quando seu provedor fornecer uma URL direta de WebSocket do DevTools.remoteCdpTimeoutMseremoteCdpHandshakeTimeoutMsse aplicam a solicitações de alcance CDP remoto eattachOnly, além de abertura de abas. Perfis gerenciados de loopback mantêm os padrões locais de CDP.- Se um serviço CDP gerenciado externamente for acessível por loopback, defina
attachOnly: truenesse perfil; caso contrário, o OpenClaw trata a porta de loopback como um perfil de navegador gerenciado local e pode relatar erros de propriedade de porta local. - Perfis
existing-sessionusam Chrome MCP em vez de CDP e podem se anexar no host selecionado ou por meio de um nó de navegador conectado. - Perfis
existing-sessionpodem definiruserDataDirpara direcionar um perfil específico de navegador baseado em Chromium, como Brave ou Edge. - Perfis
existing-sessionmantêm os limites atuais da rota Chrome MCP: ações orientadas por snapshot/ref em vez de direcionamento por seletor CSS, hooks de upload de um arquivo, sem substituições de tempo limite de diálogo, semwait --load networkidle, e semresponsebody, exportação PDF, interceptação de download ou ações em lote. - Perfis
openclawgerenciados localmente atribuem automaticamentecdpPortecdpUrl; definacdpUrlexplicitamente apenas para CDP remoto. - Perfis gerenciados localmente podem definir
executablePathpara substituir obrowser.executablePathglobal desse perfil. Use isso para executar um perfil no Chrome e outro no Brave. - Perfis gerenciados localmente usam
browser.localLaunchTimeoutMspara descoberta HTTP do CDP do Chrome após o início do processo ebrowser.localCdpReadyTimeoutMspara prontidão do websocket CDP pós-inicialização. Aumente-os em hosts mais lentos em que o Chrome inicia com sucesso, mas as verificações de prontidão disputam com a inicialização. Ambos os valores devem ser inteiros positivos de até120000ms; valores de configuração inválidos são rejeitados. - Ordem de detecção automática: navegador padrão se baseado em Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathebrowser.profiles.<name>.executablePathaceitam~e~/...para o diretório inicial do seu SO antes da inicialização do Chromium.userDataDirpor perfil em perfisexisting-sessiontambém é expandido com til.- Serviço de controle: apenas loopback (porta derivada de
gateway.port, padrão18791). extraArgsacrescenta flags extras de inicialização à inicialização local do Chromium (por exemplo--disable-gpu, dimensionamento de janela ou flags de depuração).
IU
seamColor: cor de destaque para o chrome da IU do app nativo (tom do balão do Modo de Conversa etc.).assistant: substituição da identidade da IU de controle. Recorre à identidade do agente ativo.
Gateway
Detalhes dos campos do Gateway
Detalhes dos campos do Gateway
mode:local(executar Gateway) ouremote(conectar a Gateway remoto). O Gateway se recusa a iniciar a menos que sejalocal.port: porta multiplexada única para WS + HTTP. Precedência:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(padrão),lan(0.0.0.0),tailnet(somente IP do Tailscale) oucustom.- Aliases de bind legados: use valores de modo de bind em
gateway.bind(auto,loopback,lan,tailnet,custom), não aliases de host (0.0.0.0,127.0.0.1,localhost,::,::1). - Observação sobre Docker: o bind
loopbackpadrão escuta em127.0.0.1dentro do contêiner. Com rede bridge do Docker (-p 18789:18789), o tráfego chega emeth0, então o Gateway fica inacessível. Use--network hostou definabind: "lan"(oubind: "custom"comcustomBindHost: "0.0.0.0") para escutar em todas as interfaces. - Auth: exigido por padrão. Binds que não são loopback exigem auth do Gateway. Na prática, isso significa um token/senha compartilhado ou um proxy reverso ciente de identidade com
gateway.auth.mode: "trusted-proxy". O assistente de onboarding gera um token por padrão. - Se
gateway.auth.tokenegateway.auth.passwordestiverem configurados (incluindo SecretRefs), definagateway.auth.modeexplicitamente comotokenoupassword. Os fluxos de inicialização e instalação/reparo de serviço falham quando ambos estão configurados e o modo não está definido. gateway.auth.mode: "none": modo explícito sem auth. Use somente para configurações local loopback confiáveis; isso não é oferecido intencionalmente pelos prompts de onboarding.gateway.auth.mode: "trusted-proxy": delega a auth de navegador/usuário a um proxy reverso ciente de identidade e confia em cabeçalhos de identidade degateway.trustedProxies(consulte Auth de proxy confiável). Esse modo espera uma origem de proxy não loopback por padrão; proxies reversos loopback no mesmo host exigemgateway.auth.trustedProxy.allowLoopback = trueexplícito. Chamadores internos no mesmo host podem usargateway.auth.passwordcomo fallback direto local;gateway.auth.tokencontinua mutuamente exclusivo com o modo trusted-proxy.gateway.auth.allowTailscale: quandotrue, cabeçalhos de identidade do Tailscale Serve podem satisfazer a auth da Control UI/WebSocket (verificados viatailscale whois). Endpoints da API HTTP não usam essa auth por cabeçalho do Tailscale; eles seguem o modo normal de auth HTTP do Gateway. Esse fluxo sem token pressupõe que o host do Gateway é confiável. O padrão étruequandotailscale.mode = "serve".gateway.auth.rateLimit: limitador opcional de falhas de auth. Aplica-se por IP de cliente e por escopo de auth (shared-secret e device-token são rastreados independentemente). Tentativas bloqueadas retornam429+Retry-After.- No caminho assíncrono da Control UI do Tailscale Serve, tentativas com falha para o mesmo
{scope, clientIp}são serializadas antes da gravação da falha. Portanto, tentativas ruins concorrentes do mesmo cliente podem acionar o limitador na segunda solicitação em vez de ambas passarem como simples incompatibilidades. gateway.auth.rateLimit.exemptLoopbackassumetruepor padrão; definafalsequando você quiser intencionalmente limitar também o tráfego localhost (para configurações de teste ou implantações rígidas com proxy).
- No caminho assíncrono da Control UI do Tailscale Serve, tentativas com falha para o mesmo
- Tentativas de auth WS originadas do navegador são sempre limitadas com a isenção de loopback desativada (defesa em profundidade contra força bruta em localhost baseada em navegador).
- Em loopback, esses bloqueios originados do navegador são isolados por valor
Originnormalizado, então falhas repetidas de uma origem localhost não bloqueiam automaticamente uma origem diferente. tailscale.mode:serve(somente tailnet, bind loopback) oufunnel(público, exige auth).tailscale.preserveFunnel: quandotrueetailscale.mode = "serve", o OpenClaw verificatailscale funnel statusantes de reaplicar Serve na inicialização e ignora isso se uma rota Funnel configurada externamente já cobrir a porta do Gateway. Padrãofalse.controlUi.allowedOrigins: lista de permissões explícita de origens de navegador para conexões WebSocket do Gateway. Obrigatória quando clientes de navegador são esperados de origens não loopback.controlUi.chatMessageMaxWidth: largura máxima opcional para mensagens de chat agrupadas da Control UI. Aceita valores restritos de largura CSS, como960px,82%,min(1280px, 82%)ecalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: modo perigoso que habilita fallback de origem por cabeçalho Host para implantações que dependem intencionalmente de política de origem por cabeçalho Host.remote.transport:ssh(padrão) oudirect(ws/wss). Paradirect,remote.urldeve serws://ouwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: substituição de emergência no ambiente de processo do lado do cliente que permitews://em texto claro para IPs de rede privada confiáveis; o padrão continua sendo somente loopback para texto claro. Não há equivalente emopenclaw.json, e configurações de rede privada do navegador, comobrowser.ssrfPolicy.dangerouslyAllowPrivateNetwork, não afetam clientes WebSocket do Gateway.gateway.remote.token/.passwordsão campos de credenciais de cliente remoto. Eles não configuram auth do Gateway por si só.gateway.push.apns.relay.baseUrl: URL HTTPS base para o relay externo de APNs usado por builds oficiais/TestFlight do iOS depois que publicam registros baseados em relay no Gateway. Essa URL deve corresponder à URL do relay compilada no build do iOS.gateway.push.apns.relay.timeoutMs: timeout de envio do Gateway para o relay em milissegundos. Padrão10000.- Registros baseados em relay são delegados a uma identidade específica do Gateway. O app iOS pareado busca
gateway.identity.get, inclui essa identidade no registro do relay e encaminha uma concessão de envio com escopo de registro para o Gateway. Outro Gateway não pode reutilizar esse registro armazenado. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: substituições temporárias por env para a configuração de relay acima.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: escape hatch somente de desenvolvimento para URLs de relay HTTP em loopback. URLs de relay de produção devem permanecer em HTTPS.gateway.handshakeTimeoutMs: timeout do handshake WebSocket pré-auth do Gateway em milissegundos. Padrão:15000.OPENCLAW_HANDSHAKE_TIMEOUT_MStem precedência quando definido. Aumente isso em hosts carregados ou de baixa potência em que clientes locais conseguem se conectar enquanto o aquecimento da inicialização ainda está estabilizando.gateway.channelHealthCheckMinutes: intervalo do monitor de integridade de canais em minutos. Defina0para desativar globalmente reinicializações do monitor de integridade. Padrão:5.gateway.channelStaleEventThresholdMinutes: limite de socket obsoleto em minutos. Mantenha isso maior ou igual agateway.channelHealthCheckMinutes. Padrão:30.gateway.channelMaxRestartsPerHour: máximo de reinicializações do monitor de integridade por canal/conta em uma hora móvel. Padrão:10.channels.<provider>.healthMonitor.enabled: opção por canal para desativar reinicializações do monitor de integridade mantendo o monitor global habilitado.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: substituição por conta para canais com várias contas. Quando definido, tem precedência sobre a substituição em nível de canal.- Caminhos de chamada do Gateway local podem usar
gateway.remote.*como fallback somente quandogateway.auth.*não estiver definido. - Se
gateway.auth.token/gateway.auth.passwordestiver explicitamente configurado via SecretRef e não resolvido, a resolução falha de forma fechada (sem mascaramento por fallback remoto). trustedProxies: IPs de proxy reverso que terminam TLS ou injetam cabeçalhos de cliente encaminhado. Liste apenas proxies que você controla. Entradas loopback continuam válidas para configurações de proxy/detecção local no mesmo host (por exemplo, Tailscale Serve ou um proxy reverso local), mas elas não tornam solicitações loopback elegíveis paragateway.auth.mode: "trusted-proxy".allowRealIpFallback: quandotrue, o Gateway aceitaX-Real-IPseX-Forwarded-Forestiver ausente. Padrãofalsepara comportamento fail-closed.gateway.nodes.pairing.autoApproveCidrs: lista de permissões CIDR/IP opcional para aprovar automaticamente o primeiro pareamento de dispositivo de node sem escopos solicitados. Fica desativada quando não definida. Isso não aprova automaticamente pareamento de operador/navegador/Control UI/WebChat e não aprova automaticamente upgrades de função, escopo, metadados ou chave pública.gateway.nodes.allowCommands/gateway.nodes.denyCommands: moldagem global de allow/deny para comandos de node declarados após pareamento e avaliação da lista de permissões da plataforma. UseallowCommandspara optar por comandos perigosos de node, comocamera.snap,camera.clipescreen.record;denyCommandsremove um comando mesmo que um padrão de plataforma ou permissão explícita o incluísse. Depois que um node altera sua lista de comandos declarados, rejeite e reaprove o pareamento desse dispositivo para que o Gateway armazene o snapshot de comandos atualizado.gateway.tools.deny: nomes de ferramentas adicionais bloqueados para HTTPPOST /tools/invoke(estende a lista de negação padrão).gateway.tools.allow: remove nomes de ferramentas da lista de negação HTTP padrão.
Endpoints compatíveis com OpenAI
- Chat Completions: desativado por padrão. Habilite com
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Proteção reforçada de entrada por URL da Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistListas de permissões vazias são tratadas como não definidas; usegateway.http.endpoints.responses.files.allowUrl=falsee/ougateway.http.endpoints.responses.images.allowUrl=falsepara desativar a busca por URL.
- Cabeçalho opcional de proteção reforçada de resposta:
gateway.http.securityHeaders.strictTransportSecurity(defina somente para origens HTTPS que você controla; consulte Auth de proxy confiável)
Isolamento de múltiplas instâncias
Execute vários gateways em um host com portas e diretórios de estado exclusivos:--dev (usa ~/.openclaw-dev + porta 19001), --profile <name> (usa ~/.openclaw-<name>).
Consulte Múltiplos Gateways.
gateway.tls
enabled: habilita a terminação TLS no listener do Gateway (HTTPS/WSS) (padrão:false).autoGenerate: gera automaticamente um par cert/key local autoassinado quando arquivos explícitos não estão configurados; somente para uso local/dev.certPath: caminho do sistema de arquivos para o arquivo de certificado TLS.keyPath: caminho do sistema de arquivos para o arquivo de chave privada TLS; mantenha com permissão restrita.caPath: caminho opcional do bundle de CA para verificação de cliente ou cadeias de confiança personalizadas.
gateway.reload
mode: controla como edições de configuração são aplicadas em runtime."off": ignora edições ao vivo; mudanças exigem uma reinicialização explícita."restart": sempre reinicia o processo do Gateway ao mudar a configuração."hot": aplica mudanças no processo sem reiniciar."hybrid"(padrão): tenta hot reload primeiro; recorre à reinicialização se necessário.
debounceMs: janela de debounce em ms antes que mudanças de configuração sejam aplicadas (inteiro não negativo).deferralTimeoutMs: tempo máximo opcional em ms para aguardar operações em andamento antes de forçar uma reinicialização ou hot reload de canal. Omita para usar a espera limitada padrão (300000); defina0para aguardar indefinidamente e registrar avisos periódicos de ainda pendente.
Hooks
Authorization: Bearer <token> ou x-openclaw-token: <token>.
Tokens de hook em query strings são rejeitados.
Observações de validação e segurança:
hooks.enabled=trueexige umhooks.tokennão vazio.hooks.tokendeve ser distinto degateway.auth.token; reutilizar o token do Gateway é rejeitado.hooks.pathnão pode ser/; use um subcaminho dedicado, como/hooks.- Se
hooks.allowRequestSessionKey=true, restrinjahooks.allowedSessionKeyPrefixes(por exemplo,["hook:"]). - Se um mapeamento ou preset usar um
sessionKeycom template, definahooks.allowedSessionKeyPrefixesehooks.allowRequestSessionKey=true. Chaves de mapeamento estáticas não exigem essa adesão.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeydo payload da solicitação é aceito somente quandohooks.allowRequestSessionKey=true(padrão:false).
POST /hooks/<name>→ resolvido viahooks.mappings- Valores de
sessionKeyde mapeamento renderizados por template são tratados como fornecidos externamente e também exigemhooks.allowRequestSessionKey=true.
- Valores de
Mapping details
Mapping details
match.pathcorresponde ao subcaminho após/hooks(por exemplo,/hooks/gmail→gmail).match.sourcecorresponde a um campo do payload para caminhos genéricos.- Templates como
{{messages[0].subject}}leem a partir do payload. transformpode apontar para um módulo JS/TS que retorna uma ação de hook.transform.moduledeve ser um caminho relativo e permanece dentro dehooks.transformsDir(caminhos absolutos e travessia são rejeitados).- Mantenha
hooks.transformsDirem~/.openclaw/hooks/transforms; diretórios de Skills do workspace são rejeitados. Seopenclaw doctorrelatar esse caminho como inválido, mova o módulo de transformação para o diretório de transformações de hooks ou removahooks.transformsDir.
agentIdroteia para um agente específico; IDs desconhecidos retornam ao padrão.allowedAgentIds: restringe o roteamento explícito (*ou omitido = permite todos,[]= nega todos).defaultSessionKey: chave de sessão fixa opcional para execuções de agente de hook semsessionKeyexplícito.allowRequestSessionKey: permite que chamadores de/hooks/agente chaves de sessão de mapeamento orientadas por template definamsessionKey(padrão:false).allowedSessionKeyPrefixes: allowlist opcional de prefixos para valores explícitos desessionKey(solicitação + mapeamento), por exemplo["hook:"]. Ela se torna obrigatória quando qualquer mapeamento ou preset usa umsessionKeycom template.deliver: trueenvia a resposta final para um canal;channelusalastpor padrão.modelsubstitui o LLM para esta execução de hook (deve ser permitido se o catálogo de modelos estiver definido).
Integração com Gmail
- O preset integrado do Gmail usa
sessionKey: "hook:gmail:{{messages[0].id}}". - Se você mantiver esse roteamento por mensagem, defina
hooks.allowRequestSessionKey: truee restrinjahooks.allowedSessionKeyPrefixespara corresponder ao namespace do Gmail, por exemplo["hook:", "hook:gmail:"]. - Se você precisar de
hooks.allowRequestSessionKey: false, substitua o preset por umsessionKeyestático em vez do padrão com template.
- O Gateway inicia automaticamente
gog gmail watch servena inicialização quando configurado. DefinaOPENCLAW_SKIP_GMAIL_WATCHER=1para desabilitar. - Não execute um
gog gmail watch serveseparado junto com o Gateway.
Host do plugin Canvas
- Serve HTML/CSS/JS editável por agente e A2UI via HTTP sob a porta do Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Somente local: mantenha
gateway.bind: "loopback"(padrão). - Binds não loopback: rotas do canvas exigem autenticação do Gateway (token/senha/proxy confiável), igual a outras superfícies HTTP do Gateway.
- Node WebViews normalmente não enviam cabeçalhos de autenticação; depois que um node é pareado e conectado, o Gateway anuncia URLs de capacidade com escopo de node para acesso a canvas/A2UI.
- URLs de capacidade são vinculadas à sessão WS ativa do node e expiram rapidamente. Fallback baseado em IP não é usado.
- Injeta o cliente de live reload no HTML servido.
- Cria automaticamente um
index.htmlinicial quando vazio. - Também serve A2UI em
/__openclaw__/a2ui/. - Alterações exigem uma reinicialização do gateway.
- Desabilite live reload para diretórios grandes ou erros
EMFILE.
Descoberta
mDNS (Bonjour)
minimal(padrão quando o pluginbonjourintegrado está habilitado): omitecliPath+sshPortdos registros TXT.full: incluicliPath+sshPort; a publicidade multicast na LAN ainda exige que o pluginbonjourintegrado esteja habilitado.off: suprime a publicidade multicast na LAN sem alterar a habilitação do plugin.- O plugin
bonjourintegrado inicia automaticamente em hosts macOS e é opcional em implantações do Gateway em Linux, Windows e containers. - O nome do host usa o nome de host do sistema por padrão quando ele é um rótulo DNS válido, com fallback para
openclaw. Substitua comOPENCLAW_MDNS_HOSTNAME.
Área ampla (DNS-SD)
~/.openclaw/dns/. Para descoberta entre redes, combine com um servidor DNS (CoreDNS recomendado) + DNS dividido do Tailscale.
Configuração: openclaw dns setup --apply.
Ambiente
env (variáveis de ambiente inline)
- Variáveis de ambiente inline só são aplicadas se o ambiente do processo não tiver a chave.
- Arquivos
.env:.envdo CWD +~/.openclaw/.env(nenhum sobrescreve variáveis existentes). shellEnv: importa chaves esperadas ausentes do perfil do seu shell de login.- Consulte Ambiente para a precedência completa.
Substituição de variáveis de ambiente
Referencie variáveis de ambiente em qualquer string de configuração com${VAR_NAME}:
- Somente nomes em maiúsculas correspondem:
[A-Z_][A-Z0-9_]*. - Variáveis ausentes/vazias geram um erro no carregamento da configuração.
- Escape com
$${VAR}para um literal${VAR}. - Funciona com
$include.
Segredos
Referências a segredos são aditivas: valores em texto claro ainda funcionam.SecretRef
Use um formato de objeto:
- Padrão de
provider:^[a-z][a-z0-9_-]{0,63}$ - Padrão de id de
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - Id de
source: "file": ponteiro JSON absoluto (por exemplo"/providers/openai/apiKey") - Padrão de id de
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - Ids de
source: "exec"não devem conter segmentos de caminho delimitados por barras.ou..(por exemplo,a/../bé rejeitado)
Superfície de credenciais compatível
- Matriz canônica: Superfície de credenciais SecretRef
- Os destinos de
secrets applyoferecem suporte a caminhos de credenciais deopenclaw.json. - Referências de
auth-profiles.jsonsão incluídas na resolução de runtime e na cobertura de auditoria.
Configuração dos provedores de segredo
- O provedor
fileoferece suporte amode: "json"emode: "singleValue"(iddeve ser"value"no modo singleValue). - Caminhos dos provedores file e exec falham fechados quando a verificação de ACL do Windows está indisponível. Defina
allowInsecurePath: truesomente para caminhos confiáveis que não podem ser verificados. - O provedor
execexige um caminho decommandabsoluto e usa payloads de protocolo em stdin/stdout. - Por padrão, caminhos de comando com symlink são rejeitados. Defina
allowSymlinkCommand: truepara permitir caminhos com symlink enquanto valida o caminho de destino resolvido. - Se
trustedDirsestiver configurado, a verificação de diretório confiável se aplica ao caminho de destino resolvido. - O ambiente filho de
execé mínimo por padrão; passe variáveis necessárias explicitamente compassEnv. - Referências a segredos são resolvidas no momento da ativação em um snapshot em memória; depois, caminhos de requisição leem apenas o snapshot.
- A filtragem de superfícies ativas se aplica durante a ativação: referências não resolvidas em superfícies habilitadas fazem a inicialização/recarregamento falhar, enquanto superfícies inativas são ignoradas com diagnósticos.
Armazenamento de autenticação
- Perfis por agente são armazenados em
<agentDir>/auth-profiles.json. auth-profiles.jsonoferece suporte a referências em nível de valor (keyRefparaapi_key,tokenRefparatoken) em modos de credenciais estáticas.- Mapas planos legados de
auth-profiles.json, como{ "provider": { "apiKey": "..." } }, não são um formato de runtime;openclaw doctor --fixos reescreve para perfis de chave de API canônicosprovider:defaultcom um backup.legacy-flat.*.bak. - Perfis em modo OAuth (
auth.profiles.<id>.mode = "oauth") não oferecem suporte a credenciais de perfil de autenticação baseadas em SecretRef. - Credenciais estáticas de runtime vêm de snapshots resolvidos em memória; entradas estáticas legadas de
auth.jsonsão limpas quando descobertas. - Importações OAuth legadas vêm de
~/.openclaw/credentials/oauth.json. - Consulte OAuth.
- Comportamento de runtime de segredos e ferramentas
audit/configure/apply: Gerenciamento de segredos.
auth.cooldowns
billingBackoffHours: backoff base em horas quando um perfil falha devido a erros reais de cobrança/crédito insuficiente (padrão:5). Texto explícito de cobrança ainda pode cair aqui mesmo em respostas401/403, mas correspondedores de texto específicos do provedor permanecem limitados ao provedor que os possui (por exemplo, OpenRouterKey limit exceeded). Mensagens HTTP402repetíveis de janela de uso ou limite de gastos de organização/workspace permanecem no caminhorate_limitem vez disso.billingBackoffHoursByProvider: substituições opcionais por provedor para horas de backoff de cobrança.billingMaxHours: limite em horas para crescimento exponencial do backoff de cobrança (padrão:24).authPermanentBackoffMinutes: backoff base em minutos para falhasauth_permanentde alta confiança (padrão:10).authPermanentMaxMinutes: limite em minutos para o crescimento do backoff deauth_permanent(padrão:60).failureWindowHours: janela contínua em horas usada para contadores de backoff (padrão:24).overloadedProfileRotations: máximo de rotações de perfis de autenticação do mesmo provedor para erros de sobrecarga antes de alternar para fallback de modelo (padrão:1). Formatos de provedor ocupado, comoModelNotReadyException, caem aqui.overloadedBackoffMs: atraso fixo antes de tentar novamente uma rotação de provedor/perfil sobrecarregado (padrão:0).rateLimitedProfileRotations: máximo de rotações de perfis de autenticação do mesmo provedor para erros de limite de taxa antes de alternar para fallback de modelo (padrão:1). Esse agrupamento de limite de taxa inclui textos no formato do provedor, comoToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceedederesource exhausted.
Registro em log
- Arquivo de log padrão:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Defina
logging.filepara um caminho estável. consoleLevelaumenta paradebugquando--verbose.maxFileBytes: tamanho máximo do arquivo de log ativo em bytes antes da rotação (inteiro positivo; padrão:104857600= 100 MB). O OpenClaw mantém até cinco arquivos numerados ao lado do arquivo ativo.redactSensitive/redactPatterns: mascaramento de melhor esforço para saída do console, logs em arquivo, registros de log OTLP e texto persistido da transcrição da sessão.redactSensitive: "off"desativa apenas esta política geral de log/transcrição; superfícies de segurança de UI/ferramentas/diagnóstico ainda redigem segredos antes da emissão.
Diagnósticos
enabled: alternância mestre para saída de instrumentação (padrão:true).flags: array de strings de flags que habilitam saída de log direcionada (aceita curingas como"telegram.*"ou"*").stuckSessionWarnMs: limite de idade sem progresso em ms para classificar sessões de processamento de longa duração comosession.long_running,session.stalledousession.stuck. Resposta, ferramenta, status, bloco e progresso ACP reiniciam o temporizador; diagnósticossession.stuckrepetidos fazem backoff enquanto não houver mudança.stuckSessionAbortMs: limite de idade sem progresso em ms antes que trabalho ativo travado elegível possa ser abortado e drenado para recuperação. Quando não definido, o OpenClaw usa a janela embarcada estendida mais segura de pelo menos 10 minutos e 5xstuckSessionWarnMs.otel.enabled: habilita o pipeline de exportação OpenTelemetry (padrão:false). Para a configuração completa, catálogo de sinais e modelo de privacidade, consulte exportação OpenTelemetry.otel.endpoint: URL do coletor para exportação OTel.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: endpoints OTLP opcionais específicos por sinal. Quando definidos, substituemotel.endpointapenas para esse sinal.otel.protocol:"http/protobuf"(padrão) ou"grpc".otel.headers: cabeçalhos extras de metadados HTTP/gRPC enviados com solicitações de exportação OTel.otel.serviceName: nome do serviço para atributos de recurso.otel.traces/otel.metrics/otel.logs: habilita exportação de traces, métricas ou logs.otel.sampleRate: taxa de amostragem de trace0-1.otel.flushIntervalMs: intervalo periódico de envio de telemetria em ms.otel.captureContent: captura opcional de conteúdo bruto para atributos de span OTEL. Desativada por padrão. Booleanotruecaptura conteúdo de mensagens/ferramentas que não seja do sistema; a forma de objeto permite habilitarinputMessages,outputMessages,toolInputs,toolOutputsesystemPromptexplicitamente.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental: alternância de ambiente para os atributos experimentais mais recentes do provedor de spans GenAI. Por padrão, spans mantêm o atributo legadogen_ai.systempor compatibilidade; métricas GenAI usam atributos semânticos limitados.OPENCLAW_OTEL_PRELOADED=1: alternância de ambiente para hosts que já registraram um SDK OpenTelemetry global. O OpenClaw então pula a inicialização/desligamento do SDK pertencente ao Plugin enquanto mantém listeners de diagnóstico ativos.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,OTEL_EXPORTER_OTLP_METRICS_ENDPOINTeOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: variáveis de ambiente de endpoint específicas por sinal usadas quando a chave de configuração correspondente não está definida.cacheTrace.enabled: registra snapshots de trace de cache para execuções embarcadas (padrão:false).cacheTrace.filePath: caminho de saída para JSONL de trace de cache (padrão:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: controlam o que é incluído na saída de trace de cache (todos padrão:true).
Atualização
channel: canal de lançamento para instalações npm/git -"stable","beta"ou"dev".checkOnStart: verifica atualizações npm quando o gateway inicia (padrão:true).auto.enabled: habilita atualização automática em segundo plano para instalações de pacote (padrão:false).auto.stableDelayHours: atraso mínimo em horas antes da aplicação automática no canal estável (padrão:6; máximo:168).auto.stableJitterHours: janela extra em horas para distribuir o rollout no canal estável (padrão:12; máximo:168).auto.betaCheckIntervalHours: frequência em horas das verificações do canal beta (padrão:1; máximo:24).
ACP
enabled: gate global do recurso ACP (padrão:true; definafalsepara ocultar dispatch ACP e opções de spawn).dispatch.enabled: gate independente para dispatch de turnos de sessão ACP (padrão:true). Definafalsepara manter comandos ACP disponíveis enquanto bloqueia a execução.backend: id padrão do backend de runtime ACP (deve corresponder a um Plugin de runtime ACP registrado). Instale primeiro o Plugin de backend e, seplugins.allowestiver definido, inclua o id do Plugin de backend (por exemplo,acpx) ou o backend ACP não será carregado.defaultAgent: id do agente alvo ACP de fallback quando spawns não especificam um alvo explícito.allowedAgents: lista de permissão de ids de agentes permitidos para sessões de runtime ACP; vazio significa nenhuma restrição adicional.maxConcurrentSessions: número máximo de sessões ACP ativas simultaneamente.stream.coalesceIdleMs: janela de envio ocioso em ms para texto transmitido.stream.maxChunkChars: tamanho máximo de chunk antes de dividir a projeção de bloco transmitido.stream.repeatSuppression: suprime linhas de status/ferramenta repetidas por turno (padrão:true).stream.deliveryMode:"live"transmite incrementalmente;"final_only"mantém em buffer até eventos terminais do turno.stream.hiddenBoundarySeparator: separador antes do texto visível após eventos de ferramenta ocultos (padrão:"paragraph").stream.maxOutputChars: máximo de caracteres de saída do assistente projetados por turno ACP.stream.maxSessionUpdateChars: máximo de caracteres para linhas projetadas de status/atualização ACP.stream.tagVisibility: registro de nomes de tags para substituições booleanas de visibilidade em eventos transmitidos.runtime.ttlMinutes: TTL ocioso em minutos para workers de sessão ACP antes de ficarem elegíveis para limpeza.runtime.installCommand: comando de instalação opcional a executar ao inicializar um ambiente de runtime ACP.
CLI
cli.banner.taglineModecontrola o estilo da frase do banner:"random"(padrão): frases rotativas engraçadas/sazonais."default": frase neutra fixa (All your chats, one OpenClaw.)."off": sem texto de frase (título/versão do banner ainda são exibidos).
- Para ocultar o banner inteiro (não apenas as frases), defina a env
OPENCLAW_HIDE_BANNER=1.
Assistente
Metadados gravados por fluxos guiados de configuração da CLI (onboard, configure, doctor):
Identidade
Veja os campos de identidade deagents.list em Padrões do agente.
Ponte (legado, removida)
As builds atuais não incluem mais a ponte TCP. Nodes conectam pelo WebSocket do Gateway. Chavesbridge.* não fazem mais parte do esquema de configuração (a validação falha até que sejam removidas; openclaw doctor --fix pode remover chaves desconhecidas).
Configuração legada da ponte (referência histórica)
Configuração legada da ponte (referência histórica)
Cron
sessionRetention: por quanto tempo manter sessões concluídas de execuções cron isoladas antes de podá-las desessions.json. Também controla a limpeza de transcrições cron arquivadas e excluídas. Padrão:24h; defina comofalsepara desabilitar.runLog.maxBytes: tamanho máximo por arquivo de log de execução (cron/runs/<jobId>.jsonl) antes da poda. Padrão:2_000_000bytes.runLog.keepLines: linhas mais recentes mantidas quando a poda do log de execução é acionada. Padrão:2000.webhookToken: token bearer usado para entrega de POST de Webhook do cron (delivery.mode = "webhook"); se omitido, nenhum cabeçalho de autenticação é enviado.webhook: URL de Webhook legado preterido de fallback (http/https) usada apenas para jobs armazenados que ainda têmnotify: true.
cron.retry
maxAttempts: número máximo de novas tentativas para jobs de execução única em erros transitórios (padrão:3; intervalo:0-10).backoffMs: array de atrasos de backoff em ms para cada tentativa de repetição (padrão:[30000, 60000, 300000]; 1 a 10 entradas).retryOn: tipos de erro que acionam novas tentativas -"rate_limit","overloaded","network","timeout","server_error". Omita para tentar novamente todos os tipos transitórios.
cron.failureAlert
enabled: habilita alertas de falha para jobs cron (padrão:false).after: falhas consecutivas antes de um alerta disparar (inteiro positivo, mín.:1).cooldownMs: mínimo de milissegundos entre alertas repetidos para o mesmo job (inteiro não negativo).includeSkipped: conta execuções ignoradas consecutivas para o limite do alerta (padrão:false). Execuções ignoradas são rastreadas separadamente e não afetam o backoff de erro de execução.mode: modo de entrega -"announce"envia por meio de uma mensagem de canal;"webhook"publica no Webhook configurado.accountId: id opcional de conta ou canal para delimitar o escopo da entrega do alerta.
cron.failureDestination
- Destino padrão para notificações de falha de cron em todos os jobs.
mode:"announce"ou"webhook"; o padrão é"announce"quando existem dados de destino suficientes.channel: substituição de canal para entrega por anúncio."last"reutiliza o último canal de entrega conhecido.to: destino explícito de anúncio ou URL de Webhook. Obrigatório para o modo Webhook.accountId: substituição opcional de conta para entrega.delivery.failureDestinationpor job substitui esse padrão global.- Quando nenhum destino de falha global nem por job é definido, jobs que já entregam via
announceusam esse destino principal de anúncio como fallback em caso de falha. delivery.failureDestinationsó é compatível com jobssessionTarget="isolated", a menos que odelivery.modeprincipal do job seja"webhook".
Variáveis de template do modelo de mídia
Placeholders de template expandidos emtools.media.models[].args:
| Variável | Descrição |
|---|---|
{{Body}} | Corpo completo da mensagem recebida |
{{RawBody}} | Corpo bruto (sem wrappers de histórico/remetente) |
{{BodyStripped}} | Corpo com menções de grupo removidas |
{{From}} | Identificador do remetente |
{{To}} | Identificador do destino |
{{MessageSid}} | id da mensagem do canal |
{{SessionId}} | UUID da sessão atual |
{{IsNewSession}} | "true" quando uma nova sessão é criada |
{{MediaUrl}} | Pseudo-URL da mídia recebida |
{{MediaPath}} | Caminho local da mídia |
{{MediaType}} | Tipo de mídia (imagem/áudio/documento/…) |
{{Transcript}} | Transcrição de áudio |
{{Prompt}} | Prompt de mídia resolvido para entradas da CLI |
{{MaxChars}} | Máx. de caracteres de saída resolvido para entradas da CLI |
{{ChatType}} | "direct" ou "group" |
{{GroupSubject}} | Assunto do grupo (melhor esforço) |
{{GroupMembers}} | Prévia dos membros do grupo (melhor esforço) |
{{SenderName}} | Nome de exibição do remetente (melhor esforço) |
{{SenderE164}} | Número de telefone do remetente (melhor esforço) |
{{Provider}} | Dica do provedor (whatsapp, telegram, discord etc.) |
Inclusões de configuração ($include)
Divida a configuração em vários arquivos:
- Arquivo único: substitui o objeto contêiner.
- Array de arquivos: mesclado profundamente em ordem (posteriores substituem anteriores).
- Chaves irmãs: mescladas após as inclusões (substituem valores incluídos).
- Inclusões aninhadas: até 10 níveis de profundidade.
- Caminhos: resolvidos em relação ao arquivo que inclui, mas devem permanecer dentro do diretório de configuração de nível superior (
dirnamedeopenclaw.json). Formas absolutas/../são permitidas apenas quando ainda são resolvidas dentro desse limite. - Escritas de propriedade do OpenClaw que alteram apenas uma seção de nível superior apoiada por uma inclusão de arquivo único escrevem diretamente nesse arquivo incluído. Por exemplo,
plugins installatualizaplugins: { $include: "./plugins.json5" }emplugins.json5e deixaopenclaw.jsonintacto. - Inclusões raiz, arrays de inclusão e inclusões com substituições irmãs são somente leitura para escritas de propriedade do OpenClaw; essas escritas falham de modo fechado em vez de achatar a configuração.
- Erros: mensagens claras para arquivos ausentes, erros de análise e inclusões circulares.
Relacionados: Configuração · Exemplos de configuração · Doctor