Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
channels.* 下的每通道設定鍵。涵蓋 DM 與群組存取、多帳號設定、提及門檻,以及 Slack、Discord、Telegram、WhatsApp、Matrix、iMessage 和其他內建通道 plugins 的每通道金鑰。
若要了解代理、工具、Gateway 執行階段,以及其他頂層鍵,請參閱
設定參考。
通道
每個通道會在其設定區段存在時自動啟動(除非enabled: false)。
DM 與群組存取
所有通道都支援 DM 政策與群組政策:| DM 政策 | 行為 |
|---|---|
pairing(預設) | 未知寄件者會取得一次性配對碼;擁有者必須核准 |
allowlist | 僅允許 allowFrom 中的寄件者(或已配對的允許儲存區) |
open | 允許所有傳入 DM(需要 allowFrom: ["*"]) |
disabled | 忽略所有傳入 DM |
| 群組政策 | 行為 |
|---|---|
allowlist(預設) | 僅允許符合已設定允許清單的群組 |
open | 略過群組允許清單(提及門檻仍適用) |
disabled | 封鎖所有群組/聊天室訊息 |
當提供者的
groupPolicy 未設定時,channels.defaults.groupPolicy 會設定預設值。
配對碼會在 1 小時後過期。待處理的 DM 配對請求上限為每個通道 3 個。
如果提供者區塊完全缺少(沒有 channels.<provider>),執行階段群組政策會退回到 allowlist(失敗關閉),並在啟動時發出警告。通道模型覆寫
使用channels.modelByChannel 將特定通道 ID 固定到某個模型。值接受 provider/model 或已設定的模型別名。當工作階段尚未有模型覆寫時(例如透過 /model 設定),會套用通道對應。
通道預設值與 Heartbeat
使用channels.defaults 為各提供者設定共用的群組政策與 Heartbeat 行為:
channels.defaults.groupPolicy:當提供者層級的groupPolicy未設定時使用的後備群組政策。channels.defaults.contextVisibility:所有通道的預設補充脈絡可見性模式。值:all(預設,包含所有引用/執行緒/歷史脈絡)、allowlist(僅包含來自允許清單寄件者的脈絡)、allowlist_quote(與 allowlist 相同,但保留明確的引用/回覆脈絡)。每通道覆寫:channels.<channel>.contextVisibility。channels.defaults.heartbeat.showOk:在 Heartbeat 輸出中包含健康的通道狀態。channels.defaults.heartbeat.showAlerts:在 Heartbeat 輸出中包含降級/錯誤狀態。channels.defaults.heartbeat.useIndicator:呈現精簡指示器樣式的 Heartbeat 輸出。
多帳號 WhatsApp
多帳號 WhatsApp
- 如果存在
default帳號,傳出命令預設使用帳號default;否則使用第一個已設定的帳號 ID(排序後)。 - 選用的
channels.whatsapp.defaultAccount可在符合已設定帳號 ID 時,覆寫該後備預設帳號選擇。 - 舊版單帳號 Baileys 驗證目錄會由
openclaw doctor遷移到whatsapp/default。 - 每帳號覆寫:
channels.whatsapp.accounts.<id>.sendReadReceipts、channels.whatsapp.accounts.<id>.dmPolicy、channels.whatsapp.accounts.<id>.allowFrom。
Telegram
- Bot token:
channels.telegram.botToken或channels.telegram.tokenFile(僅限一般檔案;符號連結會被拒絕),預設帳號會以TELEGRAM_BOT_TOKEN作為後備。 apiRoot只可是 Telegram Bot API 根目錄。請使用https://api.telegram.org或你自行託管/代理的根目錄,而不是https://api.telegram.org/bot<TOKEN>;openclaw doctor --fix會移除意外尾隨的/bot<TOKEN>後綴。- 選用的
channels.telegram.defaultAccount可在符合已設定帳號 ID 時,覆寫預設帳號選擇。 - 在多帳號設定(2 個以上帳號 ID)中,請設定明確預設值(
channels.telegram.defaultAccount或channels.telegram.accounts.default)以避免後備路由;缺少或無效時,openclaw doctor會發出警告。 configWrites: false會封鎖由 Telegram 發起的設定寫入(超級群組 ID 遷移、/config set|unset)。- 具有
type: "acp"的頂層bindings[]項目,會為論壇主題設定持久 ACP 繫結(在match.peer.id中使用標準chatId:topic:topicId)。欄位語意在 ACP 代理 中共用。 - Telegram 串流預覽使用
sendMessage+editMessageText(可在直接聊天與群組聊天中運作)。 - 重試政策:請參閱重試政策。
Discord
- Token:
channels.discord.token,預設帳戶以DISCORD_BOT_TOKEN作為後援。 - 提供明確 Discord
token的直接傳出呼叫會使用該 token 進行呼叫;帳戶重試/政策設定仍來自作用中執行階段快照中選取的帳戶。 - 選用的
channels.discord.defaultAccount會在符合已設定帳戶 ID 時覆寫預設帳戶選取。 - 使用
user:<id>(DM)或channel:<id>(公會頻道)作為傳遞目標;純數字 ID 會被拒絕。 - 公會 slug 為小寫,空格會替換成
-;頻道鍵使用 slug 化名稱(不含#)。建議優先使用公會 ID。 - 預設會忽略機器人撰寫的訊息。
allowBots: true會啟用它們;使用allowBots: "mentions"只接受提及該機器人的機器人訊息(仍會篩除自己的訊息)。 channels.discord.guilds.<id>.ignoreOtherMentions(以及頻道覆寫)會丟棄提及其他使用者或角色但未提及該機器人的訊息(不含 @everyone/@here)。maxLinesPerMessage(預設 17)即使在 2000 個字元以內,也會分割過高的訊息。channels.discord.threadBindings控制 Discord 執行緒繫結路由:enabled:Discord 對執行緒繫結工作階段功能的覆寫(/focus、/unfocus、/agents、/session idle、/session max-age,以及繫結的傳遞/路由)idleHours:Discord 對非作用中自動取消聚焦的小時數覆寫(0會停用)maxAgeHours:Discord 對硬性最長存留時間的小時數覆寫(0會停用)spawnSubagentSessions:sessions_spawn({ thread: true })自動建立/繫結執行緒的選用開關
- 具有
type: "acp"的頂層bindings[]項目會為頻道和執行緒設定持久 ACP 繫結(在match.peer.id中使用頻道/執行緒 ID)。欄位語意共用於 ACP 代理程式。 channels.discord.ui.components.accentColor設定 Discord 元件 v2 容器的強調色。channels.discord.voice啟用 Discord 語音頻道對話,以及選用的自動加入 + LLM + TTS 覆寫。channels.discord.voice.model可選擇性覆寫 Discord 語音頻道回應所使用的 LLM 模型。channels.discord.voice.daveEncryption和channels.discord.voice.decryptionFailureTolerance會傳遞至@discordjs/voiceDAVE 選項(預設為true和24)。- OpenClaw 另外會在重複解密失敗後,透過離開/重新加入語音工作階段來嘗試語音接收復原。
channels.discord.streaming是標準串流模式鍵。舊版streamMode和布林streaming值會自動遷移。channels.discord.autoPresence會將執行階段可用性對應到機器人上線狀態(healthy => online、degraded => idle、exhausted => dnd),並允許選用的狀態文字覆寫。channels.discord.dangerouslyAllowNameMatching會重新啟用可變名稱/標籤比對(緊急相容模式)。channels.discord.execApprovals:Discord 原生 exec 核准傳遞與核准者授權。enabled:true、false或"auto"(預設)。在自動模式中,當可從approvers或commands.ownerAllowFrom解析核准者時,exec 核准會啟用。approvers:允許核准 exec 請求的 Discord 使用者 ID。省略時會後援至commands.ownerAllowFrom。agentFilter:選用的代理程式 ID 允許清單。省略則轉送所有代理程式的核准。sessionFilter:選用的工作階段鍵模式(子字串或正規表示式)。target:傳送核准提示的位置。"dm"(預設)傳送到核准者 DM,"channel"傳送到來源頻道,"both"傳送到兩者。當目標包含"channel"時,按鈕只有已解析的核准者可使用。cleanupAfterResolve:為true時,在核准、拒絕或逾時後刪除核准 DM。
off(無)、own(機器人的訊息,預設)、all(所有訊息)、allowlist(來自所有訊息上的 guilds.<id>.users)。
Google Chat
- 服務帳戶 JSON:內嵌(
serviceAccount)或檔案式(serviceAccountFile)。 - 也支援服務帳戶 SecretRef(
serviceAccountRef)。 - 環境後援:
GOOGLE_CHAT_SERVICE_ACCOUNT或GOOGLE_CHAT_SERVICE_ACCOUNT_FILE。 - 使用
spaces/<spaceId>或users/<userId>作為傳遞目標。 channels.googlechat.dangerouslyAllowNameMatching會重新啟用可變電子郵件主體比對(緊急相容模式)。
Slack
- Socket 模式需要同時有
botToken和appToken(預設帳戶環境後援為SLACK_BOT_TOKEN+SLACK_APP_TOKEN)。 - HTTP 模式需要
botToken加上signingSecret(位於根層級或各帳戶)。 socketMode會將 Slack SDK Socket Mode 傳輸調校傳遞至公開 Bolt 接收器 API。只在調查 ping/pong 逾時或過時 websocket 行為時使用。botToken、appToken、signingSecret和userToken接受明文 字串或 SecretRef 物件。- Slack 帳戶快照會公開每個認證的來源/狀態欄位,例如
botTokenSource、botTokenStatus、appTokenStatus,以及在 HTTP 模式中的signingSecretStatus。configured_unavailable表示帳戶是 透過 SecretRef 設定,但目前的命令/執行階段路徑無法 解析秘密值。 configWrites: false會封鎖由 Slack 發起的設定寫入。- 選用的
channels.slack.defaultAccount會在符合已設定帳戶 ID 時覆寫預設帳戶選取。 channels.slack.streaming.mode是標準 Slack 串流模式鍵。channels.slack.streaming.nativeTransport控制 Slack 的原生串流傳輸。舊版streamMode、布林streaming和nativeStreaming值會自動遷移。- 使用
user:<id>(DM)或channel:<id>作為傳遞目標。
off、own(預設)、all、allowlist(來自 reactionAllowlist)。
執行緒工作階段隔離: thread.historyScope 是每個執行緒(預設)或在頻道間共用。thread.inheritParent 會將父頻道逐字稿複製到新執行緒。
- Slack 原生串流加上 Slack 助理樣式的「is typing…」執行緒狀態需要回覆執行緒目標。頂層 DM 預設保持在執行緒外,因此會改用
typingReaction或一般傳遞,而不是執行緒樣式預覽。 typingReaction會在回覆執行時,對傳入的 Slack 訊息新增暫時反應,然後在完成時移除。使用 Slack emoji 短代碼,例如"hourglass_flowing_sand"。channels.slack.execApprovals:Slack 原生 exec 核准傳遞與核准者授權。結構描述與 Discord 相同:enabled(true/false/"auto")、approvers(Slack 使用者 ID)、agentFilter、sessionFilter和target("dm"、"channel"或"both")。
| 動作群組 | 預設 | 備註 |
|---|---|---|
| reactions | enabled | 反應 + 列出反應 |
| messages | enabled | 讀取/傳送/編輯/刪除 |
| pins | enabled | 釘選/取消釘選/列出 |
| memberInfo | enabled | 成員資訊 |
| emojiList | enabled | 自訂 emoji 清單 |
Mattermost
Mattermost 在目前的 OpenClaw 發行版本中作為內建 Plugin 隨附。較舊或 自訂建置可以透過openclaw plugins install @openclaw/mattermost 安裝目前的 npm 套件;如果 npm 回報
OpenClaw 擁有的套件已棄用,請使用內建 Plugin 或本機 checkout,
直到更新的 npm 套件發布。
oncall(在 @-提及時回應,預設)、onmessage(每則訊息)、onchar(以觸發前綴開頭的訊息)。
啟用 Mattermost 原生命令時:
commands.callbackPath必須是路徑(例如/api/channels/mattermost/command),不是完整 URL。commands.callbackUrl必須解析為 OpenClaw Gateway 端點,並且可由 Mattermost 伺服器連線。- 原生斜線回呼會使用 Mattermost 在斜線命令註冊期間傳回的每命令 token
進行驗證。如果註冊失敗或沒有命令啟用,
OpenClaw 會以
Unauthorized: invalid command token.拒絕回呼。 - 對於私人/tailnet/內部回呼主機,Mattermost 可能要求
ServiceSettings.AllowedUntrustedInternalConnections包含回呼主機/網域。 使用主機/網域值,而不是完整 URL。 channels.mattermost.configWrites:允許或拒絕由 Mattermost 發起的設定寫入。channels.mattermost.requireMention:在頻道回覆前要求@mention。channels.mattermost.groups.<channelId>.requireMention:每頻道提及門檻覆寫("*"作為預設)。- 選用的
channels.mattermost.defaultAccount會在符合已設定帳戶 ID 時覆寫預設帳戶選取。
Signal
off、own(預設)、all、allowlist(來自 reactionAllowlist)。
channels.signal.account:將 channel 啟動固定到特定的 Signal 帳號身分。channels.signal.configWrites:允許或拒絕由 Signal 發起的設定寫入。- 選用的
channels.signal.defaultAccount會在符合已設定的帳號 ID 時覆寫預設帳號選擇。
BlueBubbles
BlueBubbles 是建議的 iMessage 路徑(由 Plugin 支援,設定於channels.bluebubbles 下)。
- 此處涵蓋的核心 key 路徑:
channels.bluebubbles、channels.bluebubbles.dmPolicy。 - 選用的
channels.bluebubbles.defaultAccount會在符合已設定的帳號 ID 時覆寫預設帳號選擇。 - 含有
type: "acp"的頂層bindings[]項目可以將 BlueBubbles 對話綁定到持久性 ACP 工作階段。在match.peer.id中使用 BlueBubbles handle 或目標字串(chat_id:*、chat_guid:*、chat_identifier:*)。共用欄位語意:ACP 代理程式。 - 完整的 BlueBubbles channel 設定記載於 BlueBubbles。
iMessage
OpenClaw 會產生imsg rpc(透過 stdio 的 JSON-RPC)。不需要 daemon 或連接埠。
-
選用的
channels.imessage.defaultAccount會在符合已設定的帳號 ID 時覆寫預設帳號選擇。 - 需要對 Messages DB 具有完整磁碟存取權。
-
優先使用
chat_id:<id>目標。使用imsg chats --limit 20列出聊天。 -
cliPath可以指向 SSH 包裝器;設定remoteHost(host或user@host)以便透過 SCP 擷取附件。 -
attachmentRoots和remoteAttachmentRoots會限制傳入附件路徑(預設:/Users/*/Library/Messages/Attachments)。 -
SCP 使用嚴格的主機金鑰檢查,因此請確保中繼主機金鑰已存在於
~/.ssh/known_hosts。 -
channels.imessage.configWrites:允許或拒絕由 iMessage 發起的設定寫入。 -
含有
type: "acp"的頂層bindings[]項目可以將 iMessage 對話綁定到持久性 ACP 工作階段。在match.peer.id中使用正規化 handle 或明確聊天目標(chat_id:*、chat_guid:*、chat_identifier:*)。共用欄位語意:ACP 代理程式。
iMessage SSH 包裝器範例
iMessage SSH 包裝器範例
Matrix
Matrix 由 Plugin 支援,並設定於channels.matrix 下。
- Token 驗證使用
accessToken;密碼驗證使用userId+password。 channels.matrix.proxy會透過明確的 HTTP(S) proxy 路由 Matrix HTTP 流量。具名帳號可以用channels.matrix.accounts.<id>.proxy覆寫。channels.matrix.network.dangerouslyAllowPrivateNetwork允許私人/內部 homeserver。proxy與此網路選擇加入是彼此獨立的控制項。channels.matrix.defaultAccount會在多帳號設定中選取偏好的帳號。channels.matrix.autoJoin預設為off,因此受邀房間與新的 DM 樣式邀請會被忽略,直到你使用autoJoinAllowlist設定autoJoin: "allowlist",或設定autoJoin: "always"。channels.matrix.execApprovals:Matrix 原生 exec 核准遞送與核准者授權。enabled:true、false或"auto"(預設)。在自動模式中,當核准者可從approvers或commands.ownerAllowFrom解析時,exec 核准會啟用。approvers:允許核准 exec 要求的 Matrix 使用者 ID(例如@owner:example.org)。agentFilter:選用的代理程式 ID allowlist。省略即可轉送所有代理程式的核准。sessionFilter:選用的工作階段 key 模式(子字串或 regex)。target:要傳送核准提示的位置。"dm"(預設)、"channel"(來源房間)或"both"。- 每帳號覆寫:
channels.matrix.accounts.<id>.execApprovals。
channels.matrix.dm.sessionScope控制 Matrix DM 如何分組到工作階段:per-user(預設)依路由後的 peer 共用,而per-room會隔離每個 DM 房間。- Matrix 狀態探測與即時目錄查詢會使用與執行階段流量相同的 proxy 政策。
- 完整的 Matrix 設定、目標規則與設定範例記載於 Matrix。
Microsoft Teams
Microsoft Teams 由 Plugin 支援,並設定於channels.msteams 下。
- 此處涵蓋的核心 key 路徑:
channels.msteams、channels.msteams.configWrites。 - 完整 Teams 設定(憑證、webhook、DM/群組政策、每 team/每 channel 覆寫)記載於 Microsoft Teams。
IRC
IRC 由 Plugin 支援,並設定於channels.irc 下。
- 此處涵蓋的核心 key 路徑:
channels.irc、channels.irc.dmPolicy、channels.irc.configWrites、channels.irc.nickserv.*。 - 選用的
channels.irc.defaultAccount會在符合已設定的帳號 ID 時覆寫預設帳號選擇。 - 完整的 IRC channel 設定(host/port/TLS/channels/allowlists/提及閘控)記載於 IRC。
多帳號(所有 channel)
為每個 channel 執行多個帳號(每個都有自己的accountId):
- 省略
accountId時會使用default(CLI + 路由)。 - Env token 只套用至預設帳號。
- 基礎 channel 設定會套用至所有帳號,除非每帳號覆寫。
- 使用
bindings[].match.accountId將每個帳號路由到不同的代理程式。 - 如果你透過
openclaw channels add(或 channel onboarding)新增非預設帳號,而目前仍使用單帳號頂層 channel 設定,OpenClaw 會先將帳號範圍的頂層單帳號值提升到 channel 帳號對應表中,讓原始帳號繼續運作。大多數 channel 會將它們移入channels.<channel>.accounts.default;Matrix 則可以保留現有相符的具名/預設目標。 - 現有僅 channel 的綁定(沒有
accountId)會繼續符合預設帳號;帳號範圍的綁定仍為選用。 openclaw doctor --fix也會修復混合形狀,方式是將帳號範圍的頂層單帳號值移入為該 channel 選定的已提升帳號。大多數 channel 使用accounts.default;Matrix 則可以保留現有相符的具名/預設目標。
其他 Plugin channel
許多 Plugin channel 都設定為channels.<id>,並記載於各自專用的 channel 頁面中(例如 Feishu、Matrix、LINE、Nostr、Zalo、Nextcloud Talk、Synology Chat 和 Twitch)。
請參閱完整 channel 索引:Channels。
群組聊天提及閘控
群組訊息預設為需要提及(metadata 提及或安全的 regex 模式)。適用於 WhatsApp、Telegram、Discord、Google Chat 和 iMessage 群組聊天。 可見回覆會分開控制。群組/channel 房間預設為messages.groupChat.visibleReplies: "message_tool":OpenClaw 仍會處理該輪對話,但一般最終回覆會保持私密,而可見的房間輸出需要 message(action=send)。只有在你想要舊版行為,也就是一般回覆會發布回房間時,才設定 "automatic"。若要將相同的僅工具可見回覆行為也套用到直接聊天,請設定 messages.visibleReplies: "message_tool"。
提及類型:
- Metadata 提及:原生平台 @-mentions。在 WhatsApp self-chat 模式中會被忽略。
- 文字模式:
agents.list[].groupChat.mentionPatterns中的安全 regex 模式。無效模式與不安全的巢狀重複會被忽略。 - 提及閘控只會在可偵測時強制執行(原生提及或至少一個模式)。
messages.groupChat.historyLimit 會設定全域預設值。Channel 可以用 channels.<channel>.historyLimit(或每帳號)覆寫。設定為 0 可停用。
messages.visibleReplies 是全域來源輪次預設值;messages.groupChat.visibleReplies 會為群組/channel 來源輪次覆寫它。Channel allowlist 與提及閘控仍會決定是否處理該輪對話。
DM 歷史記錄限制
telegram、whatsapp、discord、slack、signal、imessage、msteams。
Self-chat 模式
在allowFrom 中包含你自己的號碼以啟用 self-chat 模式(忽略原生 @-mentions,只回應文字模式):
Commands(聊天命令處理)
指令詳細資料
指令詳細資料
- 此區塊會設定指令介面。若要查看目前內建與隨附的指令目錄,請參閱斜線指令。
- 此頁是設定鍵參考,不是完整的指令目錄。由頻道/Plugin 擁有的指令,例如 QQ Bot
/bot-ping/bot-help/bot-logs、LINE/card、裝置配對/pair、記憶/dreaming、電話控制/phone,以及 Talk/voice,會在各自的頻道/Plugin 頁面以及斜線指令中記錄。 - 文字指令必須是以
/開頭的獨立訊息。 native: "auto"會為 Discord/Telegram 開啟原生指令,並讓 Slack 保持關閉。nativeSkills: "auto"會為 Discord/Telegram 開啟原生 Skills 指令,並讓 Slack 保持關閉。- 可依頻道覆寫:
channels.discord.commands.native(布林值或"auto")。false會清除先前註冊的指令。 - 使用
channels.<provider>.commands.nativeSkills可依頻道覆寫原生 Skills 註冊。 channels.telegram.customCommands會新增額外的 Telegram Bot 選單項目。bash: true會為主機 shell 啟用! <cmd>。需要tools.elevated.enabled,且傳送者必須位於tools.elevated.allowFrom.<channel>。config: true會啟用/config(讀取/寫入openclaw.json)。對於 Gatewaychat.send用戶端,持久性/config set|unset寫入也需要operator.admin;唯讀/config show仍可供一般具寫入範圍的操作員用戶端使用。mcp: true會啟用/mcp,用於mcp.servers下由 OpenClaw 管理的 MCP 伺服器設定。plugins: true會啟用/plugins,用於 Plugin 探索、安裝,以及啟用/停用控制。channels.<provider>.configWrites會依頻道控管設定變更(預設值:true)。- 對於多帳號頻道,
channels.<provider>.accounts.<id>.configWrites也會控管以該帳號為目標的寫入(例如/allowlist --config --account <id>或/config set channels.<provider>.accounts.<id>...)。 restart: false會停用/restart和 Gateway 重新啟動工具動作。預設值:true。ownerAllowFrom是 owner-only 指令/工具的明確擁有者允許清單。它與allowFrom分開。ownerDisplay: "hash"會在系統提示中雜湊擁有者 ID。設定ownerDisplaySecret可控制雜湊。allowFrom是依提供者設定。設定後,它會是唯一授權來源(頻道允許清單/配對和useAccessGroups都會被忽略)。- 當未設定
allowFrom時,useAccessGroups: false允許指令略過存取群組政策。 - 指令文件對照: