Get started
محافظت در برابر حلقهٔ رباتها
OpenClaw میتواند در کانالهایی که از allowBots پشتیبانی میکنند، پیامهای نوشتهشده توسط باتهای دیگر را بپذیرد. هنگامی که این مسیر فعال باشد، محافظت در برابر حلقهٔ جفتی مانع از آن میشود که دو هویت بات بهطور نامحدود به یکدیگر پاسخ دهند.
این محافظ توسط اجراکنندهٔ اصلی پاسخهای ورودی اعمال میشود. هر کانال پشتیبان، رویداد ورودی خود را به دادههای عمومی نگاشت میکند: حساب یا دامنه، شناسهٔ مکالمه، شناسهٔ بات فرستنده و شناسهٔ بات گیرنده. هسته جفت شرکتکنندگان را در هر دو جهت ردیابی میکند (A به B و B به A یک جفت محسوب میشوند)، یک سهمیهٔ پنجرهٔ لغزان اعمال میکند و پس از عبور از سهمیه، جفت را طی یک دورهٔ توقف موقت سرکوب میکند.
پیشفرضها
هرگاه کانالی اجازه دهد پیامهای ایجادشده توسط بات به فرایند توزیع برسند، محافظت در برابر حلقهٔ جفتی فعال است. پیشفرضهای داخلی:
| کلید | پیشفرض | معنا |
|---|---|---|
enabled |
true |
محافظ برای کانالهایی که از آن پشتیبانی میکنند فعال است. |
maxEventsPerWindow |
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: { 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 مراجعه کنید.