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.