// dokumentacja openclaw

Routing kanałów w OpenClaw — kierowanie wiadomości

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:

  • allowFrom zawiera 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:

  1. Dokładne dopasowanie peera przez powiązania (bindings)
  2. Dziedziczenie przez parent peer/thread
  3. Dopasowanie gildii Discord + rola
  4. Sama gildia Discord
  5. Dopasowanie zespołu Slack
  6. Dopasowanie konta
  7. Dopasowanie kanału z wildcard kont
  8. 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ą:

  • ReplyToId i ReplyToSender — identyfikatory
  • ReplyToBody — treść (gdy dostępna)
  • Cytowany kontekst dołączony jako bloki [Replying to ...]

Ta standaryzacja obowiązuje jednakowo na wszystkich obsługiwanych kanałach.