Get started
การป้องกันลูปของบอต
OpenClaw สามารถรับข้อความที่เขียนโดยบอตอื่นในช่องทางที่รองรับ allowBots ได้ เมื่อเปิดใช้งานเส้นทางดังกล่าว การป้องกันลูปแบบคู่จะป้องกันไม่ให้ข้อมูลประจำตัวของบอตสองตัวตอบกลับกันอย่างไม่สิ้นสุด
กลไกป้องกันนี้บังคับใช้โดยตัวรันการตอบกลับขาเข้าของแกนกลาง แต่ละช่องทางที่รองรับจะแปลงเหตุการณ์ขาเข้าเป็นข้อเท็จจริงทั่วไป ได้แก่ บัญชีหรือขอบเขต รหัสการสนทนา รหัสบอตผู้ส่ง และรหัสบอตผู้รับ แกนกลางติดตามคู่ผู้เข้าร่วมทั้งสองทิศทาง (A ไป B และ B ไป A ถือเป็นคู่เดียวกัน) ใช้งบประมาณแบบหน้าต่างเลื่อน และระงับคู่นั้นในช่วงพักหลังจากใช้งบประมาณเกินกำหนด
ค่าเริ่มต้น
การป้องกันลูปแบบคู่จะทำงานเมื่อใดก็ตามที่ช่องทางอนุญาตให้ข้อความที่บอตเขียนเข้าถึงการส่งต่อ ค่าเริ่มต้นในตัวมีดังนี้:
| คีย์ | ค่าเริ่มต้น | ความหมาย |
|---|---|---|
enabled |
true |
กลไกป้องกันทำงานสำหรับช่องทางที่รองรับ |
maxEventsPerWindow |
20 |
จำนวนเหตุการณ์ที่คู่บอตแลกเปลี่ยนกันได้ภายในหน้าต่าง |
windowSeconds |
60 |
ระยะเวลาของหน้าต่างเลื่อน |
cooldownSeconds |
60 |
ระยะเวลาระงับหลังจากคู่บอตใช้งบประมาณเกินกำหนด |
กลไกป้องกันนี้ไม่ส่งผลต่อข้อความที่มนุษย์เขียน การติดตั้งใช้งานบอตตัวเดียว การกรองข้อความจากตัวเอง หรือการตอบกลับของบอตที่ยังอยู่ภายในงบประมาณ
กำหนดค่าเริ่มต้นที่ใช้ร่วมกัน
ตั้งค่า channels.defaults.botLoopProtection เพียงครั้งเดียวเพื่อกำหนดค่าพื้นฐานเดียวกันให้แก่ทุกช่องทางที่รองรับ ช่องทางต่าง ๆ อาจมีการแทนที่ค่าที่เฉพาะเจาะจงยิ่งขึ้นด้วย โดย Feishu ตั้งใจใช้เฉพาะค่าพื้นฐานที่ใช้ร่วมกันนี้เท่านั้น
{ 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: 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, }, }, },}การรองรับของช่องทาง
- Discord: ข้อเท็จจริง
author.botแบบเนทีฟ โดยใช้บัญชี Discord ช่องทาง และคู่บอตเป็นคีย์ - Feishu: ข้อเท็จจริง
sender_type=botแบบเนทีฟสำหรับข้อความกลุ่มที่บอตเขียนซึ่งได้รับอนุญาต โดยใช้บัญชี Feishu แชต และคู่บอตเป็นคีย์ Feishu ใช้เฉพาะchannels.defaults.botLoopProtectionเท่านั้น - Google Chat: ข้อเท็จจริง
sender.type=BOTแบบเนทีฟสำหรับข้อความที่บอตเขียนซึ่งได้รับการยอมรับ โดยใช้บัญชี พื้นที่ทำงาน และคู่บอตเป็นคีย์ - Matrix: บัญชีบอต Matrix ที่กำหนดค่าไว้ โดยใช้บัญชี Matrix ห้อง และคู่บอตที่กำหนดค่าไว้เป็นคีย์
- Slack: ข้อเท็จจริง
bot_idแบบเนทีฟสำหรับข้อความที่บอตเขียนซึ่งได้รับการยอมรับ โดยใช้บัญชี Slack ช่องทาง และคู่บอตเป็นคีย์
ช่องทางที่ไม่มีข้อมูลประจำตัวของบอตขาเข้าที่เชื่อถือได้จะยังคงใช้ตัวกรองข้อความจากตัวเองและตัวกรองนโยบายการเข้าถึงตามปกติ ช่องทางเหล่านี้ไม่ควรเลือกใช้กลไกป้องกันนี้จนกว่าจะสามารถระบุผู้เข้าร่วมทั้งสองในคู่บอตได้
ดูรายละเอียดการติดตั้งใช้งาน Plugin ที่ รันไทม์ SDK