Comenzar

Protección contra bucles de bots

OpenClaw puede aceptar mensajes escritos por otros bots en canales compatibles con allowBots. Cuando esta vía está habilitada, la protección contra bucles entre pares evita que dos identidades de bot se respondan entre sí indefinidamente.

La protección se aplica mediante el ejecutor principal de respuestas entrantes. Cada canal compatible convierte su evento entrante en datos genéricos: cuenta o ámbito, id. de conversación, id. del bot remitente e id. del bot receptor. El núcleo realiza un seguimiento del par de participantes en ambas direcciones (A a B y B a A cuentan como el mismo par), aplica un límite de ventana deslizante y bloquea el par durante un período de espera después de que se supere el límite.

Valores predeterminados

La protección contra bucles entre pares está activa siempre que un canal permita que los mensajes escritos por bots lleguen al despacho. Valores predeterminados integrados:

Clave Valor predeterminado Significado
enabled true Protección activa para los canales compatibles.
maxEventsPerWindow 20 Eventos que un par de bots puede intercambiar dentro de la ventana.
windowSeconds 60 Duración de la ventana deslizante.
cooldownSeconds 60 Tiempo de bloqueo después de que el par supere el límite.

La protección no afecta a los mensajes escritos por personas, las implementaciones con un solo bot, el filtrado de mensajes propios ni las respuestas de bots que se mantienen por debajo del límite.

Configurar valores predeterminados compartidos

Establezca channels.defaults.botLoopProtection una vez para proporcionar la misma base de referencia a todos los canales compatibles. Los canales también pueden ofrecer anulaciones más específicas; Feishu utiliza intencionadamente solo esta base de referencia compartida.

json5
{  channels: {    defaults: {      botLoopProtection: {        maxEventsPerWindow: 20,        windowSeconds: 60,        cooldownSeconds: 60,      },    },  },}

Establezca enabled: false solo cuando la política del canal permita intencionadamente conversaciones entre bots sin bloqueo automático.

Anular por canal, cuenta o sala

Los canales compatibles superponen su propia configuración a los valores predeterminados compartidos, clave por clave. Precedencia, de más específica a menos específica:

  1. channels.<channel>.<room-or-space>.botLoopProtection, cuando el canal admite anulaciones por conversación
  2. channels.<channel>.accounts.<account>.botLoopProtection, cuando el canal admite cuentas
  3. channels.<channel>.botLoopProtection, cuando el canal admite valores predeterminados de nivel superior
  4. channels.defaults.botLoopProtection
  5. valores predeterminados integrados
json5
{  channels: {    defaults: {      botLoopProtection: {        maxEventsPerWindow: 20,      },    },    discord: {      botLoopProtection: {        maxEventsPerWindow: 8,      },      accounts: {        secondary: {          allowBots: true,          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,      },    },  },}

Compatibilidad de canales

  • Discord: datos nativos de author.bot, identificados por cuenta de Discord, canal y par de bots.
  • Feishu: datos nativos de sender_type=bot para mensajes de grupo admitidos escritos por bots, identificados por cuenta de Feishu, chat y par de bots. Feishu utiliza solo channels.defaults.botLoopProtection.
  • Google Chat: datos nativos de sender.type=BOT para mensajes aceptados escritos por bots, identificados por cuenta, espacio y par de bots.
  • Matrix: cuentas de bot de Matrix configuradas, identificadas por cuenta de Matrix, sala y par de bots configurado.
  • Slack: datos nativos de bot_id para mensajes aceptados escritos por bots, identificados por cuenta de Slack, canal y par de bots.

Los canales que no proporcionan una identidad fiable para el bot entrante siguen utilizando sus filtros habituales de mensajes propios y de políticas de acceso. No deben habilitar esta protección hasta que puedan identificar a ambos participantes del par de bots.

Consulte entorno de ejecución del SDK para obtener detalles sobre la implementación de plugins.

Was this useful?
On this page

On this page