Get started

محافظت در برابر حلقهٔ ربات‌ها

OpenClaw می‌تواند در کانال‌هایی که از allowBots پشتیبانی می‌کنند، پیام‌های نوشته‌شده توسط بات‌های دیگر را بپذیرد. هنگامی که این مسیر فعال باشد، محافظت در برابر حلقهٔ جفتی مانع از آن می‌شود که دو هویت بات به‌طور نامحدود به یکدیگر پاسخ دهند.

این محافظ توسط اجراکنندهٔ اصلی پاسخ‌های ورودی اعمال می‌شود. هر کانال پشتیبان، رویداد ورودی خود را به داده‌های عمومی نگاشت می‌کند: حساب یا دامنه، شناسهٔ مکالمه، شناسهٔ بات فرستنده و شناسهٔ بات گیرنده. هسته جفت شرکت‌کنندگان را در هر دو جهت ردیابی می‌کند (A به B و B به A یک جفت محسوب می‌شوند)، یک سهمیهٔ پنجرهٔ لغزان اعمال می‌کند و پس از عبور از سهمیه، جفت را طی یک دورهٔ توقف موقت سرکوب می‌کند.

پیش‌فرض‌ها

هرگاه کانالی اجازه دهد پیام‌های ایجادشده توسط بات به فرایند توزیع برسند، محافظت در برابر حلقهٔ جفتی فعال است. پیش‌فرض‌های داخلی:

کلید پیش‌فرض معنا
enabled true محافظ برای کانال‌هایی که از آن پشتیبانی می‌کنند فعال است.
maxEventsPerWindow 20 تعداد رویدادهایی که یک جفت بات می‌تواند در پنجره مبادله کند.
windowSeconds 60 طول پنجرهٔ لغزان.
cooldownSeconds 60 مدت سرکوب پس از عبور جفت از سهمیه.

این محافظ بر پیام‌های ایجادشده توسط انسان، استقرارهای تک‌باتی، پالایش پیام‌های خودی یا پاسخ‌های باتی که زیر سهمیه باقی می‌مانند تأثیری ندارد.

پیکربندی پیش‌فرض‌های مشترک

برای اختصاص یک خط مبنای یکسان به همهٔ کانال‌های پشتیبان، channels.defaults.botLoopProtection را یک‌بار تنظیم کنید. بازنویسی‌های کانال، حساب و اتاق همچنان می‌توانند هر سطح را جداگانه تنظیم کنند.

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

تنها زمانی enabled: false را تنظیم کنید که خط‌مشی کانال شما عمداً مکالمات بات‌به‌بات را بدون سرکوب خودکار مجاز می‌داند.

بازنویسی برای هر کانال، حساب یا اتاق

کانال‌های پشتیبان، پیکربندی خود را کلیدبه‌کلید روی پیش‌فرض مشترک اعمال می‌کنند. ترتیب اولویت، از محدودترین دامنه:

  1. channels.<channel>.<room-or-space>.botLoopProtection، هنگامی که کانال از بازنویسی برای هر مکالمه پشتیبانی می‌کند
  2. channels.<channel>.accounts.<account>.botLoopProtection، هنگامی که کانال از حساب‌ها پشتیبانی می‌کند
  3. channels.<channel>.botLoopProtection، هنگامی که کانال از پیش‌فرض‌های سطح بالا پشتیبانی می‌کند
  4. channels.defaults.botLoopProtection
  5. پیش‌فرض‌های داخلی
json5
{  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 مراجعه کنید.

Was this useful?
On this page

On this page