---
read_when:
    - การกำหนดค่าข้อความในช่องที่สร้างโดยบอต
    - การปรับแต่งการป้องกันลูประหว่างบอตกับบอต
sidebarTitle: Bot loop protection
summary: ค่าเริ่มต้นของการป้องกันลูประหว่างบอตและการกำหนดค่าทับสำหรับช่องทาง
title: การป้องกันลูปของบอต
x-i18n:
    generated_at: "2026-07-19T07:02:56Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: d59d3b48dd5506e774282b880334df8970b05c4d001261ff7107e8e1678894db
    source_path: channels/bot-loop-protection.md
    workflow: 16
---

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](/th/plugins/sdk-runtime#reusable-runtime-utilities)
