EN·ES·DE·PT·FR
⌘K

Integração Slack

Conecte o aidaemon ao seu workspace Slack via Socket Mode para mensagens em tempo real.

Binários Pré-compilados
Se você instalou via script de uma linha ou Homebrew, o suporte ao Slack já está incluído. Basta configurar o config.toml abaixo. A feature flag é necessária apenas ao compilar a partir do código-fonte.

Criar um App Slack

  1. Acesse api.slack.com/apps e clique em Create New App
  2. Escolha From scratch, nomeie (ex.: "aidaemon") e selecione seu workspace
  3. Em Socket Mode, habilite e gere um App-Level Token com o escopo connections:write — este é seu app_token (xapp-...)
  4. Em OAuth & Permissions, adicione estes Bot Token Scopes:
    • channels:read — listar membros em canais públicos
    • chat:write — enviar mensagens
    • files:read — baixar arquivos enviados por usuários
    • files:write — enviar arquivos para o Slack
    • groups:read — listar membros em canais privados (necessário para resolver nomes de usuário em canais privados)
    • im:read — ler metadados de DM (necessário para transferências de arquivo em mensagens diretas)
    • reactions:write — adicionar reações de status (ampulheta durante processamento)
    • users:read — resolver informações de usuário
  5. Em Event Subscriptions, habilite eventos e inscreva-se em:
    • message.channels — mensagens em canais públicos
    • message.groups — mensagens em canais privados
    • message.im — mensagens diretas
  6. Em App Home, role até Show Tabs e habilite a Messages Tab. Marque "Allow users to send Slash commands and messages from the messages tab" — sem isso, os usuários não podem enviar DM ao bot.
  7. Instale o app no seu workspace — copie o Bot User OAuth Token (xoxb-...)

Configuração

config.toml
[slack]
enabled = true
app_token = "xapp-1-..."
bot_token = "xoxb-..."
allowed_user_ids = ["U123456789"]
use_threads = true
KeyTypeDefaultDescription
enabledboolfalseHabilitar o canal Slack
app_tokenstringToken de Nível de App para Socket Mode (xapp-...). Suporta "keychain" e ${ENV}.
bot_tokenstringToken OAuth de Usuário Bot (xoxb-...). Suporta "keychain" e ${ENV}.
allowed_user_idsarray[]IDs de usuários do Slack permitidos para interagir. Vazio = sem restrição.
use_threadsbooltrueResponder em threads por padrão. Cada thread tem seu próprio contexto de sessão.

Encontrar Seu ID de Usuário do Slack

Clique no seu perfil no Slack, depois clique em MoreCopy member ID. O formato é U seguido de caracteres alfanuméricos (ex.: U0123ABCDEF).

Funcionalidades

  • Socket Mode — conexão WebSocket em tempo real, sem URL público necessário
  • Respostas em threads — conversas em threads configuráveis com contexto de sessão por thread
  • Transferência de arquivos — envie e receba arquivos pelo Slack
  • Aprovações Block Kit — botões interativos para aprovação de comandos de terminal
  • Comandos slash — mesmos comandos do Telegram (/cost, /model, /tasks, etc.)
  • Reações de status — emoji de ampulheta durante processamento, removido ao completar
  • Conversão Markdown — markdown padrão convertido automaticamente para formato mrkdwn do Slack
  • Fragmentação de mensagens — respostas longas divididas para respeitar o limite de 39KB do Slack
  • Reconexão automática — backoff exponencial em falha de conexão (5s → 60s máximo)

Modelo de Sessão

Sessões do Slack são identificadas por canal e thread:

  • Mensagem de canal: slack:{channel_id}
  • Mensagem de thread: slack:{channel_id}:{thread_ts} (quando use_threads está habilitado)

Cada sessão mantém seu próprio histórico de conversa, memória de trabalho e contexto de fatos.

Controle de Acesso
Se allowed_user_ids estiver vazio, qualquer pessoa no workspace que possa enviar mensagens ao bot pode interagir com ele. Sempre defina isso em produção.