Get started

การป้องกันลูปของบอต

OpenClaw สามารถรับข้อความที่เขียนโดยบอตอื่นในช่องทางที่รองรับ allowBots ได้ เมื่อเปิดใช้งานเส้นทางดังกล่าว การป้องกันลูปแบบคู่จะป้องกันไม่ให้ข้อมูลประจำตัวของบอตสองตัวตอบกลับกันอย่างไม่สิ้นสุด

กลไกป้องกันนี้บังคับใช้โดยตัวรันการตอบกลับขาเข้าของแกนกลาง แต่ละช่องทางที่รองรับจะแปลงเหตุการณ์ขาเข้าเป็นข้อเท็จจริงทั่วไป ได้แก่ บัญชีหรือขอบเขต รหัสการสนทนา รหัสบอตผู้ส่ง และรหัสบอตผู้รับ แกนกลางติดตามคู่ผู้เข้าร่วมทั้งสองทิศทาง (A ไป B และ B ไป A ถือเป็นคู่เดียวกัน) ใช้งบประมาณแบบหน้าต่างเลื่อน และระงับคู่นั้นในช่วงพักหลังจากใช้งบประมาณเกินกำหนด

ค่าเริ่มต้น

การป้องกันลูปแบบคู่จะทำงานเมื่อใดก็ตามที่ช่องทางอนุญาตให้ข้อความที่บอตเขียนเข้าถึงการส่งต่อ ค่าเริ่มต้นในตัวมีดังนี้:

คีย์ ค่าเริ่มต้น ความหมาย
enabled true กลไกป้องกันทำงานสำหรับช่องทางที่รองรับ
maxEventsPerWindow 20 จำนวนเหตุการณ์ที่คู่บอตแลกเปลี่ยนกันได้ภายในหน้าต่าง
windowSeconds 60 ระยะเวลาของหน้าต่างเลื่อน
cooldownSeconds 60 ระยะเวลาระงับหลังจากคู่บอตใช้งบประมาณเกินกำหนด

กลไกป้องกันนี้ไม่ส่งผลต่อข้อความที่มนุษย์เขียน การติดตั้งใช้งานบอตตัวเดียว การกรองข้อความจากตัวเอง หรือการตอบกลับของบอตที่ยังอยู่ภายในงบประมาณ

กำหนดค่าเริ่มต้นที่ใช้ร่วมกัน

ตั้งค่า channels.defaults.botLoopProtection เพียงครั้งเดียวเพื่อกำหนดค่าพื้นฐานเดียวกันให้แก่ทุกช่องทางที่รองรับ ช่องทางต่าง ๆ อาจมีการแทนที่ค่าที่เฉพาะเจาะจงยิ่งขึ้นด้วย โดย Feishu ตั้งใจใช้เฉพาะค่าพื้นฐานที่ใช้ร่วมกันนี้เท่านั้น

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: 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

Was this useful?
On this page

On this page