Comandos de barra
Os comandos são tratados pelo Gateway. A maioria dos comandos deve ser enviada como uma mensagem independente que começa com/.
O comando de chat bash exclusivo do host usa ! <cmd> (com /bash <cmd> como alias).
Há dois sistemas relacionados:
- Comandos: mensagens
/...independentes. - Diretivas:
/think,/verbose,/reasoning,/elevated,/exec,/model,/queue.- As diretivas são removidas da mensagem antes que o modelo a veja.
- Em mensagens de chat normais (não apenas diretivas), elas são tratadas como “dicas inline” e não persistem as configurações da sessão.
- Em mensagens somente com diretivas (a mensagem contém apenas diretivas), elas persistem na sessão e respondem com um reconhecimento.
- As diretivas são aplicadas apenas para remetentes autorizados. As diretivas só são aplicadas para remetentes autorizados (listas de permissões/pareamento do canal mais
commands.useAccessGroups). Remetentes não autorizados veem as diretivas tratadas como texto simples.
/help, /commands, /status, /whoami (/id).
Eles executam imediatamente, são removidos antes que o modelo veja a mensagem, e o texto restante continua pelo fluxo normal.
Configuração
commands.text(padrãotrue) habilita a análise de/...em mensagens de chat.- Em superfícies sem comandos nativos (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), comandos de texto ainda funcionam mesmo se você definir isso como
false.
- Em superfícies sem comandos nativos (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), comandos de texto ainda funcionam mesmo se você definir isso como
commands.native(padrão"auto") registra comandos nativos.- Auto: ligado para Discord/Telegram; desligado para Slack (até você adicionar comandos de barra); ignorado para provedores sem suporte nativo.
- Defina
channels.discord.commands.native,channels.telegram.commands.nativeouchannels.slack.commands.nativepara substituir por provedor (bool ou"auto"). falselimpa comandos registrados anteriormente no Discord/Telegram na inicialização. Comandos do Slack são gerenciados no app do Slack e não são removidos automaticamente.
commands.nativeSkills(padrão"auto") registra comandos de skill nativamente quando compatível.- Auto: ligado para Discord/Telegram; desligado para Slack (o Slack exige criar um comando de barra por skill).
- Defina
channels.discord.commands.nativeSkills,channels.telegram.commands.nativeSkillsouchannels.slack.commands.nativeSkillspara substituir por provedor (bool ou"auto").
commands.bash(padrãofalse) habilita! <cmd>para executar comandos de shell do host (/bash <cmd>é um alias; requer listas de permissõestools.elevated).commands.bashForegroundMs(padrão2000) controla quanto tempo o bash espera antes de alternar para o modo em segundo plano (0envia imediatamente para segundo plano).commands.config(padrãofalse) habilita/config(leitura/gravação deopenclaw.json).commands.debug(padrãofalse) habilita/debug(substituições apenas em tempo de execução).commands.allowFrom(opcional) define uma lista de permissões por provedor para autorização de comandos. Quando configurado, é a única fonte de autorização para comandos e diretivas (as listas de permissões/pareamento de canal ecommands.useAccessGroupssão ignoradas). Use"*"como padrão global; chaves específicas de provedor o substituem.commands.useAccessGroups(padrãotrue) aplica listas de permissões/políticas para comandos.
Lista de comandos
Texto + nativo (quando habilitado):/help/commands/skill <name> [input](executar uma skill pelo nome)/status(mostrar status atual; inclui uso/cota do provedor para o provedor de modelo atual quando disponível)/allowlist(listar/adicionar/remover entradas da lista de permissões)/approve <id> allow-once|allow-always|deny(resolver prompts de aprovação de execução)/context [list|detail|json](explicar “contexto”;detailmostra tamanho por arquivo + por ferramenta + por skill + prompt do sistema)/whoami(mostrar seu id de remetente; alias:/id)/subagents list|stop|log|info|send(inspecionar, parar, registrar logs ou enviar mensagens para execuções de subagentes da sessão atual)/kill <id|#|all>(interrompe imediatamente um ou todos os subagentes em execução nesta sessão; sem mensagem de confirmação)/steer <id|#> <message>(direciona um subagente em execução imediatamente: durante a execução quando possível, caso contrário interrompe o trabalho atual e reinicia com a mensagem de direcionamento)/tell <id|#> <message>(alias para/steer)/config show|get|set|unset(persistir configuração em disco, apenas proprietário; requercommands.config: true)/debug show|set|unset|reset(substituições em tempo de execução, apenas proprietário; requercommands.debug: true)/usage off|tokens|full|cost(rodapé de uso por resposta ou resumo local de custos)/tts off|always|inbound|tagged|status|provider|limit|summary|audio(controlar TTS; veja /tts)- Discord: o comando nativo é
/voice(o Discord reserva/tts); o texto/ttsainda funciona.
- Discord: o comando nativo é
/stop/restart/dock-telegram(alias:/dock_telegram) (alternar respostas para o Telegram)/dock-discord(alias:/dock_discord) (alternar respostas para o Discord)/dock-slack(alias:/dock_slack) (alternar respostas para o Slack)/activation mention|always(somente grupos)/send on|off|inherit(apenas proprietário)/resetou/new [model](dica opcional de modelo; o restante é repassado)/think <off|minimal|low|medium|high|xhigh>(escolhas dinâmicas por modelo/provedor; aliases:/thinking,/t)/verbose on|full|off(alias:/v)/reasoning on|off|stream(alias:/reason; quando ligado, envia uma mensagem separada prefixada comReasoning:;stream= rascunho apenas do Telegram)/elevated on|off|ask|full(alias:/elev;fullignora aprovações de execução)/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>(enviar/execpara mostrar o atual)/model <name>(alias:/models; ou/<alias>a partir deagents.defaults.models.*.alias)/queue <mode>(mais opções comodebounce:2s cap:25 drop:summarize; envie/queuepara ver as configurações atuais)/bash <command>(somente host; alias para! <command>; requer listas de permissõescommands.bash: true+tools.elevated)
/compact [instructions](veja /concepts/compaction)! <command>(somente host; um por vez; use!poll+!stoppara trabalhos de longa duração)!poll(verificar saída/status; aceitasessionIdopcional;/bash polltambém funciona)!stop(parar o trabalho bash em execução; aceitasessionIdopcional;/bash stoptambém funciona)
- Os comandos aceitam um
:opcional entre o comando e os argumentos (por exemplo,/think: high,/send: on,/help:). /new <model>aceita um alias de modelo,provider/modelou um nome de provedor (correspondência aproximada); se não houver correspondência, o texto é tratado como o corpo da mensagem.- Para a divisão completa de uso por provedor, use
openclaw status --usage. /allowlist add|removerequercommands.config=truee respeitaconfigWritesdo canal./usagecontrola o rodapé de uso por resposta;/usage costimprime um resumo local de custos a partir dos logs de sessão do OpenClaw./restartvem desativado por padrão; definacommands.restart: truepara habilitá-lo./verboseé destinado a depuração e visibilidade extra; mantenha desligado no uso normal./reasoning(e/verbose) são arriscados em configurações de grupo: podem revelar raciocínio interno ou saída de ferramentas que você não pretendia expor. Prefira deixá-los desligados, especialmente em chats de grupo.- Caminho rápido: mensagens somente de comando de remetentes na lista de permissões são tratadas imediatamente (ignoram fila + modelo).
- Controle por menção em grupo: mensagens somente de comando de remetentes na lista de permissões ignoram requisitos de menção.
- Atalhos inline (somente remetentes na lista de permissões): certos comandos também funcionam quando incorporados em uma mensagem normal e são removidos antes que o modelo veja o texto restante.
- Exemplo:
hey /statusaciona uma resposta de status, e o texto restante continua pelo fluxo normal.
- Exemplo:
- Atualmente:
/help,/commands,/status,/whoami(/id). - Mensagens somente de comando não autorizadas são ignoradas silenciosamente, e tokens inline
/...são tratados como texto simples. - Comandos de skill: skills
user-invocablesão expostas como comandos de barra. Os nomes são sanitizados paraa-z0-9_(máx. 32 caracteres); colisões recebem sufixos numéricos (por exemplo,_2)./skill <name> [input]executa uma skill pelo nome (útil quando limites de comandos nativos impedem comandos por skill).- Por padrão, comandos de skill são encaminhados ao modelo como uma solicitação normal.
- Skills podem opcionalmente declarar
command-dispatch: toolpara rotear o comando diretamente para uma ferramenta (determinístico, sem modelo). - Exemplo:
/prose(plugin OpenProse) — veja OpenProse.
- Argumentos de comandos nativos: o Discord usa autocomplete para opções dinâmicas (e menus de botão quando você omite argumentos obrigatórios). Telegram e Slack mostram um menu de botões quando um comando oferece escolhas e você omite o argumento.
Superfícies de uso (o que aparece onde)
- Uso/cota do provedor (exemplo: “Claude 80% restante”) aparece em
/statuspara o provedor de modelo atual quando o rastreamento de uso está habilitado. - Tokens/custo por resposta é controlado por
/usage off|tokens|full(anexado às respostas normais). /model statustrata de modelos/autenticação/endpoints, não de uso.
Seleção de modelo (/model)
/model é implementado como uma diretiva.
Exemplos:
/modele/model listmostram um seletor compacto e numerado (família do modelo + provedores disponíveis)./model <#>seleciona a partir desse seletor (e prefere o provedor atual quando possível)./model statusmostra a visão detalhada, incluindo o endpoint do provedor configurado (baseUrl) e o modo de API (api) quando disponível.
Debug overrides
/debug permite definir substituições de configuração apenas em tempo de execução (memória, não disco). Apenas proprietário. Desativado por padrão; habilite com commands.debug: true.
Exemplos:
- As substituições se aplicam imediatamente a novas leituras de configuração, mas não gravam em
openclaw.json. - Use
/debug resetpara limpar todas as substituições e retornar à configuração em disco.
Atualizações de configuração
/config grava na sua configuração em disco (openclaw.json). Apenas proprietário. Desativado por padrão; habilite com commands.config: true.
Exemplos:
- A configuração é validada antes da gravação; alterações inválidas são rejeitadas.
- Atualizações
/configpersistem entre reinicializações.
Notas de superfície
- Comandos de texto executam na sessão normal de chat (DMs compartilham
main, grupos têm sua própria sessão). - Comandos nativos usam sessões isoladas:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(prefixo configurável viachannels.slack.slashCommand.sessionPrefix) - Telegram:
telegram:slash:<userId>(direciona para a sessão do chat viaCommandTargetSessionKey)
- Discord:
/stopdireciona a sessão de chat ativa para que possa abortar a execução atual.- Slack:
channels.slack.slashCommandainda é compatível para um único comando no estilo/openclaw. Se você habilitarcommands.native, deve criar um comando de barra do Slack por comando embutido (mesmos nomes que/help). Menus de argumentos de comando para o Slack são entregues como botões efêmeros do Block Kit.