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