EN·ES·DE·PT·FR
⌘K

Intégration Slack

Connectez aidaemon à votre espace de travail Slack via Socket Mode pour la messagerie en temps réel.

Binaires Pré-compilés
Si vous avez installé via le script en une ligne ou Homebrew, le support Slack est déjà inclus. Configurez simplement config.toml ci-dessous. Le feature flag n'est nécessaire que lors de la compilation depuis les sources.

Créer une Application Slack

  1. Allez sur api.slack.com/apps et cliquez sur Create New App
  2. Choisissez From scratch, nommez-la (ex. : "aidaemon"), et sélectionnez votre espace de travail
  3. Sous Socket Mode, activez-le et générez un App-Level Token avec le scope connections:write — c'est votre app_token (xapp-...)
  4. Sous OAuth & Permissions, ajoutez ces Bot Token Scopes :
    • channels:read — lister les membres dans les canaux publics
    • chat:write — envoyer des messages
    • files:read — télécharger les fichiers envoyés par les utilisateurs
    • files:write — envoyer des fichiers vers Slack
    • groups:read — lister les membres dans les canaux privés (nécessaire pour résoudre les noms d'utilisateur dans les canaux privés)
    • im:read — lire les métadonnées des messages directs (requis pour les transferts de fichiers en messages directs)
    • reactions:write — ajouter des réactions de statut (sablier pendant le traitement)
    • users:read — résoudre les informations utilisateur
  5. Sous Event Subscriptions, activez les événements et abonnez-vous à :
    • message.channels — messages dans les canaux publics
    • message.groups — messages dans les canaux privés
    • message.im — messages directs
  6. Sous App Home, descendez jusqu'à Show Tabs et activez l'onglet Messages Tab. Cochez "Allow users to send Slash commands and messages from the messages tab" — sans cela, les utilisateurs ne peuvent pas envoyer de messages directs au bot.
  7. Installez l'application dans votre espace de travail — copiez le Bot User OAuth Token (xoxb-...)

Configuration

config.toml
[slack]
enabled = true
app_token = "xapp-1-..."
bot_token = "xoxb-..."
allowed_user_ids = ["U123456789"]
use_threads = true
KeyTypeDefaultDescription
enabledboolfalseActiver le canal Slack
app_tokenstringToken de niveau application pour Socket Mode (xapp-...). Supporte "keychain" et ${ENV}.
bot_tokenstringToken OAuth de Bot Utilisateur (xoxb-...). Supporte "keychain" et ${ENV}.
allowed_user_idsarray[]Identifiants utilisateur Slack autorisés à interagir. Vide = aucune restriction.
use_threadsbooltrueRépondre dans les fils de discussion par défaut. Chaque fil obtient son propre contexte de session.

Trouver Votre Identifiant Utilisateur Slack

Cliquez sur votre profil dans Slack, puis cliquez sur MoreCopy member ID. Le format est U suivi de caractères alphanumériques (ex. : U0123ABCDEF).

Fonctionnalités

  • Socket Mode — connexion WebSocket en temps réel, aucune URL publique requise
  • Réponses en fils — conversations en fils configurables avec contexte de session par fil
  • Transfert de fichiers — envoi et réception de fichiers via Slack
  • Approbations Block Kit — boutons interactifs pour l'approbation des commandes terminal
  • Commandes slash — mêmes commandes que Telegram (/cost, /model, /tasks, etc.)
  • Réactions de statut — emoji sablier pendant le traitement, supprimé à la fin
  • Conversion Markdown — le markdown standard est automatiquement converti au format mrkdwn de Slack
  • Découpage des messages — les longues réponses sont découpées pour respecter la limite de 39 Ko de Slack
  • Reconnexion automatique — backoff exponentiel en cas d'échec de connexion (5s → 60s max)

Modèle de Session

Les sessions Slack sont identifiées par canal et fil de discussion :

  • Message de canal : slack:{channel_id}
  • Message de fil : slack:{channel_id}:{thread_ts} (quand use_threads est activé)

Chaque session maintient son propre historique de conversation, sa mémoire de travail et son contexte de faits.

Contrôle d'Accès
Si allowed_user_ids est vide, n'importe qui dans l'espace de travail pouvant envoyer un message au bot peut interagir avec lui. Définissez toujours cette valeur en production.