Get started
Ochrona przed zapętleniem botów
OpenClaw może przyjmować wiadomości napisane przez inne boty w kanałach obsługujących allowBots. Gdy ta ścieżka jest włączona, ochrona przed pętlą między parami zapobiega bezterminowemu odpowiadaniu sobie przez dwie tożsamości botów.
Mechanizm ochronny jest egzekwowany przez główny moduł obsługi odpowiedzi przychodzących. Każdy obsługiwany kanał przekształca zdarzenie przychodzące w ogólne dane: konto lub zakres, identyfikator konwersacji, identyfikator bota nadawcy i identyfikator bota odbiorcy. Rdzeń śledzi parę uczestników w obu kierunkach (A do B i B do A są traktowane jako ta sama para), stosuje limit w przesuwanym oknie i blokuje parę na czas karencji po przekroczeniu limitu.
Wartości domyślne
Ochrona przed pętlą między parami jest aktywna zawsze, gdy kanał dopuszcza wiadomości utworzone przez boty do przekazania dalej. Wbudowane wartości domyślne:
| Klucz | Wartość domyślna | Znaczenie |
|---|---|---|
enabled |
true |
Ochrona aktywna dla kanałów, które ją obsługują. |
maxEventsPerWindow |
20 |
Liczba zdarzeń, które para botów może wymienić w danym oknie. |
windowSeconds |
60 |
Długość przesuwanego okna. |
cooldownSeconds |
60 |
Czas blokady po przekroczeniu limitu przez parę. |
Mechanizm ochronny nie wpływa na wiadomości napisane przez ludzi, wdrożenia z jednym botem, filtrowanie własnych wiadomości ani odpowiedzi botów mieszczące się w limicie.
Konfigurowanie wspólnych wartości domyślnych
Ustaw channels.defaults.botLoopProtection jednokrotnie, aby zapewnić wszystkim obsługiwanym kanałom tę samą konfigurację bazową. Nadpisania na poziomie kanału, konta i pokoju nadal mogą dostosowywać poszczególne obszary.
{ channels: { defaults: { botLoopProtection: { maxEventsPerWindow: 20, windowSeconds: 60, cooldownSeconds: 60, }, }, },}Ustaw enabled: false tylko wtedy, gdy zasady kanału celowo zezwalają na konwersacje między botami bez automatycznej blokady.
Nadpisywanie dla kanału, konta lub pokoju
Obsługiwane kanały nakładają własną konfigurację na wspólne wartości domyślne, klucz po kluczu. Kolejność pierwszeństwa, od najbardziej szczegółowej:
channels.<channel>.<room-or-space>.botLoopProtection, gdy kanał obsługuje nadpisania dla poszczególnych konwersacjichannels.<channel>.accounts.<account>.botLoopProtection, gdy kanał obsługuje kontachannels.<channel>.botLoopProtection, gdy kanał obsługuje wartości domyślne najwyższego poziomuchannels.defaults.botLoopProtection- wbudowane wartości domyślne
{ channels: { defaults: { botLoopProtection: { maxEventsPerWindow: 20, }, }, discord: { botLoopProtection: { maxEventsPerWindow: 8, }, accounts: { secondary: { allowBots: "mentions", botLoopProtection: { maxEventsPerWindow: 5, cooldownSeconds: 90, }, }, }, }, googlechat: { allowBots: true, groups: { "spaces/AAAA": { botLoopProtection: { maxEventsPerWindow: 5, }, }, }, }, matrix: { allowBots: "mentions", groups: { "!roomid:example.org": { botLoopProtection: { maxEventsPerWindow: 5, }, }, }, }, slack: { allowBots: "mentions", botLoopProtection: { maxEventsPerWindow: 8, }, }, },}Obsługa kanałów
- Discord: natywne dane
author.bot, indeksowane według konta Discord, kanału i pary botów. - Google Chat: natywne dane
sender.type=BOTdla zaakceptowanych wiadomości napisanych przez boty, indeksowane według konta, przestrzeni i pary botów. - Matrix: skonfigurowane konta botów Matrix, indeksowane według konta Matrix, pokoju i skonfigurowanej pary botów.
- Slack: natywne dane
bot_iddla zaakceptowanych wiadomości napisanych przez boty, indeksowane według konta Slack, kanału i pary botów.
Kanały, które nie udostępniają wiarygodnej tożsamości przychodzącego bota, nadal korzystają ze standardowych filtrów własnych wiadomości i zasad dostępu. Nie powinny korzystać z tego mechanizmu ochronnego, dopóki nie będą w stanie zidentyfikować obu uczestników pary botów.
Szczegóły implementacji Pluginów zawiera sekcja środowisko wykonawcze SDK.