OpenClaw behandelt groepschats consistent op alle oppervlakken: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Introductie voor beginners (2 minuten)
OpenClaw “leeft” op je eigen berichtenaccounts. Er is geen aparte WhatsApp-botgebruiker. Als jij in een groep zit, kan OpenClaw die groep zien en daar reageren. Standaardgedrag:- Groepen zijn beperkt (
groupPolicy: "allowlist"). - Antwoorden vereisen een vermelding, tenzij je vermeldingsfiltering expliciet uitschakelt.
- Normale eindantwoorden in groepen/kanalen zijn standaard privé. Zichtbare uitvoer in de ruimte gebruikt de
message-tool.
Kort gezegd
- DM-toegang wordt beheerd door
*.allowFrom. - Groepstoegang wordt beheerd door
*.groupPolicy+ toelatingslijsten (*.groups,*.groupAllowFrom). - Antwoordactivering wordt beheerd door vermeldingsfiltering (
requireMention,/activation).
Zichtbare antwoorden
Voor groeps-/kanaalruimtes gebruikt OpenClaw standaardmessages.groupChat.visibleReplies: "message_tool".
Dit betekent dat de agent de beurt nog steeds verwerkt en geheugen-/sessiestatus kan bijwerken, maar dat het normale eindantwoord niet automatisch terug in de ruimte wordt geplaatst. Om zichtbaar te spreken, gebruikt de agent message(action=send).
Gebruik voor directe chats en elke andere bronbeurt messages.visibleReplies: "message_tool" om hetzelfde gedrag voor alleen via tools zichtbare antwoorden globaal toe te passen. messages.groupChat.visibleReplies blijft de specifiekere override voor groeps-/kanaalruimtes.
Dit vervangt het oude patroon waarbij het model voor de meeste luistermodusbeurten gedwongen werd NO_REPLY te antwoorden. In de modus alleen via tools betekent niets zichtbaars doen simpelweg dat de berichtentool niet wordt aangeroepen.
Typindicatoren worden nog steeds verzonden terwijl de agent in de modus alleen via tools werkt. De standaard typmodus voor groepen wordt voor deze beurten opgewaardeerd van “message” naar “instant”, omdat er mogelijk nooit normale assistentberichttekst komt voordat de agent beslist of de berichtentool moet worden aangeroepen. Expliciete configuratie voor de typmodus blijft leidend.
Om verouderde automatische eindantwoorden voor groeps-/kanaalruimtes te herstellen:
visibleReplies: "message_tool" en antwoorden altijd zichtbaar, zodat de kanaaleigen opdracht-UI de verwachte respons krijgt. Dit geldt alleen voor gevalideerde native opdrachtbeurten; als tekst getypte /...-opdrachten en gewone chatbeurten volgen nog steeds de geconfigureerde groepsstandaard.
Contextzichtbaarheid en toelatingslijsten
Bij groepsveiligheid zijn twee verschillende besturingen betrokken:- Activeringsautorisatie: wie de agent kan activeren (
groupPolicy,groups,groupAllowFrom, kanaalspecifieke toelatingslijsten). - Contextzichtbaarheid: welke aanvullende context in het model wordt geïnjecteerd (antwoordtekst, citaten, threadgeschiedenis, doorgestuurde metadata).
Huidig gedrag is kanaalspecifiek
Huidig gedrag is kanaalspecifiek
- Sommige kanalen passen al afzendergebaseerde filtering toe op aanvullende context in specifieke paden (bijvoorbeeld Slack-threadseeding, Matrix-antwoord-/threadopzoekingen).
- Andere kanalen geven citaat-/antwoord-/doorstuurcontext nog steeds door zoals ontvangen.
Hardingsrichting (gepland)
Hardingsrichting (gepland)
contextVisibility: "all"(standaard) behoudt het huidige gedrag zoals ontvangen.contextVisibility: "allowlist"filtert aanvullende context tot toegestane afzenders.contextVisibility: "allowlist_quote"isallowlistplus één expliciete citaat-/antwoorduitzondering.
| Doel | Wat je moet instellen |
|---|---|
| Alle groepen toestaan maar alleen antwoorden op @vermeldingen | groups: { "*": { requireMention: true } } |
| Alle groepsantwoorden uitschakelen | groupPolicy: "disabled" |
| Alleen specifieke groepen | groups: { "<group-id>": { ... } } (geen "*"-sleutel) |
| Alleen jij kunt in groepen activeren | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
Sessiesleutels
- Groepssessies gebruiken
agent:<agentId>:<channel>:group:<id>-sessiesleutels (ruimtes/kanalen gebruikenagent:<agentId>:<channel>:channel:<id>). - Telegram-forumonderwerpen voegen
:topic:<threadId>toe aan de groeps-id, zodat elk onderwerp een eigen sessie heeft. - Directe chats gebruiken de hoofdsessie (of per afzender als dat is geconfigureerd).
- Heartbeats worden overgeslagen voor groepssessies.
Patroon: persoonlijke DM’s + openbare groepen (één agent)
Ja — dit werkt goed als je “persoonlijke” verkeer DM’s is en je “openbare” verkeer groepen is. Waarom: in de modus met één agent komen DM’s doorgaans terecht in de hoofdsessiesleutel (agent:main:main), terwijl groepen altijd niet-hoofdsessiesleutels gebruiken (agent:main:<channel>:group:<id>). Als je sandboxing inschakelt met mode: "non-main", draaien die groepssessies in de geconfigureerde sandbox-backend terwijl je hoofd-DM-sessie op de host blijft. Docker is de standaardbackend als je er geen kiest.
Dit geeft je één agent-”brein” (gedeelde werkruimte + geheugen), maar twee uitvoeringshoudingen:
- DM’s: volledige tools (host)
- Groepen: sandbox + beperkte tools
Als je echt gescheiden werkruimtes/persona’s nodig hebt (“persoonlijk” en “openbaar” mogen nooit mengen), gebruik dan een tweede agent + bindingen. Zie Multi-Agent-routering.
- DM's op host, groepen in sandbox
- Groepen zien alleen een toegestane map
- Configuratiesleutels en standaarden: Gateway-configuratie
- Debuggen waarom een tool wordt geblokkeerd: Sandbox versus toolbeleid versus verhoogd
- Details van bind mounts: Sandboxing
Weergavelabels
- UI-labels gebruiken
displayNamewanneer beschikbaar, geformatteerd als<channel>:<token>. #roomis gereserveerd voor ruimtes/kanalen; groepschats gebruikeng-<slug>(kleine letters, spaties ->-, behoud#@+._-).
Groepsbeleid
Bepaal per kanaal hoe groeps-/ruimteberichten worden verwerkt:| Beleid | Gedrag |
|---|---|
"open" | Groepen omzeilen toelatingslijsten; vermeldingsfiltering blijft van toepassing. |
"disabled" | Blokkeer alle groepsberichten volledig. |
"allowlist" | Sta alleen groepen/ruimtes toe die overeenkomen met de geconfigureerde toelatingslijst. |
Opmerkingen per kanaal
Opmerkingen per kanaal
groupPolicystaat los van vermeldingsfiltering (die @vermeldingen vereist).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: gebruik
groupAllowFrom(fallback: explicieteallowFrom). - Goedkeuringen voor DM-koppeling (
*-allowFrom-storevermeldingen) gelden alleen voor DM-toegang; autorisatie van groepsafzenders blijft expliciet voor groepstoelatingslijsten. - Discord: de toelatingslijst gebruikt
channels.discord.guilds.<id>.channels. - Slack: de toelatingslijst gebruikt
channels.slack.channels. - Matrix: de toelatingslijst gebruikt
channels.matrix.groups. Geef de voorkeur aan ruimte-ID’s of aliassen; naamopzoeking voor toegetreden ruimtes is best-effort, en onopgeloste namen worden tijdens runtime genegeerd. Gebruikchannels.matrix.groupAllowFromom afzenders te beperken; per-ruimteusers-toelatingslijsten worden ook ondersteund. - Groeps-DM’s worden apart beheerd (
channels.discord.dm.*,channels.slack.dm.*). - De Telegram-toelatingslijst kan overeenkomen met gebruikers-ID’s (
"123456789","telegram:123456789","tg:123456789") of gebruikersnamen ("@alice"of"alice"); voorvoegsels zijn niet hoofdlettergevoelig. - Standaard is
groupPolicy: "allowlist"; als je groepstoelatingslijst leeg is, worden groepsberichten geblokkeerd. - Runtimeveiligheid: wanneer een providerblok volledig ontbreekt (
channels.<provider>afwezig), valt groepsbeleid terug op een fail-closed modus (doorgaansallowlist) in plaats vanchannels.defaults.groupPolicyte erven.
Groepstoelatingslijsten
Groepstoelatingslijsten (
*.groups, *.groupAllowFrom, kanaalspecifieke toelatingslijst).Vermeldingsfiltering (standaard)
Groepsberichten vereisen een vermelding, tenzij dit per groep is overschreven. Standaarden staan per subsysteem onder*.groups."*".
Antwoorden op een botbericht telt als een impliciete vermelding wanneer het kanaal antwoordmetadata ondersteunt. Een botbericht citeren kan ook als een impliciete vermelding tellen op kanalen die citaatmetadata beschikbaar stellen. Huidige ingebouwde gevallen zijn Telegram, WhatsApp, Slack, Discord, Microsoft Teams en ZaloUser.
Opmerkingen over vermeldingspoort
Opmerkingen over vermeldingspoort
mentionPatternszijn hoofdletterongevoelige veilige regex-patronen; ongeldige patronen en onveilige vormen met geneste herhaling worden genegeerd.- Oppervlakken die expliciete vermeldingen bieden, komen nog steeds door; patronen zijn een fallback.
- Overschrijving per agent:
agents.list[].groupChat.mentionPatterns(handig wanneer meerdere agents een groep delen). - Vermeldingspoort wordt alleen afgedwongen wanneer vermeldingsdetectie mogelijk is (native vermeldingen of
mentionPatternszijn geconfigureerd). - Groepschat-promptcontext bevat bij elke beurt de opgeloste instructie voor stil antwoorden; workspace-bestanden moeten
NO_REPLY-mechanica niet dupliceren. - Groepen waar stille antwoorden zijn toegestaan, behandelen schone lege of alleen-redenering modelbeurten als stil, gelijk aan
NO_REPLY. Directe chats doen hetzelfde alleen wanneer directe stille antwoorden expliciet zijn toegestaan; anders blijven lege antwoorden mislukte agentbeurten. - Discord-standaarden staan in
channels.discord.guilds."*"(overschrijfbaar per guild/kanaal). - Groepsgeschiedeniscontext wordt uniform over kanalen heen ingepakt en is alleen in behandeling (berichten overgeslagen vanwege vermeldingspoort); gebruik
messages.groupChat.historyLimitvoor de globale standaard enchannels.<channel>.historyLimit(ofchannels.<channel>.accounts.*.historyLimit) voor overschrijvingen. Stel0in om uit te schakelen.
Toolbeperkingen voor groepen/kanalen (optioneel)
Sommige kanaalconfiguraties ondersteunen het beperken van welke tools beschikbaar zijn binnen een specifieke groep/ruimte/kanaal.tools: tools toestaan/weigeren voor de hele groep.toolsBySender: overschrijvingen per afzender binnen de groep. Gebruik expliciete sleutelprefixen:id:<senderId>,e164:<phone>,username:<handle>,name:<displayName>en"*"wildcard. Verouderde sleutels zonder prefix worden nog steeds geaccepteerd en alleen alsid:gematcht.
Voorbeeld (Telegram):
Toolbeperkingen voor groepen/kanalen worden toegepast naast globaal/agent-toolbeleid (weigeren wint nog steeds). Sommige kanalen gebruiken andere nesting voor ruimtes/kanalen (bijv. Discord
guilds.*.channels.*, Slack channels.*, Microsoft Teams teams.*.channels.*).Groepstoegestane lijsten
Wanneerchannels.whatsapp.groups, channels.telegram.groups of channels.imessage.groups is geconfigureerd, fungeren de sleutels als een toegestane lijst voor groepen. Gebruik "*" om alle groepen toe te staan terwijl nog steeds standaard vermeldingsgedrag wordt ingesteld.
Veelvoorkomende intenties (kopiëren/plakken):
- Alle groepsantwoorden uitschakelen
- Alleen specifieke groepen toestaan (WhatsApp)
- Alle groepen toestaan maar vermelding vereisen
- Alleen-eigenaar triggers (WhatsApp)
Activering (alleen eigenaar)
Groepseigenaren kunnen activering per groep omschakelen:/activation mention/activation always
channels.whatsapp.allowFrom (of de eigen E.164 van de bot wanneer niet ingesteld). Stuur de opdracht als een zelfstandig bericht. Andere oppervlakken negeren momenteel /activation.
Contextvelden
Binnenkomende groepspayloads stellen in:ChatType=groupGroupSubject(indien bekend)GroupMembers(indien bekend)WasMentioned(resultaat van vermeldingspoort)- Telegram-forumonderwerpen bevatten ook
MessageThreadIdenIsForum.
- BlueBubbles kan naamloze macOS-groepsdeelnemers optioneel verrijken vanuit de lokale Contacten-database voordat
GroupMemberswordt ingevuld. Dit staat standaard uit en wordt alleen uitgevoerd nadat normale groepspoortcontrole is geslaagd.
\n-reeksen te typen. Groepsnamen en deelnemerslabels afkomstig uit kanalen worden weergegeven als afgeschermde niet-vertrouwde metadata, niet als inline systeeminstructies.
iMessage-specifiek
- Geef de voorkeur aan
chat_id:<id>bij routering of toelating. - Chats weergeven:
imsg chats --limit 20. - Groepsantwoorden gaan altijd terug naar dezelfde
chat_id.