Wiadomosci grupowe (kanal webowy WhatsApp)
Cel: pozwolic Clawd siedziec w grupach WhatsApp, budzic sie tylko po pingniecin i utrzymywac ten watek oddzielnie od osobistej sesji DM.
Uwaga: agents.list[].groupChat.mentionPatterns jest teraz uzywany rowniez przez Telegram/Discord/Slack/iMessage; ta dokumentacja skupia sie na zachowaniu specyficznym dla WhatsApp. W konfiguracjach wieloagentowych ustaw agents.list[].groupChat.mentionPatterns dla kazdego agenta (lub uzyj messages.groupChat.mentionPatterns jako globalnego zastepczego).
Co jest zaimplementowane (2025-12-03)
- Tryby aktywacji:
mention(domyslny) lubalways.mentionwymaga pingniecin (prawdziwe @-wzmianki WhatsApp przezmentionedJids, wzorce regex lub E.164 bota gdziekolwiek w tekscie).alwaysbudzi agenta przy kazdej wiadomosci, ale powinien on odpowiadac tylko wtedy, gdy moze wniesc merytoryczna wartosc; w przeciwnym razie zwraca token ciszyNO_REPLY. Domyslne mozna ustawic w konfiguracji (channels.whatsapp.groups) i nadpisac per grupa przez/activation. Gdychannels.whatsapp.groupsjest ustawione, dziala tez jako lista dozwolonych grup (dodaj"*"aby zezwolic na wszystkie). - Polityka grupowa:
channels.whatsapp.groupPolicykontroluje, czy wiadomosci grupowe sa akceptowane (open|disabled|allowlist).allowlistuzywachannels.whatsapp.groupAllowFrom(zastepczym: jawnechannels.whatsapp.allowFrom). Domyslna toallowlist(blokowane do momentu dodania nadawcow). - Sesje per grupa: klucze sesji wygladaja jak
agent:<agentId>:whatsapp:group:<jid>, wiec polecenia takie jak/verbose onczy/think high(wyslane jako samodzielne wiadomosci) sa ograniczone do tej grupy; stan osobistych DM pozostaje nietkniety. Heartbeaty sa pomijane dla watkow grupowych. - Wstrzykiwanie kontekstu: oczekujace wiadomosci grupowe (domyslnie 50), ktore nie wyzwolily uruchomienia, sa dodawane z prefiksem
[Chat messages since your last reply - for context], a wiadomosc wyzwalajaca pod[Current message - respond to this]. Wiadomosci juz w sesji nie sa ponownie wstrzykiwane. - Wyswietlanie nadawcy: kazda partia grupowa konczy sie teraz
[from: Sender Name (+E164)], wiec Pi wie, kto mowi. - Efemeryczne/view-once: rozpakowujemy je przed wyodrebnieniem tekstu/wzmianek, wiec pingi wewnatrz nich nadal wyzwalaja.
- Prompt systemowy grupy: na pierwszym kroku sesji grupowej (i za kazdym razem, gdy
/activationzmienia tryb) wstrzykujemy krotki blurb do promptu systemowego, np.You are replying inside the WhatsApp group "<subject>". Group members: Alice (+44...), Bob (+43...), … Activation: trigger-only … Address the specific sender noted in the message context.Jesli metadane nie sa dostepne, nadal informujemy agenta, ze to czat grupowy.
Przyklad konfiguracji (WhatsApp)
Dodaj blok groupChat do ~/.openclaw/openclaw.json, aby pingi po nazwie wyswietlanej dzialaly nawet gdy WhatsApp usuwa wizualne @ z tresci wiadomosci:
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
},
},
},
agents: {
list: [
{
id: "main",
groupChat: {
historyLimit: 50,
mentionPatterns: ["@?openclaw", "\\+?15555550123"],
},
},
],
},
}
Uwagi:
- Wyrazenia regularne sa niewrazliwe na wielkosc liter; obejmuja ping po nazwie wyswietlanej jak
@openclawi surowy numer z lub bez+/spacji. - WhatsApp nadal wysyla kanoniczne wzmianki przez
mentionedJidsgdy ktos tapnie kontakt, wiec zastepczym numer jest rzadko potrzebny, ale jest przydatna siatka bezpieczenstwa.
Polecenie aktywacji (tylko wlasciciel)
Uzyj polecenia czatu grupowego:
/activation mention/activation always
Tylko numer wlasciciela (z channels.whatsapp.allowFrom lub wlasny E.164 bota gdy nie ustawiony) moze to zmieniac. Wyslij /status jako samodzielna wiadomosc w grupie, aby zobaczyc aktualny tryb aktywacji.
Jak uzywac
- Dodaj swoje konto WhatsApp (to z OpenClaw) do grupy.
- Napisz
@openclaw …(lub umiesc numer). Tylko nadawcy z listy dozwolonych moga wyzwalac, chyba ze ustawiszgroupPolicy: "open". - Prompt agenta bedzie zawieral ostatni kontekst grupowy plus koncowy znacznik
[from: …], dzieki czemu moze odpowiedziec wlasciwej osobie. - Dyrektywy sesji (
/verbose on,/think high,/newlub/reset,/compact) dotycza tylko sesji tej grupy; wyslij je jako samodzielne wiadomosci, aby zostaly zarejestrowane. Twoja osobista sesja DM pozostaje niezalezna.
Testowanie / weryfikacja
- Reczny test:
- Wyslij ping
@openclaww grupie i potwierdz odpowiedz, ktora odwoluje sie do nazwy nadawcy. - Wyslij drugi ping i zweryfikuj, ze blok historii jest dolaczony, a potem wyczyszczony w nastepnym kroku.
- Wyslij ping
- Sprawdz logi gateway (uruchom z
--verbose), aby zobaczyc wpisyinbound web messagepokazujacefrom: <groupJid>i sufiks[from: …].
Znane uwagi
- Heartbeaty sa celowo pomijane dla grup, aby unikac halasliwych rozgloszen.
- Tlumienie echa uzywa polaczonego ciagu partii; jesli wyslasz identyczny tekst dwukrotnie bez wzmianek, tylko pierwszy uzyska odpowiedz.
- Wpisy magazynu sesji pojawia sie jako
agent:<agentId>:whatsapp:group:<jid>w magazynie sesji (~/.openclaw/agents/<agentId>/sessions/sessions.jsondomyslnie); brak wpisu oznacza po prostu, ze grupa nie wyzwolila jeszcze uruchomienia. - Wskazniki pisania w grupach kieruja sie
agents.defaults.typingMode(domyslnie:messagegdy nie wspomniony).