Wprowadzenie
OpenClaw zarządza odpowiedziami na wiadomości, kierując je z powrotem na kanał, z którego nadeszły. Routing jest deterministyczny i kontrolowany przez konfigurację hosta — nie przez decyzje modelu AI. Dzięki temu masz pełną kontrolę nad tym, który agent odpowiada na jakie wiadomości.
Dostępne kanały
Obsługiwane kanały to: Telegram, WhatsApp, Discord, IRC, Google Chat, Slack, Signal, iMessage, LINE i kanały rozszerzeń. WebChat pełni rolę wewnętrznego interfejsu i nie podlega konfiguracji routingu wychodzącego.
Wzorce kluczy sesji
Klucze sesji determinują, jak wiadomości są grupowane i izolowane:
- Wiadomości bezpośrednie — konsolidowane do głównej sesji agenta:
agent:<agentId>:<mainKey> - Grupy:
agent:<agentId>:<channel>:group:<id> - Kanały/pokoje:
agent:<agentId>:<channel>:channel:<id> - Wątki dopisują:
:thread:<threadId> - Tematy forum Telegram dopisują:
:topic:<topicId>
Przykłady: agent:main:telegram:group:-1001234567890:topic:42, agent:main:discord:channel:123456:thread:987654.
Przypinanie sesji DM
Gdy session.dmScope jest ustawione na main, wiadomości prywatne mogą dzielić jedną główną sesję. Aby zapobiec nadpisywaniu lastRoute przez wiadomości od osób niebędących właścicielem, OpenClaw przypina właściciela gdy:
allowFromzawiera dokładnie jeden niewildcardowy wpis- Ten wpis normalizuje się do konkretnego ID nadawcy
- Przychodzący nadawca różni się od przypiętego właściciela
W takim przypadku metadane rejestrują aktywność przychodzącą bez aktualizacji trasy głównej sesji.
Hierarchia wyboru agenta
System wybiera agenta według następującej kolejności priorytetów:
- Dokładne dopasowanie peera przez powiązania (bindings)
- Dziedziczenie przez parent peer/thread
- Dopasowanie gildii Discord + rola
- Sama gildia Discord
- Dopasowanie zespołu Slack
- Dopasowanie konta
- Dopasowanie kanału z wildcard kont
- Domyślny agent (fallback)
Wiele pól dopasowania w powiązaniu wymaga jednoczesnego spełnienia wszystkich kryteriów.
Konfiguracja powiązań
{
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" }
]
}
Grupy broadcast
Wielu agentów może jednocześnie obsługiwać identycznych peerów przez grupy broadcast:
{
broadcast: {
strategy: "parallel",
"120363403215116621@g.us": ["alfred", "baerbel"],
"+48123456789": ["support", "logger"]
}
}
Strategia parallel uruchamia wszystkich agentów równocześnie.
Przechowywanie sesji
Sesje persystują w: ~/.openclaw/agents/<agentId>/sessions/sessions.json. Transkrypty JSONL przechowywane są obok głównego pliku sesji. Niestandardowe ścieżki obsługują zmienne szablonowe {agentId}. Discovery Gateway i ACP skanuje magazyny na dysku w katalogach agentów, ignorując symlinki i zewnętrzne ścieżki.
Integracja WebChat
WebChat łączy się z wyznaczonym agentem i domyślnie korzysta z jego głównej sesji, umożliwiając widoczność kontekstu międzykanałowego w jednym interfejsie.
Metadane odpowiedzi
Przychodzące odpowiedzi zawsze zawierają:
ReplyToIdiReplyToSender— identyfikatoryReplyToBody— treść (gdy dostępna)- Cytowany kontekst dołączony jako bloki
[Replying to ...]
Ta standaryzacja obowiązuje jednakowo na wszystkich obsługiwanych kanałach.