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
- Allez sur api.slack.com/apps et cliquez sur Create New App
- Choisissez From scratch, nommez-la (ex. : "aidaemon"), et sélectionnez votre espace de travail
- Sous Socket Mode, activez-le et générez un App-Level Token avec le scope
connections:write— c'est votreapp_token(xapp-...) - Sous OAuth & Permissions, ajoutez ces Bot Token Scopes :
channels:read— lister les membres dans les canaux publicschat:write— envoyer des messagesfiles:read— télécharger les fichiers envoyés par les utilisateursfiles:write— envoyer des fichiers vers Slackgroups: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
- Sous Event Subscriptions, activez les événements et abonnez-vous à :
message.channels— messages dans les canaux publicsmessage.groups— messages dans les canaux privésmessage.im— messages directs
- 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.
- 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| Key | Type | Default | Description |
|---|---|---|---|
enabled | bool | false | Activer le canal Slack |
app_token | string | — | Token de niveau application pour Socket Mode (xapp-...). Supporte "keychain" et ${ENV}. |
bot_token | string | — | Token OAuth de Bot Utilisateur (xoxb-...). Supporte "keychain" et ${ENV}. |
allowed_user_ids | array | [] | Identifiants utilisateur Slack autorisés à interagir. Vide = aucune restriction. |
use_threads | bool | true | Ré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 More → Copy 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}(quanduse_threadsest 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.