Configuration
Grupy
OpenClaw stosuje te same reguły grup we wszystkich kanałach obsługujących grupy, w tym Discord, iMessage, Matrix, Microsoft Teams, QQBot, Signal, Slack, Telegram, WhatsApp i Zalo.
W przypadku stale aktywnych pokojów, które powinny dostarczać dyskretny kontekst, chyba że agent jawnie wyśle widoczną wiadomość, zobacz Zdarzenia pokoju w tle.
Wprowadzenie dla początkujących (2 minuty)
OpenClaw „działa” na własnych kontach komunikatorów użytkownika. Nie istnieje oddzielny użytkownik bota WhatsApp: jeśli użytkownik należy do grupy, OpenClaw może ją zobaczyć i w niej odpowiadać.
Domyślne zachowanie:
- Grupy są ograniczone (
groupPolicy: "allowlist"); nadawcy w grupach są blokowani do czasu dodania ich do listy dozwolonych. - Odpowiedzi wymagają wzmianki, chyba że dla danej grupy wyłączono ograniczenie oparte na wzmiankach.
- Końcowy tekst odpowiedzi jest automatycznie publikowany w pokoju (
visibleReplies: "automatic").
Innymi słowy: nadawcy z listy dozwolonych mogą uruchomić OpenClaw, wspominając o nim.
Skrócony przebieg (co dzieje się z wiadomością grupową):
groupPolicy? disabled -> odrzućgroupPolicy? allowlist -> grupa dozwolona? nie -> odrzućrequireMention? tak -> wspomniano? nie -> zapisz tylko jako kontekstwzmianka/odpowiedź/polecenie/wiadomość prywatna -> żądanie użytkownikarozmowa w stale aktywnej grupie -> żądanie użytkownika lub zdarzenie pokoju, jeśli skonfigurowanoWidoczne odpowiedzi
W przypadku zwykłych żądań w grupach lub kanałach OpenClaw domyślnie używa messages.groupChat.visibleReplies: "automatic": końcowy tekst asystenta jest publikowany w pokoju jako widoczna odpowiedź.
Użyj messages.groupChat.visibleReplies: "message_tool", gdy w pokoju współdzielonym agent powinien decydować, kiedy zabrać głos, wywołując message(action=send). Działa to najlepiej z modelami niezawodnie korzystającymi z narzędzi (na przykład GPT-5.6 Sol). Jeśli model nie użyje narzędzia i zwróci merytoryczny tekst końcowy, OpenClaw zachowa ten tekst jako prywatny, zamiast publikować go w pokoju.
Użyj "automatic" w przypadku modeli lub środowisk uruchomieniowych, które nie przestrzegają niezawodnie dostarczania wyłącznie przez narzędzia: zwykłe końcowe odpowiedzi tekstowe są publikowane bezpośrednio w pokoju, a agent nadal może wywołać message(action=send) w celu wysłania plików, obrazów lub innych załączników, których nie można dołączyć do tekstu końcowego.
Jeśli narzędzie wiadomości jest niedostępne w ramach aktywnej polityki narzędzi, OpenClaw powraca do automatycznych widocznych odpowiedzi, zamiast po cichu pomijać odpowiedź. openclaw doctor ostrzega o tej niezgodności.
W przypadku czatów bezpośrednich i każdego innego zdarzenia źródłowego messages.visibleReplies: "message_tool" stosuje globalnie to samo zachowanie oparte wyłącznie na narzędziu; messages.groupChat.visibleReplies pozostaje bardziej szczegółowym nadpisaniem dla pokojów grupowych i kanałów. Bezpośrednie interakcje w wewnętrznym WebChat domyślnie automatycznie dostarczają końcową odpowiedź, dzięki czemu Pi i Codex korzystają z tego samego kontraktu widocznej odpowiedzi.
Tryb oparty wyłącznie na narzędziu zastępuje stary wzorzec wymuszania na modelu odpowiedzi NO_REPLY w większości interakcji w trybie biernej obserwacji. W trybie opartym wyłącznie na narzędziu prompt nie definiuje kontraktu NO_REPLY; brak widocznego działania oznacza po prostu niewywołanie narzędzia wiadomości.
Wyjątkiem są powiązania konwersacji zarządzane przez Plugin. Gdy Plugin powiąże wątek i przejmie przychodzącą interakcję, zwrócona przez Plugin odpowiedź staje się widoczną odpowiedzią powiązania; nie wymaga message(action=send). Jest to wynik środowiska uruchomieniowego Plugin, a nie prywatny tekst końcowy modelu.
Wskaźniki pisania są nadal wysyłane dla bezpośrednich żądań grupowych. Zdarzenia stale aktywnych pokojów w tle, jeśli są włączone, pozostają ściśle dyskretne, chyba że agent wywoła narzędzie wiadomości.
Sesje domyślnie ukrywają szczegółowe podsumowania narzędzi i postępu. Użyj /verbose on (lub /verbose full), aby wyświetlać je w bieżącej sesji podczas debugowania, oraz /verbose off, aby powrócić do zachowania obejmującego wyłącznie odpowiedzi końcowe. Stan szczegółowości jest przypisany do sesji i działa tak samo w czatach bezpośrednich, grupach, kanałach i tematach forum.
Aby przesyłać niewspominające agenta rozmowy w stale aktywnej grupie jako dyskretny kontekst pokoju zamiast żądań użytkownika, użyj Zdarzeń pokoju w tle:
{ messages: { groupChat: { unmentionedInbound: "room_event", }, },}Wartością domyślną jest unmentionedInbound: "user_request". Wiadomości ze wzmiankami, polecenia, żądania przerwania i wiadomości prywatne nadal są żądaniami użytkownika.
Aby wymagać przesyłania widocznych danych wyjściowych przez narzędzie wiadomości w przypadku żądań grupowych i kanałowych:
{ messages: { groupChat: { visibleReplies: "message_tool", }, },}Aby wymagać tego dla każdego czatu źródłowego:
{ messages: { visibleReplies: "message_tool", },}Gateway wykrywa zmiany konfiguracji messages bez ponownego uruchamiania po zapisaniu pliku. Ponowne uruchomienie jest wymagane tylko wtedy, gdy przeładowywanie konfiguracji jest wyłączone (gateway.reload.mode: "off").
Interakcje poleceń omijają visibleReplies: "message_tool" i zawsze odpowiadają w widoczny sposób: zarówno natywne polecenia z ukośnikiem (Discord, Telegram i inne interfejsy z natywną obsługą poleceń), jak i autoryzowane polecenia tekstowe /... publikują odpowiedź w czacie źródłowym. Nieautoryzowane tekstowe interakcje /... w grupach pozostają obsługiwane wyłącznie przez narzędzie wiadomości; zwykłe interakcje czatu działają zgodnie ze skonfigurowanym ustawieniem domyślnym.
Widoczność kontekstu i listy dozwolonych
Bezpieczeństwo grup obejmuje dwa różne mechanizmy kontroli:
- Autoryzacja wyzwalania: kto może uruchamiać agenta (
groupPolicy,groups,groupAllowFrom, listy dozwolonych właściwe dla kanału). - Widoczność kontekstu: jaki dodatkowy kontekst jest przekazywany do modelu (tekst odpowiedzi/cytatu, historia wątku, metadane przekazania).
Domyślnie OpenClaw zachowuje kontekst w otrzymanej postaci: listy dozwolonych określają, kto może wyzwalać działania, a nie jakie cytowane lub historyczne fragmenty widzi model. Aby również filtrować dodatkowy kontekst, ustaw contextVisibility:
| Tryb | Zachowanie |
|---|---|
"all" (domyślnie) |
Zachowaj dodatkowy kontekst w otrzymanej postaci. |
"allowlist" |
Przekazuj historię, wątek, cytat i przekazany kontekst tylko od nadawców z listy dozwolonych. |
"allowlist_quote" |
allowlist, a dodatkowo zachowaj jawnie cytowaną wiadomość lub wiadomość, na którą udzielono odpowiedzi, od dowolnego nadawcy. |
Ustaw tę opcję dla kanału (channels.<channel>.contextVisibility), konta (channels.<channel>.accounts.<accountId>.contextVisibility) lub globalnie (channels.defaults.contextVisibility). Kanały pobierające dodatkowy kontekst (Discord, Feishu, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp) stosują tę politykę podczas tworzenia kontekstu przychodzącego; nieznane kombinacje polityk skutkują bezpiecznym odrzuceniem i pominięciem kontekstu.
W zależności od celu:
| Cel | Ustawienie |
|---|---|
| Zezwalaj na wszystkie grupy, ale odpowiadaj tylko na @wzmianki | groups: { "*": { requireMention: true } } |
| Wyłącz wszystkie odpowiedzi grupowe | groupPolicy: "disabled" |
| Tylko określone grupy | groups: { "<group-id>": { ... } } (bez klucza "*") |
| Tylko użytkownik może wyzwalać działania w grupach | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
| Używaj jednego zaufanego zestawu nadawców w wielu kanałach | groupAllowFrom: ["accessGroup:operators"] |
Informacje o listach dozwolonych nadawców wielokrotnego użytku zawiera sekcja Grupy dostępu.
Klucze sesji
- Sesje grupowe używają kluczy sesji
agent:<agentId>:<channel>:group:<id>(pokoje i kanały używająagent:<agentId>:<channel>:channel:<id>). - Tematy forum Telegram dodają
:topic:<threadId>do identyfikatora grupy, dzięki czemu każdy temat ma własną sesję. - Czaty bezpośrednie używają sesji głównej (lub sesji osobnych dla poszczególnych nadawców, jeśli skonfigurowano
session.dmScope). - Heartbeat działa w skonfigurowanej sesji Heartbeat (domyślnie w głównej sesji agenta); sesje grupowe nie uruchamiają własnych Heartbeat.
Wzorzec: osobiste wiadomości prywatne i publiczne grupy (jeden agent)
Tak — sprawdza się to dobrze, jeśli „osobisty” ruch obejmuje wiadomości prywatne, a „publiczny” ruch obejmuje grupy.
Przyczyna: w trybie jednego agenta wiadomości prywatne zwykle trafiają do klucza sesji głównej (agent:main:main), natomiast grupy zawsze używają kluczy sesji innych niż główny (agent:main:<channel>:group:<id>). Jeśli piaskownica zostanie włączona za pomocą mode: "non-main", te sesje grupowe będą działać w skonfigurowanym zapleczu piaskownicy, podczas gdy główna sesja wiadomości prywatnych pozostanie na hoście. Jeśli nie zostanie wybrane inne zaplecze, domyślnie używany jest Docker.
Zapewnia to jeden „mózg” agenta (wspólny obszar roboczy i pamięć), ale dwa tryby wykonywania:
- Wiadomości prywatne: pełny zestaw narzędzi (host)
- Grupy: piaskownica i ograniczony zestaw narzędzi
Wiadomości prywatne na hoście, grupy w piaskownicy
{ agents: { defaults: { sandbox: { mode: "non-main", // grupy/kanały nie są główne -> działają w piaskownicy scope: "session", // najsilniejsza izolacja (jeden kontener na grupę/kanał) workspaceAccess: "none", }, }, }, tools: { sandbox: { tools: { // Jeśli lista allow nie jest pusta, wszystko inne jest blokowane (deny nadal ma pierwszeństwo). allow: ["group:messaging", "group:sessions"], deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"], }, }, },}Grupy widzą tylko folder z listy dozwolonych
Potrzebne jest ustawienie „grupy widzą tylko folder X” zamiast „brak dostępu do hosta”? Zachowaj workspaceAccess: "none" i zamontuj w piaskownicy tylko ścieżki z listy dozwolonych:
{ agents: { defaults: { sandbox: { mode: "non-main", scope: "session", workspaceAccess: "none", docker: { binds: [ // ścieżkaHosta:ścieżkaKontenera:tryb "/home/user/FriendsShared:/data:ro", ], }, }, }, },}Powiązane informacje:
- Klucze konfiguracji i wartości domyślne: Konfiguracja Gateway
- Debugowanie przyczyn blokowania narzędzia: Piaskownica a polityka narzędzi a podwyższone uprawnienia
- Szczegóły montowania powiązań: Piaskownica
Etykiety wyświetlania
- Etykiety interfejsu użytkownika używają
displayName, jeśli jest dostępny, w formacie<channel>:<token>. #roomjest zarezerwowany dla pokojów i kanałów; czaty grupowe używająg-<slug>(małe litery, spacje ->-, zachowaj#@+._-). Bardzo długie nieprzezroczyste identyfikatory są skracane do stabilnego tokenu, aby pełne identyfikatory tras nie trafiały do interfejsu użytkownika.
Polityka grup
Sterowanie obsługą wiadomości grupowych i wiadomości w pokojach dla poszczególnych kanałów:
{ channels: { whatsapp: { groupPolicy: "disabled", // "open" | "disabled" | "allowlist" groupAllowFrom: ["+15551234567"], }, telegram: { groupPolicy: "disabled", groupAllowFrom: ["123456789"], // numeryczny identyfikator użytkownika Telegram (konfiguracja rozpoznaje @username) }, signal: { groupPolicy: "disabled", groupAllowFrom: ["+15551234567"], }, imessage: { groupPolicy: "disabled", groupAllowFrom: ["chat_id:123"], }, msteams: { groupPolicy: "disabled", groupAllowFrom: ["user@org.com"], }, discord: { groupPolicy: "allowlist", guilds: { GUILD_ID: { channels: { help: { enabled: true } } }, }, }, slack: { groupPolicy: "allowlist", channels: { "#general": { enabled: true } }, }, matrix: { groupPolicy: "allowlist", groupAllowFrom: ["@owner:example.org"], groups: { "!roomId:example.org": { enabled: true }, "#alias:example.org": { enabled: true }, }, }, },}| Zasada | Zachowanie |
|---|---|
"open" |
Grupy omijają listy dozwolonych; wymóg wzmianki nadal obowiązuje. |
"disabled" |
Całkowicie blokuje wszystkie wiadomości grupowe. |
"allowlist" |
Zezwala tylko na grupy/pokoje pasujące do skonfigurowanej listy dozwolonych. |
Uwagi dotyczące poszczególnych kanałów
groupPolicyjest niezależne od wymogu wzmianki (który wymaga @wzmianek).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: używa
groupAllowFrom(wartość zastępcza: jawneallowFrom). - Signal:
groupAllowFrommoże pasować do identyfikatora przychodzącej grupy Signal albo telefonu/UUID nadawcy. - Zatwierdzenia parowania wiadomości bezpośrednich (wpisy magazynu
*-allowFrom) dotyczą tylko dostępu do wiadomości bezpośrednich; autoryzacja nadawców grupowych nadal wymaga jawnych grupowych list dozwolonych. - 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. Należy używać identyfikatorów pokojów (!room:server) lub aliasów (#alias:server); klucze nazw pokojów są dopasowywane tylko zchannels.matrix.dangerouslyAllowNameMatching: true, a nierozpoznane wpisy są ignorowane podczas działania. Aby ograniczyć nadawców, należy użyćchannels.matrix.groupAllowFrom; obsługiwane są również listy dozwolonychusersdla poszczególnych pokojów. - Grupowe wiadomości bezpośrednie są kontrolowane oddzielnie (
channels.discord.dm.*,channels.slack.dm.*:groupEnabled,groupChannels). - Telegram: listy dozwolonych nadawców przyjmują wyłącznie numeryczne identyfikatory użytkowników (
"123456789"; prefiksytelegram:/tg:są usuwane bez rozróżniania wielkości liter). Wpisy@usernamenie są dopasowywane podczas działania i powodują zapisanie ostrzeżenia w dzienniku; konfiguracja rozpoznaje@usernamejako identyfikatory. Ujemne identyfikatory czatów należy umieszczać wchannels.telegram.groups, a nie na listach dozwolonych nadawców. - Wartością domyślną jest
groupPolicy: "allowlist"; jeśli grupowa lista dozwolonych jest pusta, wiadomości grupowe są blokowane. - Bezpieczeństwo podczas działania: gdy całkowicie brakuje bloku dostawcy (brak
channels.<provider>), zasada grupowa przechodzi bezpiecznie doallowlistzamiast dziedziczyćchannels.defaults.groupPolicy, a Gateway zapisuje tę wartość zastępczą w dzienniku raz dla każdego konta.
Uproszczony model działania (kolejność oceny wiadomości grupowych):
groupPolicy
groupPolicy (open/disabled/allowlist).
Grupowe listy dozwolonych
Grupowe listy dozwolonych (*.groups, *.groupAllowFrom, lista dozwolonych specyficzna dla kanału).
Wymóg wzmianki
Wymóg wzmianki (requireMention, /activation).
Wymóg wzmianki (domyślny)
Wiadomości grupowe wymagają wzmianki, chyba że ustawienie zostanie nadpisane dla danej grupy. Wartości domyślne są określane dla poszczególnych podsystemów w *.groups."*".
Odpowiedź na wiadomość bota jest uznawana za niejawną wzmiankę, jeśli kanał udostępnia metadane odpowiedzi; cytowanie wiadomości bota może również zostać uznane za wzmiankę w kanałach udostępniających metadane cytatu. Obecnie wbudowane przypadki obejmują: Discord, Microsoft Teams, QQBot, Slack, Telegram, WhatsApp oraz osobiste Zalo.
{ channels: { whatsapp: { groups: { "*": { requireMention: true }, "123@g.us": { requireMention: false }, }, }, telegram: { groups: { "*": { requireMention: true }, "123456789": { requireMention: false }, }, }, imessage: { groups: { "*": { requireMention: true }, "123": { requireMention: false }, }, }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw", "\\+15555550123"], historyLimit: 50, }, }, ], },}Ograniczanie zakresu skonfigurowanych wzorców wzmianek
Skonfigurowane mentionPatterns są zastępczymi wyzwalaczami w postaci wyrażeń regularnych. Należy ich używać, gdy
platforma nie udostępnia natywnej wzmianki o bocie lub gdy zwykły tekst, taki
jak openclaw:, ma być uznawany za wzmiankę. Natywne wzmianki platformy są niezależne:
gdy Discord, Slack, Telegram, Matrix, Signal lub inny kanał może potwierdzić, że wiadomość
jawnie zawierała wzmiankę o bocie, ta natywna wzmianka nadal zadziała, nawet jeśli
skonfigurowane wzorce wyrażeń regularnych są wyłączone.
Domyślnie skonfigurowane wzorce wzmianek obowiązują wszędzie tam, gdzie kanał przekazuje informacje o dostawcy i konwersacji do mechanizmu wykrywania wzmianek. Aby szerokie wzorce nie aktywowały agenta w każdej grupie, należy ograniczyć ich zakres dla poszczególnych kanałów za pomocą channels.<channel>.mentionPatterns.
Należy użyć mode: "deny", gdy wzorce wzmianek oparte na wyrażeniach regularnych mają być domyślnie wyłączone dla kanału, a następnie włączyć je w określonych pokojach za pomocą allowIn:
{ messages: { groupChat: { mentionPatterns: ["\\bopenclaw\\b", "\\bops bot\\b"], }, }, channels: { slack: { mentionPatterns: { mode: "deny", allowIn: ["C0123OPS"], }, }, },}Należy użyć domyślnego mode: "allow" (lub pominąć mode), gdy wzorce wzmianek oparte na wyrażeniach regularnych mają obowiązywać szeroko, a następnie wyłączyć je w hałaśliwych pokojach za pomocą denyIn:
{ messages: { groupChat: { mentionPatterns: ["\\bopenclaw\\b"], }, }, channels: { telegram: { mentionPatterns: { denyIn: ["-1001234567890", "-1001234567890:topic:42"], }, }, },}Rozstrzyganie zasad:
| Pole | Efekt |
|---|---|
mode: "allow" |
Wzorce wzmianek oparte na wyrażeniach regularnych są włączone, chyba że identyfikator konwersacji znajduje się w denyIn. Jest to wartość domyślna. |
mode: "deny" |
Wzorce wzmianek oparte na wyrażeniach regularnych są wyłączone, chyba że identyfikator konwersacji znajduje się w allowIn. |
allowIn |
Identyfikatory konwersacji, dla których wzorce wzmianek oparte na wyrażeniach regularnych są włączone w trybie odmowy. |
denyIn |
Identyfikatory konwersacji, dla których wzorce wzmianek oparte na wyrażeniach regularnych są wyłączone. denyIn ma pierwszeństwo przed allowIn, jeśli oba zawierają ten sam identyfikator. |
Obecnie obsługiwana zasada zakresu wyrażeń regularnych:
| Kanał | Identyfikatory używane w allowIn / denyIn |
|---|---|
| Discord | Identyfikatory kanałów Discord. |
| Matrix | Identyfikatory pokojów Matrix. |
| Slack | Identyfikatory kanałów Slack. |
| Telegram | Identyfikatory czatów grupowych lub chatId:topic:threadId dla tematów forum. |
Identyfikatory konwersacji WhatsApp, takie jak 123@g.us. |
Konfiguracje kanału na poziomie konta mogą określać tę samą zasadę w channels.<channel>.accounts.<accountId>.mentionPatterns, jeśli dany kanał obsługuje wiele kont. Dla danego konta zasada konta ma pierwszeństwo przed zasadą kanału najwyższego poziomu.
Uwagi dotyczące wymogu wzmianki
mentionPatternssą bezpiecznymi wzorcami wyrażeń regularnych bez rozróżniania wielkości liter; nieprawidłowe wzorce i niebezpieczne formy zagnieżdżonych powtórzeń są ignorowane (z ostrzeżeniem).- Pierwszeństwo wzorców:
agents.list[].groupChat.mentionPatterns(przydatne, gdy wielu agentów współdzieli grupę) nadpisujemessages.groupChat.mentionPatterns; jeśli nie ustawiono żadnego z nich, wzorce są wyprowadzane z nazwy/emoji tożsamości agenta. - Wymóg wzmianki jest egzekwowany tylko wtedy, gdy wykrywanie wzmianek jest możliwe (skonfigurowano natywne wzmianki lub
mentionPatterns). - Dodanie grupy lub nadawcy do listy dozwolonych nie wyłącza wymogu wzmianki; należy ustawić
requireMentiontej grupy nafalse, jeśli wszystkie wiadomości mają wyzwalać działanie. - Automatyczny kontekst monitu czatu grupowego zawiera w każdej turze rozpoznaną instrukcję cichej odpowiedzi; pliki obszaru roboczego nie powinny powielać mechaniki
NO_REPLY. - Grupy, w których dozwolone są automatyczne ciche odpowiedzi, traktują puste tury modelu lub tury zawierające wyłącznie rozumowanie jako ciche, równoważne
NO_REPLY. Czaty bezpośrednie nigdy nie otrzymują wskazówekNO_REPLY, a odpowiedzi grupowe korzystające wyłącznie z narzędzia wiadomości pozostają ciche dzięki niewywoływaniumessage(action=send). - Stale aktywna komunikacja w tle w grupie domyślnie korzysta z semantyki żądania użytkownika. Aby przesyłać ją jako cichy kontekst, należy ustawić
messages.groupChat.unmentionedInbound: "room_event". Przykłady konfiguracji znajdują się w sekcji Zdarzenia pokojów w tle. - Zdarzenia pokojów nie są przechowywane jako fikcyjne żądania użytkowników, a prywatny tekst asystenta ze zdarzeń pokojów bez narzędzia wiadomości nie jest ponownie odtwarzany jako historia czatu.
- Wartości domyślne Discord znajdują się w
channels.discord.guilds."*"(można je nadpisać dla poszczególnych serwerów/kanałów). - Kontekst historii grup jest jednolicie opakowywany we wszystkich kanałach. Grupy z wymogiem wzmianki zachowują oczekujące pominięte wiadomości; stale aktywne grupy mogą również zachowywać ostatnio przetworzone wiadomości z pokoju, jeśli kanał to obsługuje. Należy użyć
messages.groupChat.historyLimitjako globalnej wartości domyślnej orazchannels.<channel>.historyLimit(lubchannels.<channel>.accounts.*.historyLimit) do nadpisywania. Aby wyłączyć, należy ustawić0.
Ograniczenia narzędzi dla grup/kanałów (opcjonalne)
Niektóre konfiguracje kanałów umożliwiają ograniczenie narzędzi dostępnych wewnątrz określonej grupy/pokoju/kanału.
tools: zezwala na narzędzia lub ich zabrania dla całej grupy (allow,alsoAllow,deny; odmowa ma pierwszeństwo).toolsBySender: nadpisania dla poszczególnych nadawców w grupie. Należy używać jawnych prefiksów kluczy:channel:<channelId>:<senderId>,id:<senderId>,e164:<phone>,username:<handle>,name:<displayName>oraz symbolu wieloznacznego"*". Identyfikatory kanałów używają kanonicznych identyfikatorów kanałów OpenClaw; aliasy takie jakteamssą normalizowane domsteams. Starsze klucze bez prefiksów są nadal akceptowane, dopasowywane wyłącznie jakoid:i powodują zapisanie ostrzeżenia o wycofaniu w dzienniku.
Kolejność rozstrzygania (najbardziej szczegółowe ustawienie ma pierwszeństwo):
Grupowe toolsBySender
Dopasowanie toolsBySender grupy/kanału.
Narzędzia grupy
tools grupy/kanału.
Domyślne toolsBySender
Dopasowanie domyślnego ("*") toolsBySender.
Narzędzia domyślne
Domyślne ("*") tools.
Przykład (Telegram):
{ channels: { telegram: { groups: { "*": { tools: { deny: ["exec"] } }, "-1001234567890": { tools: { deny: ["exec", "read", "write"] }, toolsBySender: { "id:123456789": { alsoAllow: ["exec"] }, }, }, }, }, },}Listy dozwolonych grup
Gdy skonfigurowano channels.whatsapp.groups, channels.telegram.groups lub channels.imessage.groups, klucze działają jako lista dozwolonych grup. Użycie "*" pozwala zezwolić na wszystkie grupy, jednocześnie nadal określając domyślne zachowanie dotyczące wzmianek.
Typowe zastosowania (do skopiowania i wklejenia):
Wyłącz wszystkie odpowiedzi grupowe
{ channels: { whatsapp: { groupPolicy: "disabled" } },}Zezwalaj tylko na określone grupy (WhatsApp)
{ channels: { whatsapp: { groups: { "123@g.us": { requireMention: true }, "456@g.us": { requireMention: false }, }, }, },}Zezwalaj na wszystkie grupy, ale wymagaj wzmianki
{ channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}Wyzwalacze tylko dla właściciela (WhatsApp)
{ channels: { whatsapp: { groupPolicy: "allowlist", groupAllowFrom: ["+15551234567"], groups: { "*": { requireMention: true } }, }, },}Aktywacja (tylko dla właściciela)
Właściciele grup mogą przełączać aktywację dla poszczególnych grup za pomocą samodzielnej wiadomości:
/activation mention/activation always
/activation jest podstawowym poleceniem dostępnym wyłącznie dla właściciela i ma zastosowanie tylko w czatach grupowych. Właścicielem jest nadawca zgodny z commands.ownerAllowFrom; listy allowFrom kanału kontrolują jedynie zwykły dostęp do kanału i poleceń. Zapisany tryb zastępuje ustawienie requireMention danej grupy w kanałach, które go uwzględniają (Google Chat, QQBot, Telegram, WhatsApp), a wprowadzenie grupowego monitu systemowego wszędzie odzwierciedla aktywny tryb.
Pola kontekstu
Przychodzące ładunki grupowe ustawiają:
ChatType=groupGroupSubject(jeśli znane)GroupMembers(jeśli znane)WasMentioned(wynik bramkowania według wzmianki)- Tematy forum Telegram zawierają również
MessageThreadIdiIsForum.
Monit systemowy agenta zawiera wprowadzenie grupowe w pierwszej turze nowej sesji grupowej (oraz po zmianie /activation). Przypomina ono modelowi, aby odpowiadał jak człowiek, ograniczał puste wiersze, stosował standardowe odstępy w czacie i unikał wpisywania dosłownych sekwencji \n. Kanały, których zadeklarowany tryb tabel nie zachowuje tabel natywnych ani surowych, również odradzają używanie tabel Markdown. Nazwy grup i etykiety uczestników pochodzące z kanału są renderowane jako odgrodzone, niezaufane metadane, a nie wbudowane instrukcje systemowe.
Szczegóły dotyczące iMessage
- Podczas kierowania lub tworzenia listy dozwolonych preferowane jest
chat_id:<id>. - Wyświetlanie listy czatów:
imsg chats --limit 20. - Odpowiedzi grupowe zawsze wracają do tego samego
chat_id.
Monity systemowe WhatsApp
Zobacz WhatsApp, aby poznać kanoniczne reguły monitów systemowych WhatsApp, w tym rozstrzyganie monitów grupowych i bezpośrednich, zachowanie symboli wieloznacznych oraz semantykę nadpisywania na poziomie konta.
Szczegóły dotyczące WhatsApp
Zobacz Wiadomości grupowe, aby poznać zachowanie właściwe tylko dla WhatsApp (wstrzykiwanie historii i szczegóły obsługi wzmianek).