// dokumentacja openclaw

Zarządzanie grupami w OpenClaw — polityki i konfiguracja

Wprowadzenie

OpenClaw obsługuje czaty grupowe jednolicie na wielu platformach: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp i Zalo. Ten rozdział wyjaśnia wspólne mechanizmy kontroli grup, sesji i narzędzi.

Domyślne zachowanie

Grupy domyślnie ograniczają dostęp za pomocą modelu listy dozwolonych. Odpowiedzi wymagają wzmianki, chyba że jawnie wyłączysz to wymaganie. Przepływ oceny wiadomości wygląda następująco:

  1. Czy groupPolicy jest ustawione na disabled? → Odrzuć
  2. Czy grupa jest na liście dozwolonych? → Odrzuć, jeśli nie
  3. Czy wymagana jest wzmianka? → Zapamiętaj, jeśli brak, w przeciwnym razie odpowiedz

Autoryzacja wyzwalania i widoczność kontekstu

Dwa oddzielne mechanizmy autoryzacji:

  • Autoryzacja wyzwalania — kto może inicjować akcje agenta (groupPolicy, groups, groupAllowFrom)
  • Widoczność kontekstu — jakie dodatkowe informacje trafiają do modelu (tekst odpowiedzi, cytaty, historia wątku)

Polityki grupowe

Trzy polityki kontrolują obsługę wiadomości grupowych per kanał:

  • open — grupy pomijają listy dozwolonych; bramkowanie wzmiankami nadal obowiązuje
  • disabled — blokuje wszystkie wiadomości grupowe
  • allowlist — pozwala tylko na grupy pasujące do skonfigurowanych list

Bramkowanie wzmianek

Wiadomości grupowe domyślnie wymagają wzmianki, chyba że zostanie to nadpisane per grupa. Odpowiedź na wiadomość bota liczy się jako niejawna wzmianka na platformach udostępniających metadane cytatów (Telegram, WhatsApp, Slack, Discord, Microsoft Teams, Zalo).

{
  channels: {
    whatsapp: {
      groups: {
        "*": { requireMention: true },
        "123@g.us": { requireMention: false }
      }
    }
  },
  agents: {
    list: [{
      id: "main",
      groupChat: {
        mentionPatterns: ["@openclaw", "openclaw"],
        historyLimit: 50
      }
    }]
  }
}

Wzorce są case-insensitive z regexowymi zabezpieczeniami. Natywne wzmianki mają priorytet — wzorce służą jako rezerwowy mechanizm.

Klucze sesji

Sesje grupowe korzystają z formatu: agent:<agentId>:<channel>:group:<id>. Pokoje i kanały: agent:<agentId>:<channel>:channel:<id>. Tematy forum Telegram dopisują: :topic:<threadId>. DM korzystają z sesji głównej. Sesje grupowe pomijają heartbeaty.

Wzorzec: osobiste DM + publiczne grupy

Architektura, w której ruch „osobisty" idzie przez DM, a „publiczny" przez grupy. Przy włączonym sandboxie mode: "non-main":

  • DM — pełen dostęp do narzędzi (wykonanie na hoście)
  • Grupy — sandbox z ograniczonymi narzędziami (wykonanie w Dockerze)

Można też selektywnie udostępniać ścieżki do plików:

{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main",
        scope: "session",
        workspaceAccess: "none",
        docker: {
          binds: ["/home/user/Shared:/data:ro"]
        }
      }
    }
  }
}

Ograniczenia narzędzi per grupa

Niektóre kanały obsługują konfigurację dostępnych narzędzi w konkretnych grupach:

  • tools — allow/deny dla całej grupy
  • toolsBySender — nadpisania per nadawca z prefiksami: id:<senderId>, e164:<telefon>, username:<handle>, wildcard "*"

Kolejność rozwiązywania (od najdokładniejszego):

  1. toolsBySender grupy/kanału
  2. tools grupy/kanału
  3. toolsBySender domyślnych ("*")
  4. tools domyślnych ("*")

Komenda aktywacji

Właściciele grup mogą przełączać aktywację per grupa:

  • /activation mention — odpowiadaj tylko na wzmianki
  • /activation always — odpowiadaj na wszystkie wiadomości

Właściciel jest określany na podstawie channels.whatsapp.allowFrom (lub własnego numeru E.164 bota, jeśli nie ustawiono).

Konfiguracja per platforma

Różne platformy korzystają z różnych struktur konfiguracji:

  • WhatsApp/Telegram/Signal/iMessage/Teams/Zalo — groupAllowFrom (rezerwowo: allowFrom)
  • Discord — zagnieżdżona struktura: channels.discord.guilds.<id>.channels
  • Slack — channels.slack.channels
  • Matrix — channels.matrix.groups z ID pokojów lub aliasami; listy dozwolone per pokój przez users