message 工具,否則房間會保持沉默。
對於永遠開啟的群組聊天,請將 messages.groupChat.unmentionedInbound: "room_event" 與 messages.groupChat.visibleReplies: "message_tool" 搭配使用。代理程式會聆聽、判斷何時回覆有用,而且不再需要舊式提示詞模式中回答 NO_REPLY。
目前支援:Discord 公會頻道、Slack 頻道與私人頻道、Slack 多人私訊,以及 Telegram 群組或超級群組。其他群組頻道會保留既有的群組行為,除非其頻道頁面表示支援環境房間事件。
建議設定
設定全域群組聊天行為:groupPolicy、房間允許清單與寄件者允許清單。
儲存設定後,閘道會熱套用 messages 設定。只有在檔案監看或設定重新載入已停用 (gateway.reload.mode: "off") 時才需要重新啟動。
變更內容
使用messages.groupChat.unmentionedInbound: "room_event" 時:
- 未提及且允許的群組或頻道訊息會成為安靜的房間事件
- 提及的訊息仍是使用者請求
- 文字控制命令與原生命令仍是使用者請求
- 中止或停止請求仍是使用者請求
- 直接訊息仍是使用者請求
message(action=send) 才會張貼到房間中。
房間事件會抑制輸入中與生命週期狀態反應。唯一明確的收件例外是 messages.ackReactionScope: "all",它會傳送已設定的確認反應;當房間必須完全保持沉默時,請使用任何較窄的範圍或 "off"。
Discord 範例
groupPolicy: "allowlist" 下,列出頻道就是允許它 (enabled: false 會停用一個項目):
Slack 範例
Slack 頻道允許清單以 ID 優先。請使用像C12345678 這樣的頻道 ID,而不是 #channel-name。在 channels.slack.channels 下列出頻道就是允許它 (enabled: false 會停用一個項目):
Telegram 範例
對於 Telegram 群組,機器人必須能看見一般群組訊息。如果requireMention: false,請停用 BotFather 隱私模式,或使用另一種會將完整群組流量傳遞給機器人的 Telegram 設定。
-1001234567890。請從 openclaw logs --follow 讀取 chat.id、將群組訊息轉寄給 ID 輔助機器人,或檢查 Bot API getUpdates。
代理程式專屬政策
當多個代理程式共用同一個房間,但只有一個應將未提及的閒聊視為環境情境時,請使用代理程式覆寫:agents.list[].groupChat.unmentionedInbound 值會覆寫該代理程式的 messages.groupChat.unmentionedInbound。
可見回覆模式
對於一般群組/頻道使用者請求,messages.groupChat.visibleReplies 預設為 "automatic"。當最終助理文字應在沒有明確訊息工具呼叫的情況下可見地張貼時,請保留該預設值。
對於永遠開啟的環境房間,仍建議使用 messages.groupChat.visibleReplies: "message_tool",特別是搭配最新世代、工具可靠的模型,例如 GPT 5.5。它讓代理程式能透過呼叫訊息工具來決定何時發言。如果模型回傳最終文字但未呼叫工具,OpenClaw 會將該最終文字保持為私密,並記錄已抑制傳遞的中繼資料。
即使其他群組請求使用自動回覆,房間事件仍會保持嚴格。未提及的環境房間事件一律需要 message(action=send) 才會產生可見輸出。
歷史記錄
messages.groupChat.historyLimit 會設定全域群組歷史記錄預設值 (未設定時為 50;必須是正整數)。頻道可以用 channels.<channel>.historyLimit 覆寫它,而有些頻道也支援每帳號歷史記錄限制。將頻道層級的 historyLimit: 0 設為停用該頻道的群組歷史記錄情境。
支援房間事件的頻道會保留近期環境房間訊息作為情境。Telegram 會保留一個由 historyLimit 限制的永遠開啟每群組滾動視窗;使用者請求回合會選取機器人最後記錄回覆之後的項目,而房間事件回合會收到完整的近期視窗,讓模型能看見自己的近期貼文。已淘汰的 Telegram includeGroupHistoryContext 模式鍵會由 openclaw doctor --fix 移除。
疑難排解
如果房間顯示輸入中或權杖用量,但沒有可見訊息:- 確認房間已由頻道允許清單與寄件者允許清單允許。
- 確認已在你預期的房間層級設定
requireMention: false。 - 檢查
messages.groupChat.unmentionedInbound或代理程式覆寫是否為"room_event"。 - 檢查日誌中是否有已抑制最終酬載中繼資料或
didSendViaMessagingTool: false。 - 對於一般群組請求,如果你想要自動張貼最終回覆,請保留或還原
messages.groupChat.visibleReplies: "automatic"。對於使用message_tool的環境房間,請使用能可靠呼叫工具的模型/執行階段。
channels:history (公開)、groups:history (私人),或 mpim:history (多人私訊)。