Wprowadzenie
OpenClaw obsługuje czaty grupowe jednolicie na wielu platformach: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp i Zalo. Ten rozdział wyjaśnia wspólne mechanizmy kontroli grup, sesji i narzędzi.
Domyślne zachowanie
Grupy domyślnie ograniczają dostęp za pomocą modelu listy dozwolonych. Odpowiedzi wymagają wzmianki, chyba że jawnie wyłączysz to wymaganie. Przepływ oceny wiadomości wygląda następująco:
- Czy
groupPolicyjest ustawione nadisabled? → Odrzuć - Czy grupa jest na liście dozwolonych? → Odrzuć, jeśli nie
- Czy wymagana jest wzmianka? → Zapamiętaj, jeśli brak, w przeciwnym razie odpowiedz
Autoryzacja wyzwalania i widoczność kontekstu
Dwa oddzielne mechanizmy autoryzacji:
- Autoryzacja wyzwalania — kto może inicjować akcje agenta (
groupPolicy,groups,groupAllowFrom) - Widoczność kontekstu — jakie dodatkowe informacje trafiają do modelu (tekst odpowiedzi, cytaty, historia wątku)
Polityki grupowe
Trzy polityki kontrolują obsługę wiadomości grupowych per kanał:
- open — grupy pomijają listy dozwolonych; bramkowanie wzmiankami nadal obowiązuje
- disabled — blokuje wszystkie wiadomości grupowe
- allowlist — pozwala tylko na grupy pasujące do skonfigurowanych list
Bramkowanie wzmianek
Wiadomości grupowe domyślnie wymagają wzmianki, chyba że zostanie to nadpisane per grupa. Odpowiedź na wiadomość bota liczy się jako niejawna wzmianka na platformach udostępniających metadane cytatów (Telegram, WhatsApp, Slack, Discord, Microsoft Teams, Zalo).
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
"123@g.us": { requireMention: false }
}
}
},
agents: {
list: [{
id: "main",
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"],
historyLimit: 50
}
}]
}
}
Wzorce są case-insensitive z regexowymi zabezpieczeniami. Natywne wzmianki mają priorytet — wzorce służą jako rezerwowy mechanizm.
Klucze sesji
Sesje grupowe korzystają z formatu: agent:<agentId>:<channel>:group:<id>. Pokoje i kanały: agent:<agentId>:<channel>:channel:<id>. Tematy forum Telegram dopisują: :topic:<threadId>. DM korzystają z sesji głównej. Sesje grupowe pomijają heartbeaty.
Wzorzec: osobiste DM + publiczne grupy
Architektura, w której ruch „osobisty" idzie przez DM, a „publiczny" przez grupy. Przy włączonym sandboxie mode: "non-main":
- DM — pełen dostęp do narzędzi (wykonanie na hoście)
- Grupy — sandbox z ograniczonymi narzędziami (wykonanie w Dockerze)
Można też selektywnie udostępniać ścieżki do plików:
{
agents: {
defaults: {
sandbox: {
mode: "non-main",
scope: "session",
workspaceAccess: "none",
docker: {
binds: ["/home/user/Shared:/data:ro"]
}
}
}
}
}
Ograniczenia narzędzi per grupa
Niektóre kanały obsługują konfigurację dostępnych narzędzi w konkretnych grupach:
tools— allow/deny dla całej grupytoolsBySender— nadpisania per nadawca z prefiksami:id:<senderId>,e164:<telefon>,username:<handle>, wildcard"*"
Kolejność rozwiązywania (od najdokładniejszego):
toolsBySendergrupy/kanałutoolsgrupy/kanałutoolsBySenderdomyślnych ("*")toolsdomyślnych ("*")
Komenda aktywacji
Właściciele grup mogą przełączać aktywację per grupa:
/activation mention— odpowiadaj tylko na wzmianki/activation always— odpowiadaj na wszystkie wiadomości
Właściciel jest określany na podstawie channels.whatsapp.allowFrom (lub własnego numeru E.164 bota, jeśli nie ustawiono).
Konfiguracja per platforma
Różne platformy korzystają z różnych struktur konfiguracji:
- WhatsApp/Telegram/Signal/iMessage/Teams/Zalo —
groupAllowFrom(rezerwowo:allowFrom) - Discord — zagnieżdżona struktura:
channels.discord.guilds.<id>.channels - Slack —
channels.slack.channels - Matrix —
channels.matrix.groupsz ID pokojów lub aliasami; listy dozwolone per pokój przezusers