accessGroups 下定義一次的命名傳送者清單,並可透過 accessGroup:<name> 從通道允許清單參照。
當同一批人應該被允許使用多個訊息通道,或同一組受信任的人應該同時適用於私訊和群組傳送者授權時,請使用它們。
群組本身不授予任何權限。只有在允許清單欄位參照它時才有作用。
靜態訊息傳送者群組
靜態傳送者群組使用type: "message.senders"。members 以訊息通道 ID 為鍵,並使用 "*" 表示每個通道共用的項目:
| 鍵 | 意義 |
|---|---|
"*" | 會針對每個參照該群組的訊息通道檢查的共用項目。 |
discord, telegram, … | 只會針對該通道的允許清單比對檢查的項目。 |
allowFrom 規則進行比對。OpenClaw 不會在通道之間轉譯傳送者 ID:如果 Alice 有 Telegram ID 和 Discord ID,請在對應的通道鍵下列出兩個 ID。
從允許清單參照群組
在訊息通道路徑支援傳送者允許清單的任何地方,都可以用accessGroup:<name> 參照群組。
私訊允許清單範例:
支援的訊息通道路徑
存取群組可在共用訊息通道授權路徑中使用:- 私訊傳送者允許清單,例如
channels.<channel>.allowFrom - 群組傳送者允許清單,例如
channels.<channel>.groupAllowFrom - 使用相同傳送者比對規則的通道專屬逐聊天室傳送者允許清單(例如 Google Chat
groups.<space>.users) - 重用訊息通道傳送者允許清單的命令授權路徑
message.senders 群組與通道無關,因此新的訊息通道只要使用共用的外掛 SDK 入口輔助工具,而不是自訂允許清單展開,就能取得這些群組。
Discord 通道受眾
Discord 也支援動態存取群組類型:discord.channelAudience 表示「允許目前可以檢視此公會通道的 Discord 私訊傳送者」。OpenClaw 會在授權時透過 Discord 解析傳送者,並套用 Discord ViewChannel 權限規則。membership 是選用項,預設為 canViewChannel。
當 Discord 通道已經是團隊的事實來源時使用,例如 #maintainers 或 #on-call。
需求和失敗行為:
- 機器人需要具備存取該公會和通道的權限。
- 機器人需要 Discord Developer Portal 的伺服器成員意圖。
- 當 Discord 回傳
Missing Access、傳送者無法解析為公會成員,或通道屬於另一個公會時,存取群組會失敗關閉。
外掛診斷
外掛作者可以檢查結構化的存取群組狀態,而不必將其展開回扁平允許清單:allowFrom 陣列時,才使用 expandAllowFromWithAccessGroups(...)。
安全性注意事項
- 存取群組是允許清單別名,不是角色。它們本身不會建立擁有者、核准配對請求,或授予工具權限。
dmPolicy: "open"仍需要有效的私訊允許清單中有"*"。參照存取群組不等同於公開存取。- 遺失的群組名稱會失敗關閉。如果
allowFrom包含accessGroup:operators,而accessGroups.operators不存在,該項目不會授權任何人。 - 保持通道 ID 穩定。當通道同時支援數字/使用者 ID 和顯示名稱時,優先使用數字/使用者 ID。
疑難排解
如果傳送者應該符合但被封鎖:- 確認允許清單欄位包含確切的
accessGroup:<name>參照。 - 確認
accessGroups.<name>.type正確。 - 確認傳送者 ID 已列在相符的通道鍵下,或列在
"*"下。 - 確認該項目使用該通道的一般允許清單語法。
- 對於 Discord 通道受眾,確認機器人可以看到該公會通道,且已啟用伺服器成員意圖。
openclaw doctor。它會在執行階段前找出許多無效的允許清單和政策組合。