Gruppen
OpenClaw behandelt Gruppenchats über Oberflächen hinweg konsistent: WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams.Einsteiger-Einführung (2 Minuten)
OpenClaw „lebt“ auf Ihren eigenen Messaging-Konten. Es gibt keinen separaten WhatsApp-Bot-Benutzer. Wenn Sie in einer Gruppe sind, kann OpenClaw diese Gruppe sehen und dort antworten. Standardverhalten:- Gruppen sind eingeschränkt (
groupPolicy: "allowlist"). - Antworten erfordern eine Erwähnung, sofern Sie das Mention-Gating nicht explizit deaktivieren.
TL;DRSchneller Ablauf (was mit einer Gruppennachricht passiert):
- DM-Zugriff wird durch
*.allowFromgesteuert.- Gruppenzugriff wird durch
*.groupPolicy+ Allowlists (*.groups,*.groupAllowFrom) gesteuert.- Auslösen von Antworten wird durch Mention-Gating (
requireMention,/activation) gesteuert.
| Ziel | Einstellung |
|---|---|
| Alle Gruppen zulassen, aber nur auf @mentions antworten | groups: { "*": { requireMention: true } } |
| Alle Gruppenantworten deaktivieren | groupPolicy: "disabled" |
| Nur bestimmte Gruppen | groups: { "<group-id>": { ... } } (kein "*"-Schlüssel) |
| Nur Sie können in Gruppen auslösen | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
Sitzungsschlüssel
- Gruppensitzungen verwenden
agent:<agentId>:<channel>:group:<id>-Sitzungsschlüssel (Räume/Kanäle verwendenagent:<agentId>:<channel>:channel:<id>). - Telegram-Forenthemen fügen
:topic:<threadId>zur Gruppen-ID hinzu, sodass jedes Thema eine eigene Sitzung hat. - Direktchats verwenden die Hauptsitzung (oder pro Absender, falls konfiguriert).
- Heartbeats werden für Gruppensitzungen übersprungen.
Muster: persönliche DMs + öffentliche Gruppen (einzelner Agent)
Ja — das funktioniert gut, wenn Ihr „persönlicher“ Verkehr DMs und Ihr „öffentlicher“ Verkehr Gruppen sind. Warum: Im Einzelagentenmodus landen DMs typischerweise in der Haupt-Sitzung (agent:main:main), während Gruppen immer nicht-Haupt-Sitzungsschlüssel (agent:main:<channel>:group:<id>) verwenden. Wenn Sie sandboxing mit mode: "non-main" aktivieren, laufen diese Gruppensitzungen in Docker, während Ihre Haupt-DM-Sitzung auf dem Host bleibt.
Das ergibt ein Agenten-„Gehirn“ (gemeinsamer Arbeitsbereich + Speicher), aber zwei Ausführungsmodi:
- DMs: vollständige Werkzeuge (Host)
- Gruppen: sandbox + eingeschränkte Werkzeuge (Docker)
Wenn Sie wirklich getrennte Arbeitsbereiche/Personas benötigen („persönlich“ und „öffentlich“ dürfen sich niemals mischen), verwenden Sie einen zweiten Agenten + Bindings. Siehe Multi-Agent Routing.Beispiel (DMs auf dem Host, Gruppen sandboxed + nur Messaging-Werkzeuge):
workspaceAccess: "none" bei und mounten Sie nur allowlistete Pfade in die Sandbox:
- Konfigurationsschlüssel und Standardwerte: Gateway-Konfiguration
- Debugging, warum ein Werkzeug blockiert ist: Sandbox vs Tool Policy vs Elevated
- Details zu Bind-Mounts: Sandboxing
Anzeige-Labels
- UI-Labels verwenden
displayName, wenn verfügbar, formatiert als<channel>:<token>. #roomist für Räume/Kanäle reserviert; Gruppenchats verwendeng-<slug>(kleingeschrieben, Leerzeichen ->-,#@+._-beibehalten).
Gruppenrichtlinie
Steuern Sie, wie Gruppen-/Raumnachrichten pro Kanal behandelt werden:| Richtlinien | Verhalten |
|---|---|
"open" | Gruppen umgehen Allowlists; Mention-Gating gilt weiterhin. |
"disabled" | Alle Gruppennachrichten vollständig blockieren. |
"allowlist" | Nur Gruppen/Räume zulassen, die der konfigurierten Allowlist entsprechen. |
groupPolicyist getrennt vom Mention-Gating (das @mentions erfordert).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: verwenden Sie
groupAllowFrom(Fallback: explizitesallowFrom). - Discord: Allowlist verwendet
channels.discord.guilds.<id>.channels. - Slack: Allowlist verwendet
channels.slack.channels. - Matrix: Allowlist verwendet
channels.matrix.groups(Raum-IDs, Aliase oder Namen). Verwenden Siechannels.matrix.groupAllowFrom, um Absender einzuschränken; per-Raum-users-Allowlists werden ebenfalls unterstützt. - Gruppen-DMs werden separat gesteuert (
channels.discord.dm.*,channels.slack.dm.*). - Die Telegram-Allowlist kann Benutzer-IDs (
"123456789","telegram:123456789","tg:123456789") oder Benutzernamen ("@alice"oder"alice") abgleichen; Präfixe sind nicht case-sensitiv. - Standard ist
groupPolicy: "allowlist"; ist Ihre Gruppen-Allowlist leer, werden Gruppennachrichten blockiert.
groupPolicy(offen/deaktiviert/Allowlist)- Gruppen-Allowlists (
*.groups,*.groupAllowFrom, kanalspezifische Allowlist) - Mention-Gating (
requireMention,/activation)
Mention-Gating (Standard)
Gruppennachrichten erfordern eine Erwähnung, sofern sie nicht pro Gruppe überschrieben wird. Standardwerte liegen pro Subsystem unter*.groups."*".
Das Antworten auf eine Bot-Nachricht zählt als implizite Erwähnung (wenn der Kanal Reply-Metadaten unterstützt). Dies gilt für Telegram, WhatsApp, Slack, Discord und Microsoft Teams.
mentionPatternssind nicht case-sensitive Regexe.- Oberflächen, die explizite Erwähnungen bereitstellen, werden weiterhin durchgelassen; Muster sind ein Fallback.
- Pro-Agent-Override:
agents.list[].groupChat.mentionPatterns(nützlich, wenn mehrere Agenten eine Gruppe teilen). - Mention-Gating wird nur erzwungen, wenn die Erwähnungserkennung möglich ist (native Erwähnungen oder
mentionPatternssind konfiguriert). - Discord-Standardwerte liegen in
channels.discord.guilds."*"(pro Guild/Kanal überschreibbar). - Der Gruppenverlaufs-Kontext wird kanalübergreifend einheitlich verpackt und ist nur ausstehend (Nachrichten, die aufgrund von Mention-Gating übersprungen wurden); verwenden Sie
messages.groupChat.historyLimitfür den globalen Standard undchannels.<channel>.historyLimit(oderchannels.<channel>.accounts.*.historyLimit) für Überschreibungen. Setzen Sie0, um zu deaktivieren.
Gruppen-/Kanal-Werkzeugbeschränkungen (optional)
Einige Kanalkonfigurationen unterstützen die Einschränkung, welche Werkzeuge innerhalb einer bestimmten Gruppe/eines Raums/eines Kanals verfügbar sind.tools: Werkzeuge für die gesamte Gruppe erlauben/verbieten.toolsBySender: Pro-Absender-Overrides innerhalb der Gruppe (Schlüssel sind Absender-IDs/Benutzernamen/E-Mails/Telefonnummern je nach Kanal). Verwenden Sie"*"als Platzhalter.
- Gruppen-/Kanal-
toolsBySender-Match - Gruppen-/Kanal-
tools - Standard (
"*")toolsBySender-Match - Standard (
"*")tools
- Gruppen-/Kanal-Werkzeugbeschränkungen werden zusätzlich zur globalen/Agenten-Werkzeugrichtlinie angewendet (Verbot gewinnt weiterhin).
- Einige Kanäle verwenden unterschiedliche Verschachtelungen für Räume/Kanäle (z. B. Discord
guilds.*.channels.*, Slackchannels.*, MS Teamsteams.*.channels.*).
Gruppen-Allowlists
Wennchannels.whatsapp.groups, channels.telegram.groups oder channels.imessage.groups konfiguriert ist, fungieren die Schlüssel als Gruppen-Allowlist. Verwenden Sie "*", um alle Gruppen zuzulassen und dennoch das Standard-Mention-Verhalten festzulegen.
Häufige Intents (Copy/Paste):
- Alle Gruppenantworten deaktivieren
- Nur bestimmte Gruppen zulassen (WhatsApp)
- Alle Gruppen zulassen, aber Erwähnung verlangen (explizit)
- Nur der Eigentümer kann in Gruppen auslösen (WhatsApp)
Aktivierung (nur Eigentümer)
Gruppeneigentümer können die Aktivierung pro Gruppe umschalten:/activation mention/activation always
channels.whatsapp.allowFrom bestimmt (oder die eigene E.164 des Bots, wenn nicht gesetzt). Senden Sie den Befehl als eigenständige Nachricht. Andere Oberflächen ignorieren derzeit /activation.
Kontextfelder
Eingehende Gruppen-Payloads setzen:ChatType=groupGroupSubject(falls bekannt)GroupMembers(falls bekannt)WasMentioned(Ergebnis des Mention-Gatings)- Telegram-Forenthemen enthalten außerdem
MessageThreadIdundIsForum.
\n-Sequenzen zu tippen.
iMessage-Besonderheiten
- Bevorzugen Sie
chat_id:<id>beim Routing oder Allowlisting. - Chats auflisten:
imsg chats --limit 20. - Gruppenantworten gehen immer an dieselbe
chat_idzurück.