Zum Inhalt springen

Channels und Routing in OpenClaw

Es ist oft nervig, wenn man mehrere Chat-Plattformen gleichzeitig bedienen muss. Nachrichten landen im falschen Kontext oder die Zuordnung zwischen Nutzer und Bot-Logik geht verloren. Man verbringt mehr Zeit mit dem Sortieren von IDs als mit dem eigentlichen Code, besonders wenn Gruppen und Threads ins Spiel kommen.

OpenClaw löst das durch deterministisches Routing. Antworten gehen immer dorthin zurück, wo die Nachricht herkam. Das Modell entscheidet nicht selbst; du steuerst alles über die Host-Konfiguration.

  • OpenClaw Installation
  • Zugriff auf das State-Verzeichnis (Standard: ~/.openclaw)

Um einen Agenten für bestimmte Kanäle zu konfigurieren, definierst du ihn in der agents.list und verknüpfst ihn über bindings. Das dauert weniger als 5 Minuten.

Hier ist ein Beispiel für die Konfiguration:

{
agents: {
list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }],
},
bindings: [
{ match: { channel: "slack", teamId: "T123" }, agentId: "support" },
{ match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" },
],
}
  • Channel: whatsapp, telegram, discord, slack, signal, imessage, webchat.
  • AccountId: Instanz eines Accounts pro Channel (sofern unterstützt).
  • AgentId: Isolierter Workspace und Session-Speicher (“Brain”).
  • SessionKey: Der Schlüssel für den Speicher-Bucket, um Kontext zu speichern und Concurrency zu steuern.

Direct Messages nutzen die main Session des Agenten:

  • agent:<agentId>:<mainKey> (Standard: agent:main:main)

Gruppen und Kanäle bleiben pro Channel isoliert:

  • Gruppen: agent:<agentId>:<channel>:group:<id>
  • Kanäle/Rooms: agent:<agentId>:<channel>:channel:<id>

Bei Threads werden zusätzliche Informationen angehängt:

  • Slack/Discord Threads hängen :thread:<threadId> an den Basis-Key an.
  • Telegram Forum Topics betten :topic:<topicId> in den Group-Key ein.

OpenClaw wählt für jede eingehende Nachricht genau einen Agenten nach dieser Priorität aus:

  1. Exact peer match: Nutzt bindings mit peer.kind und peer.id.
  2. Guild match: Speziell für Discord via guildId.
  3. Team match: Speziell für Slack via teamId.
  4. Account match: Nutzt die accountId auf dem Channel.
  5. Channel match: Nutzt jeden Account auf diesem Channel.
  6. Default agent: Nutzt agents.list[].default, sonst den ersten Listeneintrag oder main.

Der gefundene Agent bestimmt, welcher Workspace und welcher Session-Speicher genutzt werden.

Mit Broadcast Groups kannst du mehrere Agenten für denselben Peer ausführen. Das greift dann, wenn OpenClaw normalerweise antworten würde (z. B. in WhatsApp-Gruppen nach einer Erwähnung).

{
broadcast: {
strategy: "parallel",
"120363403215116621@g.us": ["alfred", "baerbel"],
"+15555550123": ["support", "logger"],
},
}

Session-Speicher liegen im State-Verzeichnis (Standard ~/.openclaw):

  • ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • JSONL-Transkripte liegen direkt neben dem Store.

Du kannst den Pfad über session.store und {agentId}-Templating überschreiben.

WebChat verbindet sich mit dem ausgewählten Agenten und nutzt standardmäßig dessen Main-Session. Dadurch kannst du den kanalübergreifenden Kontext für diesen Agenten an einem Ort einsehen.

Eingehende Antworten enthalten folgende Metadaten:

  • ReplyToId, ReplyToBody und ReplyToSender (falls verfügbar).
  • Zitierter Kontext wird als [Replying to ...] Block an den Body angehängt.

Problem: Nachrichten werden dem falschen Agenten zugeordnet. Lösung: Überprüfe die Reihenfolge deiner bindings. OpenClaw arbeitet die Prioritätenliste von oben nach unten ab (beginnend bei Exact Peer Match).

Problem: Sessions werden nicht korrekt getrennt. Lösung: Prüfe den generierten SessionKey. Gruppen und Threads erhalten automatisch eigene IDs, während Direct Messages immer in der main Session landen.

Hast du Fragen zur Einrichtung? Nutze den AI Setup Assistant.

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.