Grupy
OpenClaw traktuje czaty grupowe spójnie na różnych platformach: WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams.Wprowadzenie dla początkujących (2 minuty)
OpenClaw „żyje” na Twoich własnych kontach komunikatorów. Nie ma osobnego użytkownika-bota WhatsApp. Jeśli Ty jesteś w grupie, OpenClaw może widzieć tę grupę i tam odpowiadać. Zachowanie domyślne:- Grupy są ograniczone (
groupPolicy: "allowlist"). - Odpowiedzi wymagają wzmianki, chyba że jawnie wyłączysz kontrolę wzmianek.
TL;DRSzybki przebieg (co dzieje się z wiadomością grupową):
- Dostęp do DM-ów jest kontrolowany przez
*.allowFrom.- Dostęp do grup jest kontrolowany przez
*.groupPolicy+ listy dozwolonych (*.groups,*.groupAllowFrom).- Wyzwalanie odpowiedzi jest kontrolowane przez kontrolę wzmianek (
requireMention,/activation).
| Cel | Co ustawić |
|---|---|
| Zezwolić na wszystkie grupy, ale odpowiadać tylko na @wzmianki | groups: { "*": { requireMention: true } } |
| Wyłączyć wszystkie odpowiedzi w grupach | groupPolicy: "disabled" |
| Tylko określone grupy | groups: { "<group-id>": { ... } } (bez klucza "*") |
| Tylko Ty możesz wyzwalać w grupach | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
Klucze sesji
- Sesje grupowe używają kluczy sesji
agent:<agentId>:<channel>:group:<id>(pokoje/kanały używająagent:<agentId>:<channel>:channel:<id>). - Tematy forum Telegrama dodają
:topic:<threadId>do identyfikatora grupy, aby każdy temat miał własną sesję. - Czaty bezpośrednie używają sesji głównej (lub per-nadawca, jeśli skonfigurowano).
- Sygnały heartbeat są pomijane dla sesji grupowych.
Wzorzec: osobiste DM-y + publiczne grupy (jeden agent)
Tak — to działa dobrze, jeśli Twój ruch „osobisty” to DM-y, a „publiczny” to grupy. Dlaczego: w trybie jednego agenta DM-y zwykle trafiają do głównego klucza sesji (agent:main:main), podczas gdy grupy zawsze używają nie-głównych kluczy sesji (agent:main:<channel>:group:<id>). Jeśli włączysz sandboxing za pomocą mode: "non-main", te sesje grupowe działają w Dockerze, a Twoja główna sesja DM pozostaje na hoście.
Daje to jeden „mózg” agenta (wspólny obszar roboczy + pamięć), ale dwie postawy wykonania:
- DM-y: pełne narzędzia (host)
- Grupy: sandbox + ograniczone narzędzia (Docker)
Jeśli potrzebujesz naprawdę oddzielnych obszarów roboczych/person („osobiste” i „publiczne” nigdy nie mogą się mieszać), użyj drugiego agenta + powiązań. Zobacz Multi-Agent Routing.Przykład (DM-y na hoście, grupy w sandboxie + narzędzia tylko do wiadomości):
workspaceAccess: "none" i zamontuj do sandboxu tylko ścieżki z listy dozwolonych:
- Klucze konfiguracji i ustawienia domyślne: Konfiguracja Gateway
- Debugowanie, dlaczego narzędzie jest zablokowane: Sandbox vs Tool Policy vs Elevated
- Szczegóły montowań bind: Sandboxing
Etykiety wyświetlania
- Etykiety interfejsu używają
displayName, gdy są dostępne, formatowane jako<channel>:<token>. #roomjest zarezerwowane dla pokoi/kanałów; czaty grupowe używająg-<slug>(małe litery, spacje ->-, zachowaj#@+._-).
Polityka grup
Kontroluj, jak wiadomości grupowe/pokojowe są obsługiwane per kanał:| Polityka | Zachowanie |
|---|---|
"open" | Grupy omijają listy dozwolonych; kontrola wzmianek nadal obowiązuje. |
"disabled" | Całkowicie blokuje wszystkie wiadomości grupowe. |
"allowlist" | Zezwala tylko na grupy/pokoje zgodne z skonfigurowaną listą dozwolonych. |
groupPolicyjest niezależne od kontroli wzmianek (która wymaga @wzmianek).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: użyj
groupAllowFrom(fallback: jawneallowFrom). - Discord: lista dozwolonych używa
channels.discord.guilds.<id>.channels. - Slack: lista dozwolonych używa
channels.slack.channels. - Matrix: lista dozwolonych używa
channels.matrix.groups(identyfikatory pokoi, aliasy lub nazwy). Użyjchannels.matrix.groupAllowFrom, aby ograniczyć nadawców; obsługiwane są także listy dozwolonych per-pokójusers. - Grupowe DM-y są kontrolowane osobno (
channels.discord.dm.*,channels.slack.dm.*). - Lista dozwolonych Telegrama może dopasowywać identyfikatory użytkowników (
"123456789","telegram:123456789","tg:123456789") lub nazwy użytkowników ("@alice"lub"alice"); prefiksy są nieczułe na wielkość liter. - Domyślnie obowiązuje
groupPolicy: "allowlist"; jeśli lista dozwolonych grup jest pusta, wiadomości grupowe są blokowane.
groupPolicy(otwarte/wyłączone/lista dozwolonych)- listy dozwolonych grup (
*.groups,*.groupAllowFrom, lista dozwolonych specyficzna dla kanału) - kontrola wzmianek (
requireMention,/activation)
Kontrola wzmianek (domyślnie)
Wiadomości grupowe wymagają wzmianki, chyba że zostanie to nadpisane per grupa. Domyślne wartości znajdują się per podsystem pod*.groups."*".
Odpowiadanie na wiadomość bota liczy się jako domyślna wzmianka (gdy kanał obsługuje metadane odpowiedzi). Dotyczy to Telegrama, WhatsApp, Slacka, Discorda oraz Microsoft Teams.
mentionPatternsto wyrażenia regularne nieczułe na wielkość liter.- Powierzchnie zawierające wyraźne wzmianki nadal są pozytywne; wzory są spadkiem.
- Nadpisanie per-agent:
agents.list[].groupChat.mentionPatterns(przydatne, gdy wiele agentów współdzieli grupę). - Kontrola wzmianek jest egzekwowana tylko wtedy, gdy wykrywanie wzmianek jest możliwe (natywne wzmianki lub skonfigurowane
mentionPatterns). - Domyślne ustawienia Discorda znajdują się w
channels.discord.guilds."*"(z możliwością nadpisania per gildia/kanał). - Kontekst historii grupy jest opakowany jednolicie we wszystkich kanałach i jest tylko-oczekujący (wiadomości pominięte z powodu kontroli wzmianek); użyj
messages.groupChat.historyLimitdla globalnej wartości domyślnej orazchannels.<channel>.historyLimit(lubchannels.<channel>.accounts.*.historyLimit) dla nadpisań. Ustaw0, aby wyłączyć.
Ograniczenia narzędzi dla grup/kanałów (opcjonalne)
Niektóre konfiguracje kanałów obsługują ograniczanie, które narzędzia są dostępne wewnątrz konkretnej grupy/pokoju/kanału.tools: zezwalaj/zabraniaj narzędzi dla całej grupy.toolsBySender: nadpisania per-nadawca w obrębie grupy (klucze to identyfikatory nadawców/nazwy użytkowników/e-maile/numery telefonów w zależności od kanału). Użyj"*"jako symbolu wieloznacznego.
- dopasowanie
toolsBySenderdla grupy/kanału toolsdla grupy/kanału- domyślne (
"*") dopasowanietoolsBySender - domyślne (
"*")tools
- Ograniczenia narzędzi dla grup/kanałów są stosowane dodatkowo do globalnej/per-agent polityki narzędzi (odmowa nadal wygrywa).
- Niektóre kanały używają innego zagnieżdżenia dla pokoi/kanałów (np. Discord
guilds.*.channels.*, Slackchannels.*, MS Teamsteams.*.channels.*).
Listy dozwolonych grup
Gdy skonfigurowane sąchannels.whatsapp.groups, channels.telegram.groups lub channels.imessage.groups, klucze działają jako lista dozwolonych grup. Użyj "*", aby zezwolić na wszystkie grupy przy jednoczesnym ustawieniu domyślnego zachowania wzmianek.
Typowe intencje (kopiuj/wklej):
- Wyłącz wszystkie odpowiedzi w grupach
- Zezwól tylko na określone grupy (WhatsApp)
- Zezwól na wszystkie grupy, ale wymagaj wzmianki (jawnie)
- Tylko właściciel może wyzwalać w grupach (WhatsApp)
Aktywacja (tylko właściciel)
Właściciele grup mogą przełączać aktywację per grupa:/activation mention/activation always
channels.whatsapp.allowFrom (lub własny E.164 bota, gdy nieustawione). Wyślij polecenie jako samodzielną wiadomość. Inne platformy obecnie ignorują /activation.
Pola kontekstu
Przychodzące ładunki grupowe ustawiają:ChatType=groupGroupSubject(jeśli znane)GroupMembers(jeśli znane)WasMentioned(wynik kontroli wzmianek)- Tematy forum Telegrama zawierają także
MessageThreadIdiIsForum.
\n.
Specyfika iMessage
- Preferuj
chat_id:<id>podczas routingu lub tworzenia list dozwolonych. - Lista czatów:
imsg chats --limit 20. - Odpowiedzi grupowe zawsze wracają do tego samego
chat_id.