Kanalen & routering¶
OpenClaw routeert antwoorden terug naar het kanaal waar een bericht vandaan kwam. Het model kiest geen kanaal; routering is deterministisch en wordt beheerd door de hostconfiguratie.
Belangrijke termen¶
- Kanaal:
whatsapp,telegram,discord,slack,signal,imessage,webchat. - AccountId: per‑kanaal accountinstantie (indien ondersteund).
- AgentId: een geïsoleerde werkruimte + sessieopslag (“brein”).
- SessionKey: de bucketsleutel die wordt gebruikt om context op te slaan en gelijktijdigheid te beheren.
Vormen van sessiesleutels (voorbeelden)¶
Directe berichten worden samengevoegd tot de hoofdsessie van de agent:
agent:<agentId>:<mainKey>(standaard:agent:main:main)
Groepen en kanalen blijven per kanaal geïsoleerd:
- Groepen:
agent:<agentId>:<channel>:group:<id> - Kanalen/rooms:
agent:<agentId>:<channel>:channel:<id>
Discussies:
- Slack/Discord-threads voegen
:thread:<threadId>toe aan de basissleutel. - Telegram-forumtopics embedden
:topic:<topicId>in de groepssleutel.
Voorbeelden:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Routeringsregels (hoe een agent wordt gekozen)¶
Routering kiest één agent voor elk inkomend bericht:
- Exacte peer-match (
bindingsmetpeer.kind+peer.id). - Guild-match (Discord) via
guildId. - Team-match (Slack) via
teamId. - Account-match (
accountIdop het kanaal). - Kanaal-match (elk account op dat kanaal).
- Standaardagent (
agents.list[].default, anders eerste lijstitem, fallback naarmain).
De gematchte agent bepaalt welke werkruimte en sessieopslag worden gebruikt.
Broadcast-groepen (meerdere agents draaien)¶
Broadcast-groepen laten je meerdere agents draaien voor dezelfde peer wanneer OpenClaw normaal gesproken zou antwoorden (bijvoorbeeld: in WhatsApp-groepen, na mention-/activeringsgating).
Config:
{
broadcast: {
strategy: "parallel",
"120363403215116621@g.us": ["alfred", "baerbel"],
"+15555550123": ["support", "logger"],
},
}
Zie: Broadcast Groups.
Config-overzicht¶
agents.list: benoemde agentdefinities (werkruimte, model, enz.).bindings: koppelt inkomende kanalen/accounts/peers aan agents.
Voorbeeld:
{
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" },
],
}
Sessiesopslag¶
Sessiestores bevinden zich onder de state-directory (standaard ~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- JSONL-transcripten staan naast de store
Je kunt het pad van de store overschrijven via session.store en {agentId}-templating.
WebChat-gedrag¶
WebChat koppelt aan de geselecteerde agent en gebruikt standaard de hoofd- sessie van de agent. Hierdoor kun je met WebChat de context over meerdere kanalen voor die agent op één plek bekijken.
Antwoordcontext¶
Inkomende antwoorden bevatten:
ReplyToId,ReplyToBodyenReplyToSenderwanneer beschikbaar.- Geciteerde context wordt toegevoegd aan
Bodyals een[Replying to ...]-blok.
Dit is consistent over alle kanalen.