Slack-Integration
Verbinde aidaemon mit deinem Slack-Workspace über Socket Mode für Echtzeit-Nachrichten.
Vorkompilierte Binärdateien
Wenn du über das Einzeiler-Skript oder Homebrew installiert hast, ist Slack-Unterstützung bereits enthalten. Konfiguriere einfach
config.toml unten. Das Feature-Flag wird nur beim Erstellen aus dem Quellcode benötigt.Eine Slack-App erstellen
- Gehe zu api.slack.com/apps und klicke auf Create New App
- Wähle From scratch, benenne sie (z.B. "aidaemon") und wähle deinen Workspace
- Unter Socket Mode aktiviere es und generiere ein App-Level Token mit dem
connections:write-Scope — das ist deinapp_token(xapp-...) - Unter OAuth & Permissions füge diese Bot Token Scopes hinzu:
channels:read— Mitglieder in öffentlichen Channels auflistenchat:write— Nachrichten sendenfiles:read— von Benutzern gesendete Dateien herunterladenfiles:write— Dateien nach Slack hochladengroups:read— Mitglieder in privaten Channels auflisten (benötigt zum Auflösen von Benutzernamen in privaten Channels)im:read— DM-Metadaten lesen (erforderlich für Dateiübertragungen in Direktnachrichten)reactions:write— Status-Reaktionen hinzufügen (Sanduhr während der Verarbeitung)users:read— Benutzerinformationen auflösen
- Unter Event Subscriptions aktiviere Events und abonniere:
message.channels— Nachrichten in öffentlichen Channelsmessage.groups— Nachrichten in privaten Channelsmessage.im— Direktnachrichten
- Unter App Home scrolle zu Show Tabs und aktiviere den Messages Tab. Aktiviere "Allow users to send Slash commands and messages from the messages tab" — ohne dies können Benutzer dem Bot keine DMs senden.
- Installiere die App in deinem Workspace — kopiere das Bot User OAuth Token (
xoxb-...)
Konfiguration
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 | Slack-Channel aktivieren |
app_token | string | — | App-Level Token für Socket Mode (xapp-...). Unterstützt "keychain" und ${ENV}. |
bot_token | string | — | Bot User OAuth Token (xoxb-...). Unterstützt "keychain" und ${ENV}. |
allowed_user_ids | array | [] | Slack-Benutzer-IDs, die interagieren dürfen. Leer = keine Einschränkung. |
use_threads | bool | true | Standardmäßig in Threads antworten. Jeder Thread erhält seinen eigenen Sitzungskontext. |
Deine Slack-Benutzer-ID finden
Klicke auf dein Profil in Slack, dann klicke auf Mehr → Mitglieds-ID kopieren. Das Format ist U gefolgt von alphanumerischen Zeichen (z.B. U0123ABCDEF).
Funktionen
- Socket Mode — Echtzeit-WebSocket-Verbindung, keine öffentliche URL erforderlich
- Thread-Antworten — konfigurierbare Thread-Konversationen mit Sitzungskontext pro Thread
- Dateiübertragung — sende und empfange Dateien über Slack
- Block Kit-Genehmigungen — interaktive Schaltflächen für Terminal-Befehlsgenehmigung
- Slash-Befehle — gleiche Befehle wie in Telegram (
/cost,/model,/tasksusw.) - Status-Reaktionen — Sanduhr-Emoji während der Verarbeitung, wird bei Abschluss entfernt
- Markdown-Konvertierung — Standard-Markdown wird automatisch in Slack-mrkdwn-Format konvertiert
- Nachrichtenaufteilung — lange Antworten werden aufgeteilt, um Slacks 39KB-Nachrichtenlimit einzuhalten
- Auto-Reconnect — exponentielles Backoff bei Verbindungsfehlern (5s → 60s max)
Sitzungsmodell
Slack-Sitzungen werden durch Channel und Thread identifiziert:
- Channel-Nachricht:
slack:{channel_id} - Thread-Nachricht:
slack:{channel_id}:{thread_ts}(wennuse_threadsaktiviert ist)
Jede Sitzung behält ihren eigenen Konversationsverlauf, Arbeitsspeicher und Faktenkontext.
Zugriffskontrolle
Wenn
allowed_user_ids leer ist, kann jeder im Workspace, der dem Bot eine Nachricht senden kann, mit ihm interagieren. Setze dies immer in der Produktion.