owner_user_id e recebem somente os escopos de token que você conceder.
Configuração rápida
No ClickClack, abra Workspace settings → Integrations → OpenClaw, crie um bot e copie o token dele. Em seguida, configure o canal:workspace aceita um id de workspace (wsp_...), slug ou nome de exibição.
channels add verifica o servidor, o token e o workspace após salvar e, em seguida,
informa se o Gateway em execução detectou a nova conta. Se o OpenClaw já estiver
em execução, o ClickClack se conectará automaticamente e nenhum segundo comando será
necessário. Caso contrário, inicie-o com:
Alternativa: token baseado em variável de ambiente
A conta padrão pode lerCLICKCLACK_BOT_TOKEN em vez de armazenar um token
na configuração:
Referência JSON5
A estrutura de configuração equivalente é:baseUrl, uma origem de token e
workspace estiverem todos definidos. Uma origem de token pode ser token, tokenFile ou
CLICKCLACK_BOT_TOKEN para a conta padrão. workspace aceita um
id de workspace (wsp_...), slug ou nome; o Gateway o resolve para o id na inicialização.
Chaves de configuração da conta
Se
plugins.allow for uma lista restritiva não vazia, selecionar explicitamente
ClickClack na configuração de canais ou executar openclaw plugins enable clickclack
adicionará clickclack a essa lista. A instalação durante a integração usa o mesmo
comportamento de seleção explícita. Esses caminhos não substituem plugins.deny nem uma
configuração global de plugins.enabled: false. O uso direto de
openclaw plugins install @openclaw/clickclack segue a política normal de instalação de
plugins e também registra o ClickClack em uma lista de permissões existente.
Vários bots
Cada conta abre sua própria conexão em tempo real com o ClickClack e usa seu próprio token de bot.Modos de resposta
replyMode: "agent"(padrão) encaminha as mensagens recebidas pelo pipeline normal do agente, incluindo o registro da sessão e a política de ferramentas.replyMode: "model"ignora o pipeline do agente e usallm.completedo runtime do plugin para respostas diretas do bot, opcionalmente configuradas pormodelesystemPrompt. O provedor e o modelo selecionados controlam o orçamento de conclusão.
plugins.entries.clickclack.llm.allowAgentIdOverride: true:
agent; ele
não é necessário nesse caso.
Menu de comandos
Na inicialização do Gateway, cada conta configurada publica os comandos nativos do OpenClaw no ClickClack. Eles aparecem no preenchimento automático do compositor identificados pelo nome de usuário do bot. O conjunto publicado é substituído por completo a cada inicialização, inclusive com a limpeza de um menu obsoleto quando o catálogo de comandos nativos está vazio. A sincronização do menu de comandos fica ativada por padrão. DefinacommandMenu: false em uma conta
para desativá-la:
commands:write. Os pacotes atuais bot:write e
bot:admin do ClickClack incluem esse escopo, que também pode ser concedido
individualmente. Talvez seja necessário adicionar o escopo aos tokens criados antes da introdução
dos menus de comandos ou substituí-los.
A sincronização funciona com melhor esforço e é executada uma vez por inicialização do Gateway. Um escopo ausente ou uma falha de
rede registra um aviso; um servidor ClickClack mais antigo sem o endpoint registra o evento no
nível de depuração. Nenhuma dessas falhas impede a inicialização em tempo real. Os menus permanecem
disponíveis enquanto o agente está offline e são removidos quando o bot sai do
workspace.
Esta versão publica somente especificações de comandos nativos. Aliases e
catálogos de comandos de Skills, plugins ou personalizados não são adicionados ao menu. Se um
nome também estiver registrado como um comando HTTP com barra, o ClickClack encaminhará esse
registro primeiro; os outros comandos de menu continuarão pelo fluxo normal de
entrega de mensagens.
Use o modo agent para evidências de correlação entre serviços. Para um id de
mensagem autoritativo do ClickClack em sua estrutura canônica msg_<ulid>, o canal deriva
o id determinístico de execução do OpenClaw clickclack:<message-id>. Cada chamada de modelo
fica visível nos diagnósticos como clickclack:<message-id>:model:<n>; quando esse
turno usa o ClawRouter, o mesmo id de chamada do modelo é enviado como X-Request-ID.
O modo model ignora os diagnósticos normais de execução/sessão do agente e, portanto,
não é adequado para esse caminho de evidências.
Quando um evento em tempo real contém um payload.correlation_id validado, o
canal o transporta como X-Correlation-ID na busca autoritativa da mensagem e
nas solicitações de resposta resultantes do ClickClack. Os valores usam o conjunto seguro de
128 caracteres do ClickClack (A-Z, a-z, 0-9, ., _, : e -); valores inválidos
são omitidos. Essas associações contêm somente identificadores, nunca corpos de mensagens,
prompts, conclusões, credenciais ou saídas de ferramentas.
Entrega durável de mídia
As respostas do agente que contêm mídia usam entrega durável obrigatória. O OpenClaw atribui nonces estáveis por parte para mensagens e uploads antes da primeira gravação no ClickClack, de modo que uma nova tentativa reutilize o mesmo upload e a mesma mensagem, em vez de consumir a cota de armazenamento ou publicar duplicatas. Se um upload já existir após uma reinicialização, o OpenClaw não relerá o caminho local original nem a URL remota da mídia. Esse contrato de recuperação exige um servidor ClickClack compatível com:GET /api/uploads/by-noncecomX-ClickClack-Upload-Nonce: supportedem resultados encontrados e ausentes.GET /api/messages/by-noncecomX-ClickClack-Message-Nonce: supportedem resultados encontrados e ausentes.- Criação idempotente de mensagens e associação de anexos para o mesmo nonce com escopo do proprietário e o mesmo upload.
Linhas de atividade do agente
Por padrão, um canal do ClickClack não exibe nada enquanto um turno do agente está em execução; somente a resposta final é publicada. DefinaagentActivity: true em uma conta para publicar linhas de mensagem duráveis de agent_commentary e agent_tool enquanto o turno estiver em andamento:
- Desativado por padrão. As configurações padrão e os servidores ClickClack mais antigos não são afetados.
- Exige o escopo de token
agent_activity:write. Esse escopo é separado debot:writee não é herdado por ele; crie o token do bot com--scopes bot:write,agent_activity:write(ou conceda o escopo a um token existente) antes de habilitar a opção. - Degradação com melhor esforço. Se o token não tiver
agent_activity:writeou se o servidor rejeitar gravações de atividade, as falhas serão registradas e a resposta final ainda será entregue normalmente; nenhuma linha de atividade aparecerá. - As linhas são agrupadas por turno (
turn_id), combinadas de modo que uma etapa lógica corresponda a uma linha, e as linhas de ferramentas usam a mesma formatação de progresso do Discord/Slack/Telegram (nome da ferramenta mais detalhes do comando). - Metadados de atribuição. As publicações criadas pelo agente (linhas de atividade e a resposta final) incluem os campos
author_modeleauthor_thinking, resolvidos com base no modelo realmente usado no turno (inclusive após um fallback). Servidores que não definem essas colunas ignoram os campos JSON desconhecidos; servidores que os persistem podem responder “qual modelo disse esta linha e em qual nível de raciocínio” por mensagem.
Destinos
channel:<name-or-id>envia para um canal do espaço de trabalho. Destinos sem prefixo usamchannel:por padrão.dm:<user_id>cria ou reutiliza uma conversa direta com esse usuário.thread:<message_id>responde na thread cuja mensagem raiz é essa.
clickclack: ou cc:.
A mídia de saída usa a API de upload do ClickClack e, em seguida, anexa o upload persistente
à mensagem de canal, resposta na thread ou DM criada. Arquivos locais e URLs de mídia
remota compatíveis seguem a política normal de acesso a mídia do OpenClaw, com um limite
de 64 MiB por arquivo. Envios persistentes em fila usam nonces separados, com escopo de
proprietário, para cada upload e parte da mensagem e, depois, tentam novamente associar
o anexo aos mesmos objetos. Consulte Entrega persistente de mídia
para ver o contrato do servidor e o comportamento de recuperação.
Exemplos:
Permissões
Os escopos de token do ClickClack são impostos pela API do ClickClack.bot:read: lê dados de espaço de trabalho, canal, mensagem, thread, DM, tempo real e perfil.bot:write:bot:readmais mensagens de canal, respostas em threads, DMs, uploads e publicação do menu de comandos.bot:admin:bot:writemais criação de canais.commands:write: publica o menu de comandos do bot. Incluído nos pacotes atuaisbot:writeebot:admine pode ser concedido individualmente.agent_activity:write: linhas persistentes de atividade do agente (agent_commentary/agent_tool). Não é herdado porbot:writenembot:admin; necessário somente quandoagentActivity: trueestá definido.
bot:write atual para o chat normal do agente e a sincronização do menu de comandos. Adicione agent_activity:write ao habilitar linhas de atividade do agente.
Solução de problemas
ClickClack is not configured for account "<id>": definabaseUrl,token(por exemplo, por meio deCLICKCLACK_BOT_TOKEN) eworkspacepara essa conta.ClickClack workspace not found: <value>: definaworkspacecomo o id, slug ou nome do espaço de trabalho retornado pelo ClickClack.- Sem respostas recebidas: confirme se o token tem acesso de leitura em tempo real e observe que o bot ignora as próprias mensagens e as mensagens de outros bots.
- Falha nos envios para canais: verifique se o bot é membro do espaço de trabalho e tem
bot:write. - Sem menu de comandos: confirme que
commandMenunão éfalse, que o servidor ClickClack oferece suporte aPUT /api/bots/self/commandse que o token temcommands:write.