Get started
Захист від циклів ботів
Захист від циклів ботів
OpenClaw може приймати повідомлення, написані іншими ботами, у каналах, які підтримують allowBots.
Коли цей шлях увімкнено, захист від циклів між парами запобігає тому, щоб дві ідентичності ботів
відповідали одна одній нескінченно.
Захист застосовується основним обробником вхідних відповідей. Кожен канал із підтримкою перетворює власну вхідну подію на узагальнені факти: обліковий запис або область, ідентифікатор розмови, ідентифікатор бота-відправника та ідентифікатор бота-отримувача. Потім ядро відстежує пару учасників в обох напрямках, застосовує ліміт ковзного вікна та блокує пару на час охолодження після перевищення ліміту.
Типові значення
Захист від циклів між парами активний, коли канал дозволяє повідомленням, створеним ботами, доходити до диспетчеризації. Вбудовані типові значення:
maxEventsPerWindow: 20- пара ботів може обмінятися 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: { molty: { allowBots: "mentions", botLoopProtection: { maxEventsPerWindow: 5, cooldownSeconds: 90, }, }, }, }, slack: { allowBots: "mentions", botLoopProtection: { maxEventsPerWindow: 8, }, }, matrix: { allowBots: "mentions", groups: { "!roomid:example.org": { botLoopProtection: { maxEventsPerWindow: 5, }, }, }, }, googlechat: { allowBots: true, groups: { "spaces/AAAA": { botLoopProtection: { maxEventsPerWindow: 5, }, }, }, }, },}Підтримка каналів
- Discord: нативні факти
author.bot, з ключем за обліковим записом Discord, каналом і парою ботів. - Slack: нативні факти
bot_idдля прийнятих повідомлень, створених ботами, з ключем за обліковим записом Slack, каналом і парою ботів. - Matrix: налаштовані облікові записи ботів Matrix, з ключем за обліковим записом Matrix, кімнатою та налаштованою парою ботів.
- Google Chat: нативні факти
sender.type=BOTдля прийнятих повідомлень, створених ботами, з ключем за обліковим записом, простором і парою ботів.
Канали, які не надають надійну ідентичність вхідного бота, продовжують використовувати свої звичайні фільтри власних повідомлень і політики доступу. Вони не повинні підключатися до цього захисту, доки не зможуть ідентифікувати обох учасників пари ботів.
Див. середовище виконання SDK, щоб дізнатися подробиці реалізації Plugin.