> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Защита от циклов ботов

# Защита от зацикливания ботов

OpenClaw может принимать сообщения, написанные другими ботами, в каналах, которые поддерживают `allowBots`.
Когда этот путь включен, защита пары от зацикливания не позволяет двум идентификаторам ботов
бесконечно отвечать друг другу.

Защита применяется базовым обработчиком входящих ответов. Каждый поддерживающий канал
преобразует собственное входящее событие в обобщенные факты: учетная запись или область,
идентификатор беседы, идентификатор бота-отправителя и идентификатор бота-получателя. Затем ядро отслеживает пару участников в обоих
направлениях, применяет бюджет скользящего окна и подавляет пару на время
периода охлаждения после превышения бюджета.

## Значения по умолчанию

Защита пары от зацикливания активна, когда канал разрешает сообщениям, созданным ботами, доходить
до диспетчеризации. Встроенные значения по умолчанию:

* `maxEventsPerWindow: 20` - пара ботов может обменяться 20 событиями в пределах окна
* `windowSeconds: 60` - длительность скользящего окна
* `cooldownSeconds: 60` - время подавления после превышения парой бюджета

Защита не влияет на обычные сообщения, написанные людьми, развертывания с одним ботом,
фильтрацию собственных сообщений или однократные ответы ботов, которые остаются в пределах бюджета.

## Настройка общих значений по умолчанию

Задайте `channels.defaults.botLoopProtection` один раз, чтобы дать каждому поддерживающему каналу
одинаковую базовую настройку. Переопределения на уровне канала и учетной записи по-прежнему могут настраивать отдельные
поверхности.

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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`
* встроенные значения по умолчанию

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  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](/ru/plugins/sdk-runtime#reusable-runtime-utilities) для подробностей реализации
Plugin.
