Get started
Захист від зациклення ботів
OpenClaw може приймати повідомлення, написані іншими ботами, у каналах, які підтримують allowBots. Коли цей шлях увімкнено, захист від циклічної взаємодії пар не дає двом ідентичностям ботів нескінченно відповідати одна одній.
Захист забезпечує основний обробник вхідних відповідей. Кожен канал, що підтримує цю функцію, перетворює свою вхідну подію на загальні дані: обліковий запис або область дії, ідентифікатор розмови, ідентифікатор бота-відправника та ідентифікатор бота-одержувача. Ядро відстежує пару учасників в обох напрямках (A до B і B до A вважаються тією самою парою), застосовує ліміт у ковзному часовому вікні та блокує пару на період очікування після перевищення ліміту.
Значення за замовчуванням
Захист від циклічної взаємодії пар активний щоразу, коли канал дозволяє повідомленням від ботів надходити до диспетчеризації. Вбудовані значення за замовчуванням:
| Ключ | Значення за замовчуванням | Значення |
|---|---|---|
enabled |
true |
Захист активний для каналів, які його підтримують. |
maxEventsPerWindow |
20 |
Кількість подій, якими пара ботів може обмінятися у вікні. |
windowSeconds |
60 |
Тривалість ковзного часового вікна. |
cooldownSeconds |
60 |
Час блокування після перевищення парою ліміту. |
Захист не впливає на повідомлення від людей, розгортання з одним ботом, фільтрування власних повідомлень або відповіді ботів, які не перевищують ліміт.
Налаштування спільних значень за замовчуванням
Задайте channels.defaults.botLoopProtection один раз, щоб надати всім каналам, які підтримують цю функцію, однакову базову конфігурацію. Перевизначення на рівні каналу, облікового запису та кімнати все одно дають змогу окремо налаштовувати відповідні середовища.
{ channels: { defaults: { botLoopProtection: { maxEventsPerWindow: 20, windowSeconds: 60, cooldownSeconds: 60, }, }, },}Задавайте enabled: false лише тоді, коли політика вашого каналу навмисно дозволяє розмови між ботами без автоматичного блокування.
Перевизначення для каналу, облікового запису або кімнати
Канали, які підтримують цю функцію, накладають власну конфігурацію на спільні значення за замовчуванням окремо для кожного ключа. Порядок пріоритету, від найвужчої області:
channels.<channel>.<room-or-space>.botLoopProtection, коли канал підтримує перевизначення для окремих розмовchannels.<channel>.accounts.<account>.botLoopProtection, коли канал підтримує облікові записиchannels.<channel>.botLoopProtection, коли канал підтримує значення за замовчуванням верхнього рівняchannels.defaults.botLoopProtection- вбудовані значення за замовчуванням
{ 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, }, }, },}Підтримка каналами
- Discord: нативні дані
author.bot, згруповані за обліковим записом Discord, каналом і парою ботів. - Google Chat: нативні дані
sender.type=BOTдля прийнятих повідомлень від ботів, згруповані за обліковим записом, простором і парою ботів. - Matrix: налаштовані облікові записи ботів Matrix, згруповані за обліковим записом Matrix, кімнатою та налаштованою парою ботів.
- Slack: нативні дані
bot_idдля прийнятих повідомлень від ботів, згруповані за обліковим записом Slack, каналом і парою ботів.
Канали, які не надають надійної ідентичності вхідного бота, продовжують використовувати звичайні фільтри власних повідомлень і політик доступу. Їм не слід вмикати цей захист, доки вони не зможуть ідентифікувати обох учасників пари ботів.
Докладніше про реалізацію plugin див. у розділі середовище виконання SDK.