Get started
機器人迴圈防護
OpenClaw 可接受由其他機器人撰寫、且支援 allowBots 的頻道訊息。啟用此路徑時,配對迴圈保護可防止兩個機器人身分無限互相回覆。
此防護機制由核心入站回覆執行器強制執行。每個支援的頻道會將其入站事件對應為通用資訊:帳號或範圍、對話 ID、傳送者機器人 ID,以及接收者機器人 ID。核心會雙向追蹤參與者配對(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 帳號、頻道及機器人配對為鍵。
未公開可靠入站機器人身分的頻道,會繼續使用其一般的自身訊息與存取政策篩選器。在能夠識別機器人配對中的兩個參與者之前,不應選擇啟用此防護機制。
如需外掛實作詳細資訊,請參閱 SDK 執行階段。
Was this useful?