Introductie voor beginners (2 minuten)
OpenClaw ‘leeft’ in je eigen berichtenaccounts. Er is geen afzonderlijke WhatsApp-botgebruiker: als je in een groep zit, kan OpenClaw die groep zien en daar reageren. Standaardgedrag:- Groepen zijn beperkt (
groupPolicy: "allowlist"); afzenders in groepen worden geblokkeerd totdat ze aan de toelatingslijst zijn toegevoegd. - Voor antwoorden is een vermelding vereist, tenzij je de vermeldingsfilter voor een groep uitschakelt.
- De definitieve antwoordtekst wordt automatisch in de ruimte geplaatst (
visibleReplies: "automatic").
Kort samengevat
- Toegang tot privéberichten wordt beheerd door
*.allowFrom. - Groepstoegang wordt beheerd door
*.groupPolicy+ toelatingslijsten (*.groups,*.groupAllowFrom). - Activering van antwoorden wordt beheerd door de vermeldingsfilter (
requireMention,/activation).
Zichtbare antwoorden
Voor normale groeps-/kanaalverzoeken gebruikt OpenClaw standaardmessages.groupChat.visibleReplies: "automatic": de definitieve assistenttekst wordt als zichtbaar antwoord in de ruimte geplaatst.
Gebruik messages.groupChat.visibleReplies: "message_tool" wanneer de agent in een gedeelde ruimte zelf moet kunnen bepalen wanneer die spreekt door message(action=send) aan te roepen. Dit werkt het best met modellen die betrouwbaar hulpmiddelen gebruiken (bijvoorbeeld GPT-5.6 Sol). Als het model het hulpmiddel niet gebruikt en inhoudelijke definitieve tekst retourneert, houdt OpenClaw die tekst privé in plaats van deze in de ruimte te plaatsen.
Gebruik "automatic" voor modellen of runtimes die bezorging uitsluitend via hulpmiddelen niet betrouwbaar volgen: normale definitieve tekst wordt rechtstreeks in de ruimte geplaatst en de agent kan nog steeds message(action=send) aanroepen voor bestanden, afbeeldingen of andere bijlagen die niet met de definitieve tekst kunnen worden meegestuurd.
Als het berichtenhulpmiddel volgens het actieve hulpmiddelenbeleid niet beschikbaar is, valt OpenClaw terug op automatische zichtbare antwoorden in plaats van het antwoord stilzwijgend te onderdrukken. openclaw doctor waarschuwt voor deze discrepantie.
Voor directe chats en alle andere brongebeurtenissen past messages.visibleReplies: "message_tool" hetzelfde gedrag uitsluitend via hulpmiddelen wereldwijd toe; messages.groupChat.visibleReplies blijft de specifiekere overschrijving voor groeps-/kanaalruimtes. Directe beurten in de interne WebChat gebruiken standaard automatische bezorging van het definitieve antwoord, zodat Pi en Codex hetzelfde contract voor zichtbare antwoorden krijgen.
De modus uitsluitend via hulpmiddelen vervangt het oude patroon waarbij het model voor de meeste beurten in de meeleesmodus werd gedwongen NO_REPLY te antwoorden. In de modus uitsluitend via hulpmiddelen definieert de prompt geen NO_REPLY-contract; niets zichtbaars doen betekent simpelweg dat het berichtenhulpmiddel niet wordt aangeroepen.
Door Plugins beheerde gespreksbindingen vormen de uitzondering. Zodra een Plugin een thread bindt en de inkomende beurt claimt, is het door de Plugin geretourneerde antwoord het zichtbare bindingsantwoord; hiervoor is message(action=send) niet nodig. Dat antwoord is uitvoer van de Plugin-runtime, geen definitieve privétekst van het model.
Typindicatoren worden nog steeds verzonden voor directe groepsverzoeken. Omgevingsgebeurtenissen voor altijd actieve ruimtes blijven, indien ingeschakeld, strikt en stil tenzij de agent het berichtenhulpmiddel aanroept.
Sessies onderdrukken standaard uitgebreide samenvattingen van hulpmiddelen/voortgang. Gebruik /verbose on (of /verbose full) om ze tijdens het opsporen van fouten voor de huidige sessie weer te geven, en /verbose off om terug te keren naar gedrag met alleen definitieve antwoorden. De uitgebreide status geldt per sessie en werkt hetzelfde in directe chats, groepen, kanalen en forumonderwerpen.
Gebruik Omgevingsgebeurtenissen voor ruimtes om niet-vermelde gesprekken in altijd actieve groepen als stille ruimtecontext in plaats van als gebruikersverzoeken in te dienen:
unmentionedInbound: "user_request". Vermelde berichten, opdrachten, afbreekverzoeken en privéberichten blijven gebruikersverzoeken.
Om te vereisen dat zichtbare uitvoer voor groeps-/kanaalverzoeken via het berichtenhulpmiddel verloopt:
messages zonder herstart over nadat het bestand is opgeslagen. Herstart alleen wanneer het opnieuw laden van de configuratie is uitgeschakeld (gateway.reload.mode: "off").
Opdrachtbeurten omzeilen visibleReplies: "message_tool" en antwoorden altijd zichtbaar: zowel systeemeigen slashopdrachten (Discord, Telegram en andere oppervlakken met systeemeigen opdrachtondersteuning) als geautoriseerde tekstuele /...-opdrachten plaatsen hun antwoord in de bronchat. Niet-geautoriseerde tekstuele /...-beurten in groepen blijven uitsluitend via het berichtenhulpmiddel verlopen; gewone chatbeurten volgen de geconfigureerde standaard.
Contextzichtbaarheid en toelatingslijsten
Bij groepsbeveiliging zijn twee verschillende instellingen betrokken:- Activeringsautorisatie: wie de agent kan activeren (
groupPolicy,groups,groupAllowFrom, kanaalspecifieke toelatingslijsten). - Contextzichtbaarheid: welke aanvullende context in het model wordt ingevoegd (antwoord-/citaattekst, threadgeschiedenis, doorgestuurde metagegevens).
contextVisibility in om ook aanvullende context te filteren:
Stel dit per kanaal (
channels.<channel>.contextVisibility), per account (channels.<channel>.accounts.<accountId>.contextVisibility) of wereldwijd (channels.defaults.contextVisibility) in. Kanalen die aanvullende context ophalen (Discord, Feishu, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp) passen het beleid toe bij het opbouwen van inkomende context; onbekende beleidscombinaties worden uit veiligheid geweigerd en laten de context weg.
Deze modi filteren alleen door het kanaal aangeleverde aanvullende context. Het hulpmiddelenbeleid en de uitsluitend voor de eigenaar beschikbare hulpmiddeleninventaris worden nog steeds geselecteerd op basis van de oorspronkelijke aanvrager van de huidige beurt, niet op basis van elke afzender die in de prompt wordt weergegeven. Zie Aanvragerspecifieke instellingen en promptcontext.
Zie Toegangsgroepen voor herbruikbare toelatingslijsten voor afzenders.
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 sessies per afzender als
session.dmScopeis geconfigureerd). - Heartbeats worden uitgevoerd in de geconfigureerde Heartbeat-sessie (standaard: de hoofdsessie van de agent); groepssessies voeren geen eigen Heartbeats uit.
Patroon: persoonlijke privéberichten + openbare groepen (één agent)
Ja — dit werkt goed als je ‘persoonlijke’ verkeer uit privéberichten bestaat en je ‘openbare’ verkeer uit groepen. Reden: in de modus met één agent komen privéberichten doorgaans terecht onder de hoofdsessiesleutel (agent:main:main), terwijl groepen altijd niet-hoofdsessiesleutels gebruiken (agent:main:<channel>:group:<id>). Als je sandboxing inschakelt met mode: "non-main", worden die groepssessies uitgevoerd in de geconfigureerde sandboxbackend, terwijl je hoofdprivéberichtsessie op de host blijft. Docker is de standaardbackend als je er geen kiest.
Dit geeft je één agent-‘brein’ (gedeelde werkruimte + geheugen), maar twee uitvoeringsprofielen:
- Privéberichten: volledige hulpmiddelen (host)
- Groepen: sandbox + beperkte hulpmiddelen
Als je echt afzonderlijke werkruimtes/persona’s nodig hebt (‘persoonlijk’ en ‘openbaar’ mogen nooit worden vermengd), gebruik dan een tweede agent + bindingen. Zie Routering met meerdere agents.
- Privéberichten op de host, groepen in een sandbox
- Groepen zien alleen een map op de toelatingslijst
- Configuratiesleutels en standaardwaarden: Gateway-configuratie
- Opsporen waarom een hulpmiddel is geblokkeerd: Sandbox versus hulpmiddelenbeleid versus verhoogde rechten
- Details over bind-mounts: Sandboxing
Weergavelabels
- UI-labels gebruiken
displayNamewanneer beschikbaar, opgemaakt als<channel>:<token>. #roomis gereserveerd voor ruimtes/kanalen; groepschats gebruikeng-<slug>(kleine letters, spaties ->-, behoud#@+._-). Zeer lange ondoorzichtige id’s worden ingekort tot een stabiel token, zodat volledige route-id’s niet in de UI uitlekken.
Groepsbeleid
Bepaal per kanaal hoe groeps-/ruimteberichten worden verwerkt:Opmerkingen per kanaal
Opmerkingen per kanaal
groupPolicystaat los van vermeldingsvereisten (waarvoor @vermeldingen nodig zijn).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: gebruik
groupAllowFrom(terugvaloptie: explicieteallowFrom). - Signal:
groupAllowFromkan overeenkomen met de ID van de inkomende Signal-groep of het telefoonnummer/de UUID van de afzender. - Goedkeuringen van DM-koppelingen (vermeldingen in de
*-allowFrom-opslag) gelden alleen voor DM-toegang; autorisatie van afzenders in groepen blijft expliciet via groepstoelatingslijsten. - Discord: de toelatingslijst gebruikt
channels.discord.guilds.<id>.channels. - Slack: de toelatingslijst gebruikt
channels.slack.channels. - Matrix: de toelatingslijst gebruikt
channels.matrix.groups. Gebruik ruimte-ID’s (!room:server) of aliassen (#alias:server); sleutels met ruimtenamen komen alleen overeen metchannels.matrix.dangerouslyAllowNameMatching: true, en niet-opgeloste vermeldingen worden tijdens runtime genegeerd. Gebruikchannels.matrix.groupAllowFromom afzenders te beperken;users-toelatingslijsten per ruimte worden ook ondersteund. - Groeps-DM’s worden afzonderlijk beheerd (
channels.discord.dm.*,channels.slack.dm.*:groupEnabled,groupChannels). - Telegram: toelatingslijsten voor afzenders accepteren alleen numerieke gebruikers-ID’s (
"123456789"; de voorvoegselstelegram:/tg:worden hoofdletterongevoelig verwijderd).@username-vermeldingen komen tijdens runtime niet overeen en registreren een waarschuwing; de configuratie zet@usernameom in ID’s. Negatieve chat-ID’s horen onderchannels.telegram.groups, niet in toelatingslijsten voor afzenders. - De standaardwaarde is
groupPolicy: "allowlist"; als je groepstoelatingslijst leeg is, worden groepsberichten geblokkeerd. - Runtimeveiligheid: wanneer een providerblok volledig ontbreekt (
channels.<provider>ontbreekt), valt het groepsbeleid veilig terug opallowlistin plaats vanchannels.defaults.groupPolicyover te nemen, en registreert de Gateway de terugvaloptie eenmaal per account.
1
groupPolicy
groupPolicy (open/disabled/allowlist).2
Groepstoelatingslijsten
Groepstoelatingslijsten (
*.groups, *.groupAllowFrom, kanaalspecifieke toelatingslijst).3
Vermeldingsvereisten
Vermeldingsvereisten (
requireMention, /activation).Vermeldingsvereisten (standaard)
Groepsberichten vereisen een vermelding, tenzij dit per groep wordt overschreven. Standaardwaarden staan per subsysteem onder*.groups."*".
Ondersteunde impliciete vermeldingsfeiten zijn kanaalspecifiek:
Elk feit is standaard ingeschakeld wanneer het kanaal het produceert. Stel de bijbehorende
implicitMentions-vlag in op false om te voorkomen dat dit feit de vermeldingsvereisten omzeilt; systeemeigen expliciete vermeldingen blijven ongewijzigd. Een vlag heeft geen effect op kanalen die dat feit niet produceren.
Bereik van geconfigureerde vermeldingspatronen bepalen
GeconfigureerdementionPatterns zijn regex-terugvaltriggers. Gebruik ze wanneer het
platform geen systeemeigen botvermelding beschikbaar stelt, of wanneer je wilt dat platte tekst zoals
openclaw: als een vermelding geldt. Systeemeigen platformvermeldingen staan hiervan los:
wanneer Discord, Slack, Telegram, Matrix, Signal of een ander kanaal kan aantonen dat het bericht
de bot expliciet vermeldde, activeert die systeemeigen vermelding de bot nog steeds, zelfs als
geconfigureerde regex-patronen worden geweigerd.
Geconfigureerde vermeldingspatronen zijn standaard overal van toepassing waar het kanaal provider- en gespreksfeiten doorgeeft aan vermeldingsdetectie. Om te voorkomen dat brede patronen de agent in elke groep activeren, bepaal je hun bereik per kanaal met channels.<channel>.mentionPatterns.
Gebruik mode: "deny" wanneer regex-vermeldingspatronen standaard uitgeschakeld moeten zijn voor een kanaal en schakel ze vervolgens voor specifieke ruimten in met allowIn:
mode: "allow" (of laat mode weg) wanneer regex-vermeldingspatronen breed van toepassing moeten zijn en schakel ze vervolgens in rumoerige ruimten uit met denyIn:
Momenteel ondersteund beleid voor het bereik van regex-patronen:
Kanaalconfiguraties op accountniveau kunnen hetzelfde beleid instellen onder
channels.<channel>.accounts.<accountId>.mentionPatterns wanneer dat kanaal meerdere accounts ondersteunt. Het accountbeleid heeft voor dat account voorrang op het kanaalbeleid op het hoogste niveau.
Opmerkingen over vermeldingsvereisten
Opmerkingen over vermeldingsvereisten
mentionPatternszijn hoofdletterongevoelige, veilige regex-patronen; ongeldige patronen en onveilige vormen met geneste herhalingen worden genegeerd (met een waarschuwing).- Patroonvoorrang:
agents.entries.*.groupChat.mentionPatterns(nuttig wanneer meerdere agents een groep delen) overschrijftmessages.groupChat.mentionPatterns; wanneer geen van beide is ingesteld, worden patronen afgeleid van de naam/emoji van de agentidentiteit. - Vermeldingsvereisten worden alleen afgedwongen wanneer vermeldingsdetectie mogelijk is (systeemeigen vermeldingen of geconfigureerde
mentionPatterns). - Een groep of afzender aan de toelatingslijst toevoegen schakelt vermeldingsvereisten niet uit; stel
requireMentionvan die groep in opfalsewanneer alle berichten moeten activeren. - De automatische promptcontext voor groepschats bevat bij elke beurt de vastgestelde instructie voor een stil antwoord; werkruimtebestanden mogen de werking van
NO_REPLYniet dupliceren. - Groepen waarin automatische stille antwoorden zijn toegestaan, behandelen volledig lege modelbeurten of modelbeurten met alleen redenering als stil, gelijkwaardig aan
NO_REPLY. Rechtstreekse chats ontvangen nooitNO_REPLY-instructies, en groepsantwoorden die alleen het berichtentool gebruiken, blijven stil doordat zemessage(action=send)niet aanroepen. - Altijd actieve achtergrondgesprekken in groepen gebruiken standaard de semantiek van gebruikersverzoeken. Stel
messages.groupChat.unmentionedInbound: "room_event"in om ze in plaats daarvan als stille context in te dienen. Zie Omgevingsgebeurtenissen in ruimten voor configuratievoorbeelden. - Ruimtegebeurtenissen worden niet opgeslagen als nepgebruikersverzoeken, en privétekst van de assistent uit ruimtegebeurtenissen zonder berichtentool wordt niet opnieuw afgespeeld als chatgeschiedenis.
- Standaardwaarden voor Discord staan in
channels.discord.guilds."*"(overschrijfbaar per guild/kanaal). - De context van groepsgeschiedenis wordt uniform verpakt voor alle kanalen. Groepen met vermeldingsvereisten bewaren overgeslagen berichten die nog in behandeling zijn; altijd actieve groepen kunnen ook recent verwerkte ruimteberichten bewaren wanneer het kanaal dit ondersteunt. Gebruik
messages.groupChat.historyLimitvoor de algemene standaardwaarde enchannels.<channel>.historyLimit(ofchannels.<channel>.accounts.*.historyLimit) voor overschrijvingen. Stel0in om dit uit te schakelen.
Beperkingen voor groeps-/kanaaltools (optioneel)
Sommige kanaalconfiguraties ondersteunen het beperken van welke tools beschikbaar zijn binnen een specifieke groep/ruimte/kanaal.tools: sta tools toe of weiger ze voor de hele groep (allow,alsoAllow,deny; weigeren heeft voorrang).toolsBySender: overschrijvingen per afzender binnen de groep. Gebruik expliciete sleutelvoorvoegsels:channel:<channelId>:<senderId>,id:<senderId>,e164:<phone>,username:<handle>,name:<displayName>en het jokerteken"*". Kanaal-ID’s gebruiken canonieke OpenClaw-kanaal-ID’s; aliassen zoalsteamsworden genormaliseerd naarmsteams. Verouderde sleutels zonder voorvoegsel worden nog steeds geaccepteerd, komen alleen overeen alsid:en registreren een verouderingswaarschuwing.
1
GroepstoolsBySender
Overeenkomst met
toolsBySender van groep/kanaal.2
Groepstools
tools van groep/kanaal.3
StandaardtoolsBySender
Overeenkomst met
toolsBySender van de standaardwaarde ("*").4
Standaardtools
tools van de standaardwaarde ("*").Toolbeperkingen voor groepen/kanalen worden toegepast naast het algemene/agentspecifieke toolbeleid (weigeren heeft nog steeds voorrang). Sommige kanalen gebruiken een andere nesting voor ruimtes/kanalen (bijv. Discord
guilds.*.channels.*, Slack channels.*, Microsoft Teams teams.*.channels.*).Toelatingslijsten voor groepen
Wanneerchannels.whatsapp.groups, channels.telegram.groups of channels.imessage.groups is geconfigureerd, fungeren de sleutels als een toelatingslijst voor groepen. Gebruik "*" om alle groepen toe te staan en toch het standaardvermeldingsgedrag in te stellen.
Veelvoorkomende doelen (kopiëren/plakken):
- Alle groepsantwoorden uitschakelen
- Alleen specifieke groepen toestaan (WhatsApp)
- Alle groepen toestaan, maar een vermelding vereisen
- Alleen door de eigenaar geactiveerde triggers (WhatsApp)
Activering (alleen eigenaar)
Groepseigenaren kunnen de activering per groep omschakelen met een afzonderlijk bericht:/activation mention/activation always
/activation is een kernopdracht die alleen voor eigenaren beschikbaar is en alleen van toepassing is in groepschats. Eigenaar betekent dat de afzender overeenkomt met commands.ownerAllowFrom; kanaallijsten in allowFrom bepalen alleen de gewone kanaal- en opdrachttoegang. De opgeslagen modus overschrijft de requireMention van die groep voor kanalen die deze raadplegen (Google Chat, QQBot, Telegram, WhatsApp), en de inleiding van de groepssysteemprompt weerspiegelt overal de actieve modus.
Contextvelden
Binnenkomende groepspayloads stellen het volgende in:ChatType=groupGroupSubject(indien bekend)GroupMembers(indien bekend)WasMentioned(resultaat van vermeldingscontrole)- Telegram-forumonderwerpen bevatten ook
MessageThreadIdenIsForum.
/activation verandert). Deze herinnert het model eraan om als een mens te reageren, lege regels te beperken en de normale spatiëring van chats te volgen, en geen letterlijke \n-reeksen te typen. Kanalen waarvan de opgegeven tabelmodus geen native of onbewerkte tabellen behoudt, raden Markdown-tabellen eveneens af. Van kanalen afkomstige groepsnamen en deelnemerslabels worden weergegeven als omheinde, niet-vertrouwde metadata, niet als inline systeeminstructies.
Bijzonderheden van iMessage
- Geef de voorkeur aan
chat_id:<id>bij routering of opname in een toelatingslijst. - Chats weergeven:
imsg chats --limit 20. - Groepsantwoorden gaan altijd terug naar dezelfde
chat_id.