EN·ES·DE·PT·FR
⌘K

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

  1. Gehe zu api.slack.com/apps und klicke auf Create New App
  2. Wähle From scratch, benenne sie (z.B. "aidaemon") und wähle deinen Workspace
  3. Unter Socket Mode aktiviere es und generiere ein App-Level Token mit dem connections:write-Scope — das ist dein app_token (xapp-...)
  4. Unter OAuth & Permissions füge diese Bot Token Scopes hinzu:
    • channels:read — Mitglieder in öffentlichen Channels auflisten
    • chat:write — Nachrichten senden
    • files:read — von Benutzern gesendete Dateien herunterladen
    • files:write — Dateien nach Slack hochladen
    • groups: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
  5. Unter Event Subscriptions aktiviere Events und abonniere:
    • message.channels — Nachrichten in öffentlichen Channels
    • message.groups — Nachrichten in privaten Channels
    • message.im — Direktnachrichten
  6. 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.
  7. 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
KeyTypeDefaultDescription
enabledboolfalseSlack-Channel aktivieren
app_tokenstringApp-Level Token für Socket Mode (xapp-...). Unterstützt "keychain" und ${ENV}.
bot_tokenstringBot User OAuth Token (xoxb-...). Unterstützt "keychain" und ${ENV}.
allowed_user_idsarray[]Slack-Benutzer-IDs, die interagieren dürfen. Leer = keine Einschränkung.
use_threadsbooltrueStandardmäß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 MehrMitglieds-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, /tasks usw.)
  • 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} (wenn use_threads aktiviert 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.