Kanäle & Routing¶
OpenClaw leitet Antworten zurück an den Kanal, aus dem eine Nachricht stammt. Das Modell wählt keinen Kanal; das Routing ist deterministisch und wird durch die Host-Konfiguration gesteuert.
Schlüsselbegriffe¶
- Kanal:
whatsapp,telegram,discord,slack,signal,imessage,webchat. - AccountId: kanalspezifische Account-Instanz (sofern unterstützt).
- AgentId: ein isolierter Workspace + Sitzungsspeicher („Gehirn“).
- SessionKey: der Bucket-Schlüssel zum Speichern von Kontext und zur Steuerung der Parallelität.
Formen von Sitzungsschlüsseln (Beispiele)¶
Direktnachrichten werden in die Haupt-Sitzung des Agenten zusammengeführt:
agent:<agentId>:<mainKey>(Standard:agent:main:main)
Gruppen und Kanäle bleiben pro Kanal isoliert:
- Gruppen:
agent:<agentId>:<channel>:group:<id> - Kanäle/Räume:
agent:<agentId>:<channel>:channel:<id>
Threads:
- Slack-/Discord-Threads hängen
:thread:<threadId>an den Basisschlüssel an. - Telegram-Forum-Themen betten
:topic:<topicId>in den Gruppenschlüssel ein.
Beispiele:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Routing-Regeln (wie ein Agent ausgewählt wird)¶
Das Routing wählt einen Agenten für jede eingehende Nachricht:
- Exakte Peer-Übereinstimmung (
bindingsmitpeer.kind+peer.id). - Guild-Übereinstimmung (Discord) über
guildId. - Team-Übereinstimmung (Slack) über
teamId. - Account-Übereinstimmung (
accountIdauf dem Kanal). - Kanal-Übereinstimmung (beliebiger Account auf diesem Kanal).
- Standard-Agent (
agents.list[].default, andernfalls erster Listeneintrag, Fallback aufmain).
Der gefundene Agent bestimmt, welcher Workspace und welcher Sitzungsspeicher verwendet werden.
Broadcast-Gruppen (mehrere Agenten ausführen)¶
Broadcast-Gruppen ermöglichen es Ihnen, mehrere Agenten für denselben Peer auszuführen, wenn OpenClaw normalerweise antworten würde (z. B. in WhatsApp-Gruppen nach Erwähnungs‑/Aktivierungs-Gating).
Konfiguration:
{
broadcast: {
strategy: "parallel",
"120363403215116621@g.us": ["alfred", "baerbel"],
"+15555550123": ["support", "logger"],
},
}
Siehe: Broadcast Groups.
Konfigurationsübersicht¶
agents.list: benannte Agentendefinitionen (Workspace, Modell usw.).bindings: Zuordnung eingehender Kanäle/Accounts/Peers zu Agenten.
Beispiel:
{
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" },
],
}
Sitzungsspeicher¶
Sitzungsspeicher liegen unterhalb des State-Verzeichnisses (Standard ~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- JSONL-Transkripte liegen neben dem Store
Sie können den Store-Pfad über session.store und {agentId}-Templating überschreiben.
WebChat-Verhalten¶
WebChat bindet sich an den ausgewählten Agenten und verwendet standardmäßig die Hauptsitzung des Agenten. Dadurch ermöglicht WebChat, kanalübergreifenden Kontext für diesen Agenten an einem Ort einzusehen.
Antwortkontext¶
Eingehende Antworten enthalten:
ReplyToId,ReplyToBodyundReplyToSender, sofern verfügbar.- Zitierter Kontext wird als
[Replying to ...]-Block anBodyangehängt.
Dies ist über alle Kanäle hinweg konsistent.