channels.*. Abrange acesso a DMs e grupos,
configurações com várias contas, controle por menção e chaves por canal para Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage e os outros plugins de canal incluídos.
Para agentes, ferramentas, runtime do gateway e outras chaves de nível superior, consulte
Referência de configuração.
Canais
Cada canal inicia automaticamente quando sua seção de configuração existe (a menos queenabled: false).
Acesso a DMs e grupos
Todos os canais aceitam políticas de DM e políticas de grupo:| Política de DM | Comportamento |
|---|---|
pairing (padrão) | Remetentes desconhecidos recebem um código de pareamento único; o proprietário deve aprovar |
allowlist | Somente remetentes em allowFrom (ou no armazenamento de permissões pareadas) |
open | Permite todas as DMs recebidas (requer allowFrom: ["*"]) |
disabled | Ignora todas as DMs recebidas |
| Política de grupo | Comportamento |
|---|---|
allowlist (padrão) | Somente grupos que correspondem à allowlist configurada |
open | Ignora allowlists de grupo (o controle por menção ainda se aplica) |
disabled | Bloqueia todas as mensagens de grupo/sala |
channels.defaults.groupPolicy define o padrão quando o groupPolicy de um provedor não está definido.
Códigos de pareamento expiram após 1 hora. Solicitações pendentes de pareamento por DM são limitadas a 3 por canal.
Se um bloco de provedor estiver totalmente ausente (channels.<provider> ausente), a política de grupo do runtime volta para allowlist (falha fechada) com um aviso na inicialização.Substituições de modelo por canal
Usechannels.modelByChannel para fixar IDs de canal específicos ou pares de mensagem direta a um modelo. Os valores aceitam provider/model ou aliases de modelo configurados. O mapeamento de canal se aplica quando uma sessão ainda não tem uma substituição de modelo (por exemplo, definida via /model).
Para conversas em grupo/thread, as chaves são IDs de grupo específicos do canal, IDs de tópico ou nomes de canal. Para conversas de mensagem direta (DM), as chaves são identificadores de pares derivados da identidade do remetente do canal (nativeDirectUserId, origin.from, origin.to, OriginatingTo, From ou SenderId). O formato exato da chave depende do canal:
| Canal | Formato da chave de DM | Exemplo |
|---|---|---|
| Slack | user:U... | user:U12345 |
| Telegram | ID de usuário bruto | 123456789 |
| Discord | ID de usuário bruto | 987654321 |
| número de telefone ou JID | 15551234567 | |
| Matrix | ID de usuário Matrix | @user:matrix.org |
| Feishu | feishu:ou_... | feishu:ou_a8b6cab7e945387de5f253775d9b4d85 |
Padrões de canal e Heartbeat
Usechannels.defaults para comportamento compartilhado de política de grupo e Heartbeat entre provedores:
channels.defaults.groupPolicy: política de grupo de fallback quando umgroupPolicyno nível do provedor não está definido.channels.defaults.contextVisibility: modo padrão de visibilidade de contexto suplementar para todos os canais. Valores:all(padrão, inclui todo o contexto de citações/threads/histórico),allowlist(inclui apenas contexto de remetentes na allowlist),allowlist_quote(igual a allowlist, mas mantém contexto explícito de citação/resposta). Substituição por canal:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: inclui status de canais saudáveis na saída do Heartbeat.channels.defaults.heartbeat.showAlerts: inclui status degradados/com erro na saída do Heartbeat.channels.defaults.heartbeat.useIndicator: renderiza saída compacta do Heartbeat em estilo de indicador.
- Entradas
bindings[]de nível superior comtype: "acp"configuram vinculações ACP persistentes para DMs e grupos do WhatsApp. Use um número direto E.164 ou JID de grupo do WhatsApp emmatch.peer.id. A semântica dos campos é compartilhada em Agentes ACP.
Multi-account WhatsApp
Multi-account WhatsApp
- Comandos de saída usam por padrão a conta
default, se presente; caso contrário, o primeiro ID de conta configurado (ordenado). - O
channels.whatsapp.defaultAccountopcional substitui essa seleção padrão de conta de fallback quando corresponde a um ID de conta configurado. - O diretório de autenticação legado de conta única do Baileys é migrado por
openclaw doctorparawhatsapp/default. - Substituições por conta:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token do bot:
channels.telegram.botTokenouchannels.telegram.tokenFile(somente arquivo regular; symlinks rejeitados), comTELEGRAM_BOT_TOKENcomo fallback para a conta padrão. apiRooté apenas a raiz da API de Bot do Telegram. Usehttps://api.telegram.orgou sua raiz auto-hospedada/proxy, nãohttps://api.telegram.org/bot<TOKEN>;openclaw doctor --fixremove um sufixo/bot<TOKEN>final acidental.- Para um servidor de API de Bot auto-hospedado no modo
--local,trustedLocalFileRootslista caminhos de host que o OpenClaw pode ler. Monte o volume de dados do servidor no host do OpenClaw e configure a raiz de dados dele ou o diretório por token; caminhos de contêiner em/var/lib/telegram-bot-apisão mapeados para essas raízes. Outros caminhos absolutos continuam rejeitados. - O
channels.telegram.defaultAccountopcional substitui a seleção de conta padrão quando corresponde a um ID de conta configurado. - Em configurações com várias contas (2+ IDs de conta), defina um padrão explícito (
channels.telegram.defaultAccountouchannels.telegram.accounts.default) para evitar roteamento de fallback;openclaw doctoravisa quando isso está ausente ou inválido. configWrites: falsebloqueia gravações de configuração iniciadas pelo Telegram (migrações de ID de supergrupo,/config set|unset).- Entradas
bindings[]de nível superior comtype: "acp"configuram vinculações ACP persistentes para tópicos de fórum (usechatId:topic:topicIdcanônico emmatch.peer.id). A semântica dos campos é compartilhada em Agentes ACP. - Pré-visualizações de stream do Telegram usam
sendMessage+editMessageText(funciona em chats diretos e de grupo). - Política de nova tentativa: consulte Política de nova tentativa.
Discord
- Token:
channels.discord.token, comDISCORD_BOT_TOKENcomo fallback para a conta padrão. - Chamadas diretas de saída que fornecem um
tokenexplícito do Discord usam esse token para a chamada; as configurações de nova tentativa/política da conta ainda vêm da conta selecionada no snapshot de runtime ativo. - O
channels.discord.defaultAccountopcional substitui a seleção da conta padrão quando corresponde a um id de conta configurado. - Use
user:<id>(DM) ouchannel:<id>(canal de guilda) para destinos de entrega; IDs numéricos sem prefixo são rejeitados. - Slugs de guilda ficam em minúsculas com espaços substituídos por
-; chaves de canal usam o nome em formato de slug (sem#). Prefira IDs de guilda. - Mensagens criadas por bots são ignoradas por padrão.
allowBots: trueas habilita; useallowBots: "mentions"para aceitar apenas mensagens de bots que mencionem o bot (mensagens próprias continuam filtradas). - Canais que dão suporte a mensagens de entrada criadas por bots podem usar a proteção contra loop de bot compartilhada. Defina
channels.defaults.botLoopProtectionpara orçamentos básicos de pares e substitua o canal ou a conta apenas quando uma superfície precisar de limites diferentes. channels.discord.guilds.<id>.ignoreOtherMentions(e substituições de canal) descarta mensagens que mencionam outro usuário ou função, mas não o bot (excluindo @everyone/@here).channels.discord.mentionAliasesmapeia texto@handlede saída estável para IDs de usuário do Discord antes do envio, para que colegas conhecidos possam ser mencionados de forma determinística mesmo quando o cache de diretório transitório estiver vazio. Substituições por conta ficam emchannels.discord.accounts.<accountId>.mentionAliases.maxLinesPerMessage(padrão 17) divide mensagens altas mesmo quando estão abaixo de 2000 caracteres.channels.discord.suppressEmbedsusatruepor padrão, então URLs de saída não se expandem em prévias de links do Discord a menos que isso seja desabilitado. Payloadsembedsexplícitos ainda são enviados normalmente; chamadas de ferramenta por mensagem podem substituir comsuppressEmbeds.channels.discord.threadBindingscontrola o roteamento vinculado a threads do Discord:enabled: substituição do Discord para recursos de sessão vinculada a thread (/focus,/unfocus,/agents,/session idle,/session max-agee entrega/roteamento vinculados)idleHours: substituição do Discord para auto-unfocus por inatividade em horas (0desabilita)maxAgeHours: substituição do Discord para idade máxima rígida em horas (0desabilita)spawnSessions: alternador parasessions_spawn({ thread: true })e criação/vinculação automática de thread por spawn de thread ACP (padrão:true)defaultSpawnContext: contexto nativo de subagente para spawns vinculados a thread ("fork"por padrão)
- Entradas
bindings[]de nível superior comtype: "acp"configuram vinculações ACP persistentes para canais e threads (use o id de canal/thread emmatch.peer.id). A semântica dos campos é compartilhada em Agentes ACP. channels.discord.ui.components.accentColordefine a cor de destaque para contêineres de componentes v2 do Discord.channels.discord.agentComponents.ttlMscontrola por quanto tempo callbacks de componentes do Discord enviados permanecem registrados. O padrão é1800000(30 minutos), o máximo é86400000(24 horas), e substituições por conta ficam emchannels.discord.accounts.<accountId>.agentComponents.ttlMs. Valores maiores mantêm botões/seletores/formulários antigos utilizáveis por mais tempo, então prefira o TTL mais curto que se encaixe no fluxo de trabalho.channels.discord.voicehabilita conversas em canais de voz do Discord e substituições opcionais de entrada automática + LLM + TTS. Configurações do Discord somente de texto deixam voz desativada por padrão; definachannels.discord.voice.enabled=truepara aderir.channels.discord.voice.modelsubstitui opcionalmente o modelo LLM usado para respostas em canais de voz do Discord.channels.discord.voice.daveEncryptionechannels.discord.voice.decryptionFailureTolerancesão repassados para as opções DAVE de@discordjs/voice(truee24por padrão).channels.discord.voice.connectTimeoutMscontrola a espera inicial de Ready do@discordjs/voicepara tentativas de/vc joine entrada automática (30000por padrão).channels.discord.voice.reconnectGraceMscontrola quanto tempo uma sessão de voz desconectada pode levar para entrar em sinalização de reconexão antes que o OpenClaw a destrua (15000por padrão).- A reprodução de voz do Discord não é interrompida pelo evento de início de fala de outro usuário. Para evitar loops de feedback, o OpenClaw ignora nova captura de voz enquanto o TTS está em reprodução.
- O OpenClaw também tenta recuperar o recebimento de voz saindo e entrando novamente em uma sessão de voz após falhas repetidas de descriptografia.
channels.discord.streamingé a chave canônica do modo de stream. O Discord usastreaming.mode: "progress"por padrão para que o progresso de ferramentas/trabalho apareça em uma mensagem de prévia editada; definastreaming.mode: "off"para desabilitá-lo. Valores legados destreamModeestreamingbooleano permanecem como aliases de runtime; executeopenclaw doctor --fixpara reescrever a configuração persistida.channels.discord.autoPresencemapeia disponibilidade de runtime para presença do bot (saudável => online, degradado => ocioso, esgotado => dnd) e permite substituições opcionais de texto de status.channels.discord.dangerouslyAllowNameMatchingreabilita correspondência mutável de nome/tag (modo de compatibilidade de emergência).channels.discord.execApprovals: entrega de aprovação de exec nativa do Discord e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo automático, aprovações de exec são ativadas quando aprovadores podem ser resolvidos deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Discord autorizados a aprovar solicitações de exec. Usacommands.ownerAllowFromcomo fallback quando omitido.agentFilter: allowlist opcional de IDs de agente. Omita para encaminhar aprovações para todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: para onde enviar prompts de aprovação."dm"(padrão) envia para DMs dos aprovadores,"channel"envia para o canal de origem,"both"envia para ambos. Quando o destino inclui"channel", os botões só podem ser usados por aprovadores resolvidos.cleanupAfterResolve: quandotrue, exclui DMs de aprovação após aprovação, negação ou timeout.
off (nenhuma), own (mensagens do bot, padrão), all (todas as mensagens), allowlist (de guilds.<id>.users em todas as mensagens).
Google Chat
- JSON da conta de serviço: embutido (
serviceAccount) ou baseado em arquivo (serviceAccountFile). - SecretRef da conta de serviço também é compatível (
serviceAccountRef). - Fallbacks de env:
GOOGLE_CHAT_SERVICE_ACCOUNTouGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Use
spaces/<spaceId>ouusers/<userId>para destinos de entrega. channels.googlechat.dangerouslyAllowNameMatchingreabilita correspondência mutável de principal de e-mail (modo de compatibilidade de emergência).
Slack
- Modo Socket exige
botTokeneappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENpara fallback de env da conta padrão). - Modo HTTP exige
botTokenmaissigningSecret(na raiz ou por conta). socketModerepassa o ajuste de transporte Socket Mode do Slack SDK para a API pública do receptor Bolt. Use-o apenas ao investigar timeout de ping/pong ou comportamento de websocket obsoleto.clientPingTimeoutusa15000por padrão;serverPingTimeoutepingPongLoggingEnabledsão repassados somente quando configurados.botToken,appToken,signingSecreteuserTokenaceitam strings de texto simples ou objetos SecretRef.- Snapshots de conta do Slack expõem campos de origem/status por credencial, como
botTokenSource,botTokenStatus,appTokenStatuse, no modo HTTP,signingSecretStatus.configured_unavailablesignifica que a conta está configurada por SecretRef, mas o caminho de comando/runtime atual não conseguiu resolver o valor do segredo. configWrites: falsebloqueia gravações de configuração iniciadas pelo Slack.channels.slack.defaultAccountopcional substitui a seleção da conta padrão quando corresponde a um id de conta configurado.channels.slack.streaming.modeé a chave canônica do modo de stream do Slack.channels.slack.streaming.nativeTransportcontrola o transporte de streaming nativo do Slack. Valores legadosstreamMode, booleanostreamingenativeStreamingcontinuam como aliases de runtime; executeopenclaw doctor --fixpara reescrever a configuração persistida.unfurlLinkseunfurlMediarepassam os booleanos de expansão de links e mídia dochat.postMessagedo Slack para respostas do bot.unfurlLinksusafalsepor padrão para que links de saída do bot não sejam expandidos inline, a menos que isso seja habilitado;unfurlMediaé omitido, a menos que seja configurado. Defina qualquer um dos valores emchannels.slack.accounts.<accountId>para substituir o valor de nível superior de uma conta.- Use
user:<id>(DM) ouchannel:<id>para destinos de entrega.
off, own (padrão), all, allowlist (de reactionAllowlist).
Isolamento de sessão de thread: thread.historyScope é por thread (padrão) ou compartilhado pelo canal. thread.inheritParent copia a transcrição do canal pai para novas threads.
- O streaming nativo do Slack mais o status de thread “is typing…” no estilo assistente do Slack exigem um destino de thread de resposta. DMs de nível superior permanecem fora de thread por padrão, então ainda podem fazer stream por meio de prévias de rascunho publicar-e-editar do Slack, em vez de mostrar a prévia nativa de stream/status no estilo thread.
typingReactionadiciona uma reação temporária à mensagem de entrada do Slack enquanto uma resposta está em execução, depois a remove na conclusão. Use um shortcode de emoji do Slack, como"hourglass_flowing_sand".channels.slack.execApprovals: entrega de cliente de aprovação nativa do Slack e autorização de aprovador de exec. Mesmo esquema do Discord:enabled(true/false/"auto"),approvers(IDs de usuário do Slack),agentFilter,sessionFilteretarget("dm","channel"ou"both"). Aprovações de Plugin podem usar este caminho de cliente nativo para solicitações originadas no Slack quando os aprovadores do Plugin do Slack forem resolvidos; a entrega de aprovação de Plugin nativa do Slack também pode ser habilitada por meio deapprovals.pluginpara sessões originadas no Slack ou destinos Slack. Aprovações de Plugin usam aprovadores do Plugin do Slack deallowFrome roteamento padrão, não aprovadores de exec.
| Grupo de ações | Padrão | Observações |
|---|---|---|
| reactions | habilitado | Reagir + listar reações |
| messages | habilitado | Ler/enviar/editar/excluir |
| pins | habilitado | Fixar/desafixar/listar |
| memberInfo | habilitado | Informações de membro |
| emojiList | habilitado | Lista de emojis personalizados |
Mattermost
O Mattermost é distribuído como um Plugin integrado nas versões atuais do OpenClaw. Builds mais antigas ou customizadas podem instalar um pacote npm atual comopenclaw plugins install @openclaw/mattermost. Verifique
npmjs.com/package/@openclaw/mattermost
para os dist-tags atuais antes de fixar uma versão.
oncall (responde em @-menção, padrão), onmessage (toda mensagem), onchar (mensagens que começam com prefixo de gatilho).
Quando comandos nativos do Mattermost estão habilitados:
commands.callbackPathdeve ser um caminho (por exemplo,/api/channels/mattermost/command), não uma URL completa.commands.callbackUrldeve resolver para o endpoint do Gateway do OpenClaw e ser acessível a partir do servidor Mattermost.- Callbacks slash nativos são autenticados com os tokens por comando retornados
pelo Mattermost durante o registro de comando slash. Se o registro falhar ou nenhum
comando for ativado, o OpenClaw rejeita callbacks com
Unauthorized: invalid command token. - Para hosts de callback privados/tailnet/internos, o Mattermost pode exigir que
ServiceSettings.AllowedUntrustedInternalConnectionsinclua o host/domínio de callback. Use valores de host/domínio, não URLs completas. channels.mattermost.configWrites: permite ou nega gravações de configuração iniciadas pelo Mattermost.channels.mattermost.requireMention: exige@mentionantes de responder em canais.channels.mattermost.groups.<channelId>.requireMention: substituição por canal do gate por menção ("*"para o padrão).channels.mattermost.defaultAccountopcional substitui a seleção da conta padrão quando corresponde a um id de conta configurado.
Signal
off, own (padrão), all, allowlist (de reactionAllowlist).
channels.signal.account: fixa a inicialização do canal em uma identidade de conta específica do Signal.channels.signal.configWrites: permite ou nega gravações de configuração iniciadas pelo Signal.channels.signal.defaultAccountopcional substitui a seleção da conta padrão quando corresponde a um id de conta configurado.
iMessage
O OpenClaw iniciaimsg rpc (JSON-RPC sobre stdio). Nenhum daemon ou porta é necessário. Este é o caminho preferido para novas configurações de iMessage do OpenClaw quando o host pode conceder permissões ao banco de dados do Mensagens e de Automação.
O suporte ao BlueBubbles foi removido. channels.bluebubbles não é uma superfície de configuração de runtime compatível no OpenClaw atual. Migre configurações antigas para channels.imessage; use remoção do BlueBubbles e o caminho iMessage do imsg para a versão curta e Vindo do BlueBubbles para a tabela de tradução completa.
Se o Gateway não estiver em execução no Mac conectado ao Mensagens, mantenha channels.imessage.enabled=true e defina channels.imessage.cliPath para um wrapper SSH que execute imsg "$@" nesse Mac. O caminho local padrão imsg é exclusivo do macOS.
Antes de depender de um wrapper SSH para envios de produção, verifique um imsg send de saída por meio desse wrapper exato. Alguns estados de TCC do macOS atribuem Automação do Mensagens a /usr/libexec/sshd-keygen-wrapper, o que pode fazer leituras e sondagens funcionarem enquanto envios falham com AppleEvents -1743; consulte envios do wrapper SSH falham com AppleEvents -1743.
-
channels.imessage.defaultAccountopcional substitui a seleção da conta padrão quando corresponde a um id de conta configurado. - Exige Acesso Total ao Disco ao DB do Mensagens.
-
Prefira destinos
chat_id:<id>. Useimsg chats --limit 20para listar chats. -
cliPathpode apontar para um wrapper SSH; definaremoteHost(hostouuser@host) para buscar anexos por SCP. -
attachmentRootseremoteAttachmentRootsrestringem caminhos de anexos de entrada (padrão:/Users/*/Library/Messages/Attachments). -
SCP usa verificação estrita de chave de host, então garanta que a chave do host de relay já exista em
~/.ssh/known_hosts. -
channels.imessage.configWrites: permite ou nega gravações de configuração iniciadas pelo iMessage. -
channels.imessage.sendTransport: transporte preferencial de envio RPC doimsgpara respostas normais de saída.auto(padrão) usa a ponte IMCore para chats existentes quando ela está em execução, depois faz fallback para AppleScript;bridgeexige entrega por API privada;applescriptforça o caminho público de automação do Mensagens. -
channels.imessage.actions.*: habilita ações de API privada que também são controladas por gate porimsg status/openclaw channels status --probe. -
channels.imessage.includeAttachmentsfica desativado por padrão; defina comotrueantes de esperar mídia de entrada em turnos de agente. -
A recuperação de entrada após uma reinicialização de ponte/gateway é automática (dedupe por GUID mais uma cerca de idade de backlog obsoleto). Configurações
channels.imessage.catchup.enabled: trueexistentes ainda são respeitadas como um perfil de compatibilidade obsoleto. -
channels.imessage.groups: registro de grupos e configurações por grupo. ComgroupPolicy: "allowlist", configure chaveschat_idexplícitas ou uma entrada curinga"*"para que mensagens de grupo possam passar pelo gate do registro. -
Entradas
bindings[]de nível superior comtype: "acp"podem vincular conversas do iMessage a sessões ACP persistentes. Use um identificador normalizado ou destino de chat explícito (chat_id:*,chat_guid:*,chat_identifier:*) emmatch.peer.id. Semântica de campos compartilhados: Agentes ACP.
iMessage SSH wrapper example
iMessage SSH wrapper example
Matrix
Matrix é apoiado por Plugin e configurado emchannels.matrix.
- A autenticação por token usa
accessToken; a autenticação por senha usauserId+password. channels.matrix.proxyroteia o tráfego HTTP do Matrix por um proxy HTTP(S) explícito. Contas nomeadas podem sobrescrevê-lo comchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkpermite homeservers privados/internos.proxye essa adesão de rede são controles independentes.channels.matrix.defaultAccountseleciona a conta preferencial em configurações com várias contas.channels.matrix.autoJoinusaoffpor padrão, então salas convidadas e novos convites no estilo DM são ignorados até você definirautoJoin: "allowlist"comautoJoinAllowlistouautoJoin: "always".channels.matrix.execApprovals: entrega de aprovações de exec nativa do Matrix e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo automático, aprovações de exec são ativadas quando os aprovadores podem ser resolvidos a partir deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Matrix (por exemplo,@owner:example.org) autorizados a aprovar solicitações de exec.agentFilter: allowlist opcional de IDs de agente. Omita para encaminhar aprovações para todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: para onde enviar prompts de aprovação."dm"(padrão),"channel"(sala de origem) ou"both".- Sobrescritas por conta:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrola como DMs do Matrix são agrupadas em sessões:per-user(padrão) compartilha por par roteado, enquantoper-roomisola cada sala de DM.- Sondagens de status do Matrix e consultas de diretório ao vivo usam a mesma política de proxy do tráfego em tempo de execução.
- A configuração completa do Matrix, as regras de direcionamento e os exemplos de configuração estão documentados em Matrix.
Microsoft Teams
Microsoft Teams é apoiado por Plugin e configurado emchannels.msteams.
- Caminhos de chave principais cobertos aqui:
channels.msteams,channels.msteams.configWrites. - A configuração completa do Teams (credenciais, Webhook, política de DM/grupo, sobrescritas por equipe/por canal) está documentada em Microsoft Teams.
IRC
IRC é apoiado por Plugin e configurado emchannels.irc.
- Caminhos de chave principais cobertos aqui:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopcional sobrescreve a seleção da conta padrão quando corresponde a um ID de conta configurado.- A configuração completa do canal IRC (host/porta/TLS/canais/allowlists/bloqueio por menção) está documentada em IRC.
Várias contas (todos os canais)
Execute várias contas por canal (cada uma com seu próprioaccountId):
defaulté usado quandoaccountIdé omitido (CLI + roteamento).- Tokens de env se aplicam apenas à conta padrão.
- As configurações base do canal se aplicam a todas as contas, a menos que sejam sobrescritas por conta.
- Use
bindings[].match.accountIdpara rotear cada conta para um agente diferente. - Se você adicionar uma conta não padrão via
openclaw channels add(ou onboarding de canal) enquanto ainda estiver em uma configuração de canal de nível superior com conta única, o OpenClaw primeiro promove valores de conta única de nível superior com escopo de conta para o mapa de contas do canal, para que a conta original continue funcionando. A maioria dos canais os move parachannels.<channel>.accounts.default; o Matrix pode preservar um destino nomeado/padrão correspondente existente. - Bindings existentes somente de canal (sem
accountId) continuam correspondendo à conta padrão; bindings com escopo de conta continuam opcionais. openclaw doctor --fixtambém repara formatos mistos movendo valores de conta única de nível superior com escopo de conta para a conta promovida escolhida para esse canal. A maioria dos canais usaaccounts.default; o Matrix pode preservar um destino nomeado/padrão correspondente existente.
Outros canais de Plugin
Muitos canais de Plugin são configurados comochannels.<id> e documentados em suas páginas de canal dedicadas (por exemplo Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch).
Veja o índice completo de canais: Canais.
Bloqueio por menção em chats em grupo
Mensagens de grupo usam por padrão exigir menção (menção de metadados ou padrões regex seguros). Aplica-se a WhatsApp, Telegram, Discord, Google Chat e chats em grupo do iMessage. Respostas visíveis são controladas separadamente. Solicitações diretas normais de grupo, canal e WebChat interno usam por padrão entrega final automática: o texto final do assistente é publicado pelo caminho legado de resposta visível. Opte pormessages.visibleReplies: "message_tool" ou messages.groupChat.visibleReplies: "message_tool" quando a saída visível só deve ser publicada depois que o agente chama message(action=send). Se o modelo retornar texto final sem chamar a ferramenta de mensagem em um modo somente ferramenta ativado, esse texto final permanece privado e o log detalhado do gateway registra metadados de payload suprimido.
Respostas visíveis somente por ferramenta exigem um modelo/runtime que chame ferramentas de forma confiável e são recomendadas para salas ambiente compartilhadas em modelos de última geração, como GPT 5.5. Alguns modelos mais fracos conseguem responder com texto final, mas não entendem que a saída visível para a origem deve ser enviada com message(action=send). Para esses modelos, use "automatic" para que o turno final do assistente seja o caminho de resposta visível. Se o log da sessão mostrar texto do assistente com didSendViaMessagingTool: false, o modelo produziu texto final privado em vez de chamar a ferramenta de mensagem. Troque para um modelo mais forte em chamada de ferramentas para esse canal, inspecione o log detalhado do gateway para ver o resumo do payload suprimido ou defina messages.groupChat.visibleReplies: "automatic" para usar respostas finais visíveis em toda solicitação de grupo/canal.
Se a ferramenta de mensagem estiver indisponível sob a política de ferramentas ativa, o OpenClaw recorre a respostas visíveis automáticas em vez de suprimir silenciosamente a resposta. openclaw doctor avisa sobre essa incompatibilidade.
Essa regra se aplica ao texto final normal do agente. Bindings de conversa pertencentes a Plugin usam a resposta retornada pelo Plugin proprietário como a resposta visível para turnos de thread vinculada reivindicados; o Plugin não precisa chamar message(action=send) para essas respostas de binding.
Solução de problemas: @menção em grupo aciona digitação e depois silêncio (sem erro)
Sintoma: uma @menção de grupo/canal mostra o indicador de digitação e o log do gateway informa dispatch complete (queuedFinal=false, replies=0), mas nenhuma mensagem chega à sala. DMs para o mesmo agente respondem normalmente.
Causa: o modo de resposta visível de grupo/canal resolve para "message_tool", então o OpenClaw executa o turno, mas suprime o texto final do assistente, a menos que o agente chame message(action=send). Não há contrato NO_REPLY nesse modo; sem chamada de ferramenta de mensagem significa sem resposta de origem. Não há erro porque a supressão é o comportamento configurado. Turnos normais de grupo e canal usam "automatic" por padrão, então esse sintoma só aparece quando messages.groupChat.visibleReplies (ou messages.visibleReplies global) está explicitamente definido como "message_tool". O defaultVisibleReplies do harness não se aplica aqui — o resolvedor de grupo/canal o ignora; ele afeta apenas chats diretos/de origem (o harness Codex suprime finais de chats diretos dessa forma).
Correção: escolha um modelo mais forte em chamada de ferramentas, remova a sobrescrita explícita "message_tool" para voltar ao padrão "automatic" ou defina messages.groupChat.visibleReplies: "automatic" para forçar respostas visíveis em toda solicitação de grupo/canal. O gateway recarrega a configuração de messages a quente depois que o arquivo é salvo; reinicie o gateway somente quando a observação de arquivos ou o recarregamento de configuração estiver desabilitado na implantação.
Tipos de menção:
- Menções de metadados: @menções nativas da plataforma. Ignoradas no modo de autochat do WhatsApp.
- Padrões de texto: padrões regex seguros em
agents.list[].groupChat.mentionPatterns. Padrões inválidos e repetição aninhada insegura são ignorados. - O bloqueio por menção é aplicado somente quando a detecção é possível (menções nativas ou pelo menos um padrão).
messages.groupChat.historyLimit define o padrão global. Canais podem sobrescrever com channels.<channel>.historyLimit (ou por conta). Defina 0 para desabilitar.
messages.groupChat.unmentionedInbound: "room_event" envia mensagens de grupo/canal sem menção e sempre ativas como contexto silencioso de sala em canais compatíveis. Mensagens mencionadas, comandos e mensagens diretas continuam sendo solicitações de usuário. Veja Eventos ambiente de sala para exemplos completos de Discord, Slack e Telegram.
messages.visibleReplies é o padrão global de evento de origem; messages.groupChat.visibleReplies o sobrescreve para eventos de origem de grupo/canal. Quando messages.visibleReplies não está definido, chats diretos/de origem usam o padrão selecionado do runtime ou harness, mas turnos diretos do WebChat interno usam entrega final automática para paridade de prompt Pi/Codex. Defina messages.visibleReplies: "message_tool" para exigir intencionalmente message(action=send) para saída visível. Allowlists de canal e bloqueio por menção ainda decidem se um evento é processado.
Limites de histórico de DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modo de autochat
Inclua seu próprio número emallowFrom para habilitar o modo de autochat (ignora @menções nativas, responde apenas a padrões de texto):
Comandos (tratamento de comandos de chat)
Detalhes de comandos
Detalhes de comandos
- Este bloco configura superfícies de comando. Para o catálogo atual de comandos integrados + incluídos em pacote, consulte Comandos Slash.
- Esta página é uma referência de chaves de configuração, não o catálogo completo de comandos. Comandos pertencentes a canais/plugins, como QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, pareamento de dispositivos/pair, memória/dreaming, controle de telefone/phonee Talk/voice, são documentados nas páginas de seus canais/plugins, além de Comandos Slash. - Comandos de texto devem ser mensagens independentes com
/no início. native: "auto"ativa comandos nativos para Discord/Telegram e mantém Slack desativado.nativeSkills: "auto"ativa comandos nativos de skill para Discord/Telegram e mantém Slack desativado.- Sobrescreva por canal:
channels.discord.commands.native(bool ou"auto"). Para Discord,falseignora o registro e a limpeza de comandos nativos durante a inicialização. - Sobrescreva o registro de Skills nativas por canal com
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsadiciona entradas extras ao menu do bot Telegram.bash: truehabilita! <cmd>para o shell do host. Requertools.elevated.enablede remetente emtools.elevated.allowFrom.<channel>.config: truehabilita/config(lê/gravaopenclaw.json). Para clienteschat.senddo gateway, gravações persistentes de/config set|unsettambém exigemoperator.admin;/config showsomente leitura permanece disponível para clientes operadores normais com escopo de gravação.mcp: truehabilita/mcppara a configuração do servidor MCP gerenciado pelo OpenClaw emmcp.servers.plugins: truehabilita/pluginspara descoberta, instalação e controles de ativação/desativação de plugins.channels.<provider>.configWritescontrola mutações de configuração por canal (padrão: true).- Para canais com várias contas,
channels.<provider>.accounts.<id>.configWritestambém controla gravações direcionadas a essa conta (por exemplo,/allowlist --config --account <id>ou/config set channels.<provider>.accounts.<id>...). restart: falsedesabilita/restarte ações de ferramenta de reinicialização do gateway. Padrão:true.ownerAllowFromé a lista de permissões explícita do proprietário para comandos exclusivos do proprietário e ações de canal restritas ao proprietário. Ela é separada deallowFrom.ownerDisplay: "hash"aplica hash aos IDs de proprietário no prompt do sistema. DefinaownerDisplaySecretpara controlar o hashing.allowFromé por provedor. Quando definido, é a única fonte de autorização (listas de permissões/pareamento de canais euseAccessGroupssão ignorados).useAccessGroups: falsepermite que comandos ignorem políticas de grupos de acesso quandoallowFromnão está definido.- Mapa da documentação de comandos:
- catálogo integrado + incluído em pacote: Comandos Slash
- superfícies de comando específicas de canal: Canais
- comandos do QQ Bot: QQ Bot
- comandos de pareamento: Pareamento
- comando de cartão LINE: LINE
- memória Dreaming: Dreaming
Relacionado
- Referência de configuração — chaves de nível superior
- Configuração — agentes
- Visão geral dos canais