Zum Hauptinhalt springen

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: kanal­spezifische 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:42
  • agent: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:
  1. Exakte Peer-Übereinstimmung (bindings mit peer.kind + peer.id).
  2. Übergeordnetes Peer-Match (Thread-Vererbung).
  3. Guild- + Rollen-Match (Discord) über guildId + roles.
  4. Guild-Übereinstimmung (Discord) über guildId.
  5. Team-Übereinstimmung (Slack) über teamId.
  6. Account-Übereinstimmung (accountId auf dem Kanal).
  7. Kanal-Übereinstimmung (beliebiger Account auf diesem Kanal).
  8. Standard-Agent (agents.list[].default, andernfalls erster Listeneintrag, Fallback auf main).
Wenn eine Bindung mehrere Match-Felder enthält (peer, guildId, teamId, roles), müssen alle angegebenen Felder übereinstimmen, damit die Bindung angewendet wird. 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",
    "[email protected]": ["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, ReplyToBody und ReplyToSender, sofern verfügbar.
  • Zitierter Kontext wird als [Replying to ...]-Block an Body angehängt.
Dies ist über alle Kanäle hinweg konsistent.