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