OpenClaw behandelt Gruppenchats konsistent über alle Oberflächen hinweg: 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.
Einführung für Einsteiger (2 Minuten)
OpenClaw „lebt“ in 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 Erwähnungs-Gating nicht ausdrücklich deaktivieren.
- Normale finale Antworten in Gruppen/Kanälen sind standardmäßig privat. Sichtbare Raumausgabe verwendet das
message-Tool.
Kurzfassung
- DM-Zugriff wird durch
*.allowFromgesteuert. - Gruppenzugriff wird durch
*.groupPolicy+ Allowlists (*.groups,*.groupAllowFrom) gesteuert. - Antwortauslösung wird durch Erwähnungs-Gating (
requireMention,/activation) gesteuert.
Sichtbare Antworten
Für Gruppen-/Kanalräume verwendet OpenClaw standardmäßigmessages.groupChat.visibleReplies: "message_tool".
openclaw doctor --fix schreibt diesen Standardwert in Konfigurationen konfigurierter Kanäle, in denen er fehlt.
Das bedeutet, dass der Agent den Turn weiterhin verarbeitet und den Speicher-/Sitzungszustand aktualisieren kann, seine normale finale Antwort aber nicht automatisch zurück in den Raum gepostet wird. Um sichtbar zu sprechen, verwendet der Agent message(action=send).
Dieser Standard hängt von einem Modell/einer Runtime ab, das bzw. die zuverlässig Tools aufruft. Wenn die Logs
Assistant-Text zeigen, aber didSendViaMessagingTool: false, hat das Modell
privat geantwortet, statt das Nachrichten-Tool aufzurufen. Das ist kein
Discord-/Slack-/Telegram-Sendefehler. Verwenden Sie für Gruppen-/Kanalsitzungen
ein Modell mit zuverlässigen Tool-Aufrufen, oder setzen Sie
messages.groupChat.visibleReplies: "automatic", um die früheren sichtbaren
finalen Antworten wiederherzustellen.
Wenn das Nachrichten-Tool unter der aktiven Tool-Richtlinie nicht verfügbar ist, fällt OpenClaw
auf automatische sichtbare Antworten zurück, statt die Antwort stillschweigend zu unterdrücken.
openclaw doctor warnt vor dieser Nichtübereinstimmung.
Für direkte Chats und jeden anderen Quell-Turn verwenden Sie messages.visibleReplies: "message_tool", um dasselbe sichtbare Antwortverhalten nur per Tool global anzuwenden. Harnesses können dies auch als ihren nicht gesetzten Standard wählen; das Codex-Harness tut dies für direkte Chats im Codex-Modus. messages.groupChat.visibleReplies bleibt die spezifischere Überschreibung für Gruppen-/Kanalräume.
Dies ersetzt das alte Muster, das Modell für die meisten Turns im Lurk-Modus zu einer Antwort mit NO_REPLY zu zwingen. Im reinen Tool-Modus bedeutet nichts Sichtbares zu tun einfach, das Nachrichten-Tool nicht aufzurufen.
Tippindikatoren werden weiterhin gesendet, während der Agent im reinen Tool-Modus arbeitet. Der standardmäßige Gruppentippmodus wird für diese Turns von „message“ auf „instant“ hochgestuft, weil möglicherweise nie normaler Assistant-Nachrichtentext erscheint, bevor der Agent entscheidet, ob er das Nachrichten-Tool aufruft. Eine explizite Tippmodus-Konfiguration hat weiterhin Vorrang.
Um frühere automatische finale Antworten für Gruppen-/Kanalräume wiederherzustellen:
messages-Konfiguration nach dem Speichern der Datei per Hot-Reload neu. Starten Sie nur neu,
wenn Dateibeobachtung oder Konfigurations-Neuladen in der Bereitstellung deaktiviert ist.
Um sichtbare Ausgaben für jeden Quell-Chat durch das Nachrichten-Tool zu erzwingen:
visibleReplies: "message_tool" und antworten immer sichtbar, damit die kanalnative Befehls-UI die erwartete Antwort erhält. Dies gilt nur für validierte native Befehls-Turns; als Text eingegebene /...-Befehle und gewöhnliche Chat-Turns folgen weiterhin dem konfigurierten Gruppenstandard.
Kontextsichtbarkeit und Allowlists
Bei der Gruppensicherheit sind zwei verschiedene Steuerelemente beteiligt:- Auslöseautorisierung: wer den Agenten auslösen kann (
groupPolicy,groups,groupAllowFrom, kanalspezifische Allowlists). - Kontextsichtbarkeit: welcher zusätzliche Kontext in das Modell injiziert wird (Antworttext, Zitate, Thread-Verlauf, weitergeleitete Metadaten).
Current behavior is channel-specific
Current behavior is channel-specific
- Einige Kanäle wenden bereits absenderbasierte Filterung für zusätzlichen Kontext in bestimmten Pfaden an (zum Beispiel Slack-Thread-Seeding, Matrix-Antwort-/Thread-Lookups).
- Andere Kanäle geben Zitat-/Antwort-/Weiterleitungskontext weiterhin so weiter, wie er empfangen wurde.
Hardening direction (planned)
Hardening direction (planned)
contextVisibility: "all"(Standard) behält das aktuelle Verhalten „wie empfangen“ bei.contextVisibility: "allowlist"filtert zusätzlichen Kontext auf Absender auf der Allowlist.contextVisibility: "allowlist_quote"istallowlistplus eine explizite Zitat-/Antwortausnahme.
| Ziel | Zu setzen |
|---|---|
| Alle Gruppen erlauben, aber nur auf @Erwähnungen 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..."] |
| Eine vertrauenswürdige Absendermenge über Kanäle hinweg wiederverwenden | groupAllowFrom: ["accessGroup:operators"] |
Sitzungsschlüssel
- Gruppensitzungen verwenden Sitzungsschlüssel im Format
agent:<agentId>:<channel>:group:<id>(Räume/Kanäle verwendenagent:<agentId>:<channel>:channel:<id>). - Telegram-Forumsthemen fügen
:topic:<threadId>zur Gruppen-ID hinzu, sodass jedes Thema seine eigene Sitzung hat. - Direkte Chats verwenden die Hauptsitzung (oder pro Absender, falls konfiguriert).
- Heartbeats werden für Gruppensitzungen übersprungen.
Muster: persönliche DMs + öffentliche Gruppen (ein Agent)
Ja, das funktioniert gut, wenn Ihr „persönlicher“ Traffic DMs und Ihr „öffentlicher“ Traffic Gruppen sind. Warum: Im Einzel-Agent-Modus landen DMs typischerweise im Haupt-Sitzungsschlüssel (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 im konfigurierten Sandbox-Backend, während Ihre Haupt-DM-Sitzung auf dem Host bleibt. Docker ist das Standard-Backend, wenn Sie keines auswählen.
Dadurch erhalten Sie ein Agenten-„Gehirn“ (gemeinsamer Workspace + Speicher), aber zwei Ausführungsprofile:
- DMs: vollständige Tools (Host)
- Gruppen: Sandbox + eingeschränkte Tools
Wenn Sie wirklich getrennte Workspaces/Personas benötigen („persönlich“ und „öffentlich“ dürfen sich nie vermischen), verwenden Sie einen zweiten Agenten + Bindings. Siehe Multi-Agent-Routing.
- DMs on host, groups sandboxed
- Groups see only an allowlisted folder
- Konfigurationsschlüssel und Standards: Gateway-Konfiguration
- Debugging, warum ein Tool blockiert ist: Sandbox vs Tool Policy vs Elevated
- Details zu Bind-Mounts: Sandboxing
Anzeigelabels
- UI-Labels verwenden
displayName, wenn verfügbar, formatiert als<channel>:<token>. #roomist für Räume/Kanäle reserviert; Gruppenchats verwendeng-<slug>(Kleinbuchstaben, Leerzeichen ->-,#@+._-beibehalten).
Gruppenrichtlinie
Steuern Sie, wie Gruppen-/Raumnachrichten pro Kanal behandelt werden:| Richtlinie | Verhalten |
|---|---|
"open" | Gruppen umgehen Allowlists; Erwähnungs-Gating gilt weiterhin. |
"disabled" | Alle Gruppennachrichten vollständig blockieren. |
"allowlist" | Nur Gruppen/Räume erlauben, die der konfigurierten Allowlist entsprechen. |
Hinweise pro Kanal
Hinweise pro Kanal
groupPolicyist getrennt vom Mention-Gating (das @mentions erfordert).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: Verwenden Sie
groupAllowFrom(Fallback: explizitesallowFrom). - Signal:
groupAllowFromkann entweder mit der eingehenden Signal-Gruppen-ID oder mit der Telefonnummer/UUID des Absenders übereinstimmen. - DM-Kopplungsgenehmigungen (
*-allowFrom-Store-Einträge) gelten nur für den DM-Zugriff; die Autorisierung von Gruppenabsendern bleibt explizit an Gruppen-Allowlists gebunden. - Discord: Die Allowlist verwendet
channels.discord.guilds.<id>.channels. - Slack: Die Allowlist verwendet
channels.slack.channels. - Matrix: Die Allowlist verwendet
channels.matrix.groups. Bevorzugen Sie Raum-IDs oder Aliasse; die Namenssuche in beigetretenen Räumen erfolgt nach bestem Bemühen, und nicht aufgelöste Namen werden zur Laufzeit ignoriert. Verwenden Siechannels.matrix.groupAllowFrom, um Absender einzuschränken; raumspezifischeusers-Allowlists werden ebenfalls unterstützt. - Gruppen-DMs werden separat gesteuert (
channels.discord.dm.*,channels.slack.dm.*). - Die Telegram-Allowlist kann mit Benutzer-IDs (
"123456789","telegram:123456789","tg:123456789") oder Benutzernamen ("@alice"oder"alice") übereinstimmen; Präfixe sind nicht groß-/kleinschreibungssensitiv. - Standard ist
groupPolicy: "allowlist"; wenn Ihre Gruppen-Allowlist leer ist, werden Gruppennachrichten blockiert. - Laufzeitsicherheit: Wenn ein Provider-Block vollständig fehlt (
channels.<provider>fehlt), fällt die Gruppenrichtlinie auf einen fehlersicheren, geschlossenen Modus zurück (typischerweiseallowlist), stattchannels.defaults.groupPolicyzu erben.
Mention-Gating (Standard)
Gruppennachrichten erfordern eine Erwähnung, sofern dies nicht pro Gruppe überschrieben wird. Standards liegen pro Subsystem unter*.groups."*".
Das Antworten auf eine Bot-Nachricht zählt als implizite Erwähnung, wenn der Kanal Antwort-Metadaten unterstützt. Das Zitieren einer Bot-Nachricht kann auf Kanälen, die Zitat-Metadaten bereitstellen, ebenfalls als implizite Erwähnung zählen. Aktuelle integrierte Fälle umfassen Telegram, WhatsApp, Slack, Discord, Microsoft Teams und ZaloUser.
Hinweise zum Mention-Gating
Hinweise zum Mention-Gating
mentionPatternssind nicht groß-/kleinschreibungssensitive sichere Regex-Muster; ungültige Muster und unsichere Formen mit verschachtelter Wiederholung werden ignoriert.- Oberflächen, die explizite Erwähnungen bereitstellen, werden weiterhin akzeptiert; Muster sind ein Fallback.
- Override pro Agent:
agents.list[].groupChat.mentionPatterns(nützlich, wenn mehrere Agenten eine Gruppe teilen). - Mention-Gating wird nur erzwungen, wenn Erwähnungserkennung möglich ist (native Erwähnungen oder konfigurierte
mentionPatterns). - Das Aufnehmen einer Gruppe oder eines Absenders in die Allowlist deaktiviert Mention-Gating nicht; setzen Sie
requireMentiondieser Gruppe auffalse, wenn alle Nachrichten auslösen sollen. - Der Prompt-Kontext des Gruppenchats enthält in jedem Turn die aufgelöste Silent-Reply-Anweisung; Workspace-Dateien sollten
NO_REPLY-Mechaniken nicht duplizieren. - Gruppen, in denen stille Antworten erlaubt sind, behandeln saubere leere oder reine Reasoning-Modell-Turns als still, äquivalent zu
NO_REPLY. Direkte Chats tun dasselbe nur, wenn direkte stille Antworten explizit erlaubt sind; andernfalls bleiben leere Antworten fehlgeschlagene Agent-Turns. - Discord-Standards liegen in
channels.discord.guilds."*"(überschreibbar pro Guild/Kanal). - Gruppenkontextverlauf wird kanalübergreifend einheitlich umschlossen. Mention-gesteuerte Gruppen behalten ausstehende übersprungene Nachrichten; dauerhaft aktive Gruppen können außerdem kürzlich verarbeitete Raumnachrichten behalten, wenn der Kanal dies unterstützt. Verwenden Sie
messages.groupChat.historyLimitfür den globalen Standard undchannels.<channel>.historyLimit(oderchannels.<channel>.accounts.*.historyLimit) für Overrides. Setzen Sie0, um zu deaktivieren.
Tool-Einschränkungen für Gruppen/Kanäle (optional)
Einige Kanalkonfigurationen unterstützen die Einschränkung, welche Tools innerhalb einer bestimmten Gruppe/eines bestimmten Raums/Kanals verfügbar sind.tools: Tools für die gesamte Gruppe erlauben/verbieten.toolsBySender: Absenderspezifische Overrides innerhalb der Gruppe. Verwenden Sie explizite Schlüsselpräfixe:channel:<channelId>:<senderId>,id:<senderId>,e164:<phone>,username:<handle>,name:<displayName>und"*"-Wildcard. Kanal-IDs verwenden kanonische OpenClaw-Kanal-IDs; Aliasse wieteamswerden zumsteamsnormalisiert. Veraltete Schlüssel ohne Präfix werden weiterhin akzeptiert und nur alsid:abgeglichen.
Beispiel (Telegram):
Tool-Einschränkungen für Gruppen/Kanäle werden zusätzlich zur globalen/Agent-Tool-Richtlinie angewendet (
deny gewinnt weiterhin). Einige Kanäle verwenden andere Verschachtelungen für Räume/Kanäle (z. B. Discord guilds.*.channels.*, Slack channels.*, Microsoft Teams teams.*.channels.*).Gruppen-Allowlists
Wennchannels.whatsapp.groups, channels.telegram.groups oder channels.imessage.groups konfiguriert ist, wirken die Schlüssel als Gruppen-Allowlist. Verwenden Sie "*", um alle Gruppen zu erlauben und dennoch das Standardverhalten für Erwähnungen festzulegen.
Häufige Absichten (kopieren/einfügen):
- Alle Gruppenantworten deaktivieren
- Nur bestimmte Gruppen erlauben (WhatsApp)
- Alle Gruppen erlauben, aber Erwähnung verlangen
- Nur Owner-Trigger (WhatsApp)
Aktivierung (nur Owner)
Gruppen-Owner können die Aktivierung pro Gruppe umschalten:/activation mention/activation always
channels.whatsapp.allowFrom bestimmt (oder durch die eigene E.164 des Bots, wenn nicht gesetzt). Senden Sie den Befehl als eigenständige Nachricht. Andere Oberflächen ignorieren /activation derzeit.
Kontextfelder
Eingehende Gruppen-Payloads setzen:ChatType=groupGroupSubject(falls bekannt)GroupMembers(falls bekannt)WasMentioned(Mention-Gating-Ergebnis)- Telegram-Forumsthemen enthalten außerdem
MessageThreadIdundIsForum.
\n-Sequenzen zu tippen. Aus dem Kanal stammende Gruppennamen und Teilnehmerlabels werden als eingezäunte, nicht vertrauenswürdige Metadaten gerendert, nicht als Inline-Systemanweisungen.
iMessage-Spezifika
- Bevorzugen Sie
chat_id:<id>beim Routing oder bei Allowlists. - Chats auflisten:
imsg chats --limit 20. - Gruppenantworten gehen immer zurück an dieselbe
chat_id.