Kanäle und Routing
OpenClaw leitet Antworten an den Kanal zurück, aus dem eine Nachricht stammt. Das Modell wählt keinen Kanal aus; das Routing ist deterministisch und wird durch die Host-Konfiguration gesteuert.Schlüsselbegriffe
- Kanal:
telegram,whatsapp,discord,irc,googlechat,slack,signal,imessage,linesowie Erweiterungskanäle.webchatist der interne WebChat-UI-Kanal und kein konfigurierbarer ausgehender Kanal. - AccountId: kanalbezogene Kontoinstanz (wenn unterstützt).
- Optionale Standardkontoauswahl pro Kanal:
channels.<channel>.defaultAccountlegt fest, welches Konto verwendet wird, wenn ein ausgehender Pfad keinaccountIdangibt.- In Multi-Account-Setups legen Sie einen expliziten Standard fest (
defaultAccountoderaccounts.default), wenn zwei oder mehr Konten konfiguriert sind. Andernfalls kann das Fallback-Routing die erste normalisierte Konto-ID auswählen.
- In Multi-Account-Setups legen Sie einen expliziten Standard fest (
- AgentId: ein isolierter Workspace- und Sitzungsspeicher („Brain“).
- SessionKey: der Bucket-Schlüssel, der zum Speichern von Kontext und zur Steuerung der Parallelität verwendet wird.
SessionKey-Formen (Beispiele)
Direktnachrichten werden auf die Haupt-Sitzung des Agenten zusammengeführt:agent:<agentId>:<mainKey>(Standard:agent:main:main)
- Gruppen:
agent:<agentId>:<channel>:group:<id> - Kanäle/Räume:
agent:<agentId>:<channel>:channel:<id>
- Slack-/Discord-Threads hängen
:thread:<threadId>an den Basisschlüssel an. - Telegram-Forenthemen betten
:topic:<topicId>in den Gruppenschlüssel ein.
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Anheften der Hauptroute für Direktnachrichten
Wennsession.dmScope auf main gesetzt ist, können Direktnachrichten eine gemeinsame Hauptsitzung verwenden.
Damit lastRoute der Sitzung nicht durch Direktnachrichten von Nicht-Eigentümern überschrieben wird,
leitet OpenClaw aus allowFrom einen angehefteten Eigentümer ab, wenn alle folgenden Bedingungen erfüllt sind:
allowFromhat genau einen nicht mit Wildcard versehenen Eintrag.- Der Eintrag kann für diesen Kanal zu einer konkreten Absender-ID normalisiert werden.
- Der Absender der eingehenden Direktnachricht stimmt nicht mit diesem angehefteten Eigentümer überein.
lastRoute der Hauptsitzung nicht.
Routing-Regeln (wie ein Agent ausgewählt wird)
Das Routing wählt für jede eingehende Nachricht einen Agenten aus:- Exakte Peer-Übereinstimmung (
bindingsmitpeer.kind+peer.id). - Übereinstimmung des übergeordneten Peers (Thread-Vererbung).
- Übereinstimmung von Guild + Rollen (Discord) über
guildId+roles. - Guild-Übereinstimmung (Discord) über
guildId. - Team-Übereinstimmung (Slack) über
teamId. - Konto-Übereinstimmung (
accountIdauf dem Kanal). - Kanal-Übereinstimmung (beliebiges Konto auf diesem Kanal,
accountId: "*"). - Standard-Agent (
agents.list[].default, sonst der erste Listeneintrag, Fallback aufmain).
peer, guildId, teamId, roles), müssen alle angegebenen Felder übereinstimmen, damit dieses Binding angewendet wird.
Der übereinstimmende Agent bestimmt, welcher Workspace- und Sitzungsspeicher verwendet wird.
Broadcast Groups (mehrere Agenten ausführen)
Mit Broadcast Groups können Sie mehrere Agenten für denselben Peer ausführen, wenn OpenClaw normalerweise antworten würde (zum Beispiel in WhatsApp-Gruppen nach Erwähnungs-/Aktivierungs-Gating). Konfiguration:Konfigurationsüberblick
agents.list: benannte Agentdefinitionen (Workspace, Modell usw.).bindings: ordnet eingehende Kanäle/Konten/Peers Agenten zu.
Sitzungsspeicherung
Sitzungsspeicher befinden sich im Statusverzeichnis (Standard:~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- JSONL-Transkripte liegen neben dem Speicher
session.store und das Templating mit {agentId} überschreiben.
Die Gateway- und ACP-Sitzungserkennung durchsucht außerdem festplattenbasierte Agentenspeicher unter dem
Standardstamm agents/ und unter templatisierten session.store-Wurzeln. Erkannte
Speicher müssen innerhalb dieser aufgelösten Agentenwurzel bleiben und eine reguläre
Datei sessions.json verwenden. Symlinks und Pfade außerhalb der Wurzel werden ignoriert.
WebChat-Verhalten
WebChat wird an den ausgewählten Agenten angehängt und verwendet standardmäßig die Hauptsitzung des Agenten. Dadurch können Sie mit WebChat kanalübergreifenden Kontext für diesen Agenten an einer Stelle sehen.Antwortkontext
Eingehende Antworten enthalten:ReplyToId,ReplyToBodyundReplyToSender, wenn verfügbar.- Zitierter Kontext wird als Block
[Replying to ...]anBodyangehängt.