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_tokenstring—Token de Nível de App para Socket Mode (xapp-...). Suporta "keychain" e ${ENV}.
bot_tokenstring—Token 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 More → Copy 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.