可透過 Slack app 整合用於 DM 和頻道,已可投入生產環境。預設模式為 Socket Mode;也支援 HTTP Request URLs。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.
配對
Slack DM 預設使用配對模式。
斜線命令
原生命令行為與命令目錄。
頻道疑難排解
跨頻道診斷與修復手冊。
選擇 Socket Mode 或 HTTP Request URLs
兩種傳輸方式都已可投入生產環境,並且在傳訊、斜線命令、App Home 和互動性方面達到功能一致。請依部署型態選擇,而不是依功能選擇。| 考量 | Socket Mode(預設) | HTTP Request URLs |
|---|---|---|
| 公開 Gateway URL | 不需要 | 需要(DNS、TLS、反向代理或通道) |
| 對外網路 | 必須能連線到 wss-primary.slack.com 的對外 WSS | 無對外 WS;僅限傳入 HTTPS |
| 需要的權杖 | Bot token (xoxb-...) + App-Level Token (xapp-...) 並具備 connections:write | Bot token (xoxb-...) + Signing Secret |
| 開發筆電 / 防火牆後方 | 可直接運作 | 需要公開通道(ngrok、Cloudflare Tunnel、Tailscale Funnel)或暫存環境 Gateway |
| 水平擴充 | 每個主機上的每個 app 一個 Socket Mode 工作階段;多個 Gateway 需要不同的 Slack app | 無狀態 POST 處理器;多個 Gateway 複本可在負載平衡器後方共用一個 app |
| 單一 Gateway 上多帳號 | 支援;每個帳號會開啟自己的 WS | 支援;每個帳號需要唯一的 webhookPath(預設 /slack/events),避免註冊互相衝突 |
| 斜線命令傳輸 | 透過 WS 連線傳遞;會忽略 slash_commands[].url | Slack POST 到 slash_commands[].url;此欄位是命令分派所必需 |
| 請求簽章 | 不使用(驗證使用 App-Level Token) | Slack 會為每個請求簽章;OpenClaw 使用 signingSecret 驗證 |
| 連線中斷復原 | Slack SDK 會自動重新連線;會套用 gateway 的 pong-timeout 傳輸調校 | 沒有會中斷的持久連線;重試由 Slack 依每個請求進行 |
選擇 Socket Mode 適用於單一 Gateway 主機、開發筆電,以及可對外連線到
*.slack.com 但無法接收傳入 HTTPS 的內部部署網路。選擇 HTTP Request URLs 適用於在負載平衡器後方執行多個 Gateway 複本、對外 WSS 被封鎖但允許傳入 HTTPS,或你已經在反向代理終止 Slack webhook 的情況。快速設定
- Socket Mode(預設)
- HTTP Request URLs
建立新的 Slack app
開啟 api.slack.com/apps → Create New App → From a manifest → 選擇你的工作區 → 貼上下方其中一個 manifest → Next → Create。Slack 建立 app 之後:
建議 符合內建 Slack plugin 的完整功能集:App Home、斜線命令、檔案、回應、釘選、群組 DM,以及 emoji/usergroup 讀取。當工作區政策限制範圍時,請選擇 最小;它涵蓋 DM、頻道/群組歷史紀錄、提及和斜線命令,但不包含檔案、回應、釘選、群組 DM (
mpim:*)、emoji:read 和 usergroups:read。請參閱 Manifest 與範圍檢查清單,了解每個範圍的理由,以及額外斜線命令等可加選項。- Basic Information → App-Level Tokens → Generate Token and Scopes:新增
connections:write,儲存,複製xapp-...值。 - Install App → Install to Workspace:複製
xoxb-...Bot User OAuth Token。
Socket Mode 傳輸調校
OpenClaw 預設會將 Socket Mode 的 Slack SDK 用戶端 pong 逾時設為 15 秒。只有在需要針對工作區或主機進行特定調校時,才覆寫傳輸設定:clientPingTimeout 是 SDK 傳送用戶端 ping 後等待 pong 的時間;serverPingTimeout 是等待 Slack 伺服器 ping 的時間。應用程式訊息與事件仍是應用程式狀態,而不是傳輸存活訊號。
清單與 scope 檢查清單
基本 Slack 應用程式清單對 Socket Mode 和 HTTP Request URLs 相同。只有settings 區塊(以及斜線指令的 url)不同。
基本清單(Socket Mode 預設):
settings,並將 url 加到每個斜線指令。需要公開 URL:
其他清單設定
公開可擴充上述預設值的不同功能。 預設清單會啟用 Slack App Home 的 首頁 分頁,並訂閱app_home_opened。當工作區成員開啟首頁分頁時,OpenClaw 會使用 views.publish 發佈安全的預設首頁檢視;不會包含對話 payload 或私有設定。訊息 分頁仍會為 Slack DM 啟用。
Optional native slash commands
Optional native slash commands
選用的作者身分範圍(寫入操作)
選用的作者身分範圍(寫入操作)
如果你希望傳出訊息使用作用中的代理身分(自訂使用者名稱與圖示),而不是預設 Slack 應用程式身分,請加入
chat:write.customize bot 範圍。如果使用 emoji 圖示,Slack 會要求使用 :emoji_name: 語法。選用的使用者權杖範圍(讀取操作)
選用的使用者權杖範圍(讀取操作)
如果你設定
channels.slack.userToken,典型的讀取範圍為:channels:history,groups:history,im:history,mpim:historychannels:read,groups:read,im:read,mpim:readusers:readreactions:readpins:reademoji:readsearch:read(如果你依賴 Slack 搜尋讀取)
權杖模型
- Socket Mode 需要
botToken+appToken。 - HTTP 模式需要
botToken+signingSecret。 botToken、appToken、signingSecret和userToken接受純文字 字串或 SecretRef 物件。- 設定權杖會覆寫 env 後援。
SLACK_BOT_TOKEN/SLACK_APP_TOKENenv 後援只適用於預設帳戶。userToken(xoxp-...) 僅能透過設定指定(沒有 env 後援),且預設為唯讀行為(userTokenReadOnly: true)。
- Slack 帳戶檢查會追蹤每個憑證的
*Source和*Status欄位(botToken、appToken、signingSecret、userToken)。 - 狀態為
available、configured_unavailable或missing。 configured_unavailable表示帳戶是透過 SecretRef 或其他非內嵌密鑰來源設定,但目前的命令/執行階段路徑 無法解析實際值。- 在 HTTP 模式中,會包含
signingSecretStatus;在 Socket Mode 中, 必要配對是botTokenStatus+appTokenStatus。
動作與門檻
Slack 動作由channels.slack.actions.* 控制。
目前 Slack 工具中可用的動作群組:
| 群組 | 預設值 |
|---|---|
| messages | 已啟用 |
| reactions | 已啟用 |
| pins | 已啟用 |
| memberInfo | 已啟用 |
| emojiList | 已啟用 |
send、upload-file、download-file、read、edit、delete、pin、unpin、list-pins、member-info 和 emoji-list。download-file 接受入站檔案佔位符中顯示的 Slack 檔案 ID,並針對圖片傳回圖片預覽,或針對其他檔案類型傳回本機檔案中繼資料。
存取控制與路由
- DM 政策
- 頻道政策
- 提及與頻道使用者
channels.slack.dmPolicy 控制 DM 存取。channels.slack.allowFrom 是標準 DM 允許清單。pairing(預設)allowlistopen(需要channels.slack.allowFrom包含"*")disabled
dm.enabled(預設 true)channels.slack.allowFromdm.allowFrom(舊版)dm.groupEnabled(群組 DM 預設 false)dm.groupChannels(選用 MPIM 允許清單)
channels.slack.accounts.default.allowFrom只適用於default帳戶。- 命名帳戶在自身
allowFrom未設定時,會繼承channels.slack.allowFrom。 - 命名帳戶不會繼承
channels.slack.accounts.default.allowFrom。
channels.slack.dm.policy 和 channels.slack.dm.allowFrom 仍會讀取。openclaw doctor --fix 可在不變更存取權的情況下,將它們遷移到 dmPolicy 和 allowFrom。DM 中的配對使用 openclaw pairing approve slack <code>。討論串、工作階段與回覆標籤
- DM 以
direct路由;頻道以channel路由;MPIM 以group路由。 - Slack 路由繫結接受原始對等 ID,以及 Slack 目標形式,例如
channel:C12345678、user:U12345678和<@U12345678>。 - 使用預設
session.dmScope=main時,Slack DM 會收斂到代理主要工作階段。 - 頻道工作階段:
agent:<agentId>:slack:channel:<channelId>。 - 適用時,討論串回覆可以建立討論串工作階段後綴(
:thread:<threadTs>)。 - 在 OpenClaw 可處理頂層訊息且不需要明確提及的頻道中,非
off的replyToMode會將每個已處理根訊息路由到agent:<agentId>:slack:channel:<channelId>:thread:<rootTs>,讓可見的 Slack 討論串從第一輪開始就對應到一個 OpenClaw 工作階段。 channels.slack.thread.historyScope預設為thread;thread.inheritParent預設為false。channels.slack.thread.initialHistoryLimit控制新討論串工作階段啟動時要擷取多少既有討論串訊息(預設20;設為0可停用)。channels.slack.thread.requireExplicitMention(預設false):當為true時,會抑制隱含的討論串提及,因此 bot 只會回應討論串內明確的@bot提及,即使 bot 已參與該討論串也一樣。若未設定此項,bot 已參與的討論串中的回覆會繞過requireMention門檻。
channels.slack.replyToMode:off|first|all|batched(預設off)channels.slack.replyToModeByChatType: 依direct|group|channel個別設定- 直接聊天的舊版後援:
channels.slack.dm.replyToMode
[[reply_to_current]][[reply_to:<id>]]
message 工具明確傳送 Slack 討論串回覆,請搭配 action: "send" 與 threadId 或 replyTo 設定 replyBroadcast: true,以要求 Slack 也將討論串回覆廣播到父頻道。這會對應到 Slack 的 chat.postMessage reply_broadcast 旗標,且只支援文字或 Block Kit 傳送,不支援媒體上傳。
當 message 工具呼叫在 Slack 討論串內執行且目標是同一個頻道時,OpenClaw 通常會依照 replyToMode 繼承目前的 Slack 討論串。若要強制建立新的父頻道訊息,請在 action: "send" 或 action: "upload-file" 上設定 topLevel: true。threadId: null 也會被接受為相同的頂層退出選項。
replyToMode="off" 會停用 Slack 中所有回覆討論串,包括明確的 [[reply_to_*]] 標籤。這不同於 Telegram,後者在 "off" 模式下仍會遵循明確標籤。Slack 討論串會將訊息從頻道中隱藏,而 Telegram 回覆會維持在行內可見。確認 reaction
ackReaction 會在 OpenClaw 處理入站訊息時傳送確認 emoji。
解析順序:
channels.slack.accounts.<accountId>.ackReactionchannels.slack.ackReactionmessages.ackReaction- 代理身分 emoji 後援(
agents.list[].identity.emoji,否則為 ”👀”)
- Slack 需要 shortcode(例如
"eyes")。 - 使用
""可停用 Slack 帳戶或全域的 reaction。
文字串流
channels.slack.streaming 控制即時預覽行為:
off:停用即時預覽串流。partial(預設):以最新的部分輸出取代預覽文字。block:附加分塊的預覽更新。progress:產生時顯示進度狀態文字,然後傳送最終文字。streaming.preview.toolProgress:當草稿預覽啟用時,將工具/進度更新路由到同一則已編輯的預覽訊息中(預設:true)。設為false可保留獨立的工具/進度訊息。streaming.preview.commandText/streaming.progress.commandText:設為status可在隱藏原始命令/exec 文字的同時保留精簡的工具進度行(預設:raw)。
channels.slack.streaming.nativeTransport 會在 channels.slack.streaming.mode 為 partial 時控制 Slack 原生文字串流(預設:true)。
- 必須有可用的回覆對話串,原生文字串流和 Slack 助理對話串狀態才會出現。對話串選擇仍遵循
replyToMode。 - 頻道、群組聊天和頂層 DM 根,在原生串流不可用或沒有回覆對話串時,仍可使用一般草稿預覽。
- 頂層 Slack DM 預設保持不進入對話串,因此不會顯示 Slack 對話串樣式的原生串流/狀態預覽;OpenClaw 會改為在 DM 中發布並編輯草稿預覽。
- 媒體和非文字 payload 會退回一般傳遞。
- 媒體/錯誤最終回覆會取消待處理的預覽編輯;符合條件的文字/block 最終回覆只有在能就地編輯預覽時才會 flush。
- 如果串流在回覆中途失敗,OpenClaw 會對剩餘 payload 退回一般傳遞。
channels.slack.streamMode(replace | status_final | append) 是channels.slack.streaming.mode的舊版執行階段別名。- boolean
channels.slack.streaming是channels.slack.streaming.mode和channels.slack.streaming.nativeTransport的舊版執行階段別名。 - 舊版
channels.slack.nativeStreaming是channels.slack.streaming.nativeTransport的執行階段別名。 - 執行
openclaw doctor --fix,將持久化的 Slack 串流設定重寫為標準鍵。
輸入中反應後援
typingReaction 會在 OpenClaw 處理回覆時,對傳入的 Slack 訊息加入臨時反應,然後在執行結束時移除。這在對話串回覆之外最有用,因為對話串回覆會使用預設的「is typing…」狀態指示器。
解析順序:
channels.slack.accounts.<accountId>.typingReactionchannels.slack.typingReaction
- Slack 預期使用 shortcode(例如
"hourglass_flowing_sand")。 - 反應採 best-effort;回覆或失敗路徑完成後,會自動嘗試清理。
媒體、分塊與傳遞
傳入附件
傳入附件
Slack 檔案附件會從 Slack 託管的私有 URL 下載(token-authenticated request flow),並在擷取成功且大小限制允許時寫入媒體儲存區。檔案 placeholder 會包含 Slack
fileId,讓代理可以使用 download-file 擷取原始檔案。下載使用有界的閒置與總逾時。如果 Slack 檔案擷取停滯或失敗,OpenClaw 會繼續處理訊息,並退回使用檔案 placeholder。執行階段傳入大小上限預設為 20MB,除非由 channels.slack.mediaMaxMb 覆寫。傳出文字與檔案
傳出文字與檔案
- 文字分塊使用
channels.slack.textChunkLimit(預設 4000) channels.slack.chunkMode="newline"啟用段落優先切分- 檔案傳送使用 Slack upload API,且可包含對話串回覆(
thread_ts) - 設定時,傳出媒體上限遵循
channels.slack.mediaMaxMb;否則頻道傳送會使用媒體 pipeline 的 MIME 類型預設值
傳遞目標
傳遞目標
建議使用明確目標:
user:<id>用於 DMchannel:<id>用於頻道
命令與斜線行為
斜線命令在 Slack 中會呈現為單一設定的命令或多個原生命令。設定channels.slack.slashCommand 以變更命令預設值:
enabled: falsename: "openclaw"sessionPrefix: "slack:slash"ephemeral: true
channels.slack.commands.native: true 啟用,或在全域設定中使用 commands.native: true 啟用。
- Slack 的原生命令自動模式為關閉,因此
commands.native: "auto"不會啟用 Slack 原生命令。
- 最多 5 個選項:button blocks
- 6-100 個選項:static select menu
- 超過 100 個選項:當 interactivity options handler 可用時,使用 external select 搭配 async option filtering
- 超過 Slack 限制:編碼後的選項值會退回 buttons
agent:<agentId>:slack:slash:<userId> 這樣的隔離鍵,並仍會使用 CommandTargetSessionKey 將命令執行路由到目標對話 session。
互動式回覆
Slack 可以呈現代理撰寫的互動式回覆控制項,但此功能預設停用。 全域啟用:[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose a target | Canary:canary, Production:production]]
- 這是 Slack 專用 UI。其他頻道不會將 Slack Block Kit 指令轉譯成自己的按鈕系統。
- 互動回呼值是由 OpenClaw 產生的不透明權杖,不是代理程式撰寫的原始值。
- 如果產生的互動區塊會超過 Slack Block Kit 限制,OpenClaw 會退回原始文字回覆,而不是傳送無效的 blocks 酬載。
Slack 中的執行核准
Slack 可以作為具備互動按鈕與互動功能的原生核准用戶端,而不是退回 Web UI 或終端機。- 執行核准使用
channels.slack.execApprovals.*進行原生 DM/頻道路由。 - 當請求已經抵達 Slack,且核准 ID 類型為
plugin:時,Plugin 核准仍可透過同一個 Slack 原生按鈕介面完成。 - 仍會強制執行核准者授權:只有識別為核准者的使用者可以透過 Slack 核准或拒絕請求。
interactivity 時,核准提示會直接在對話中以 Block Kit 按鈕呈現。
當這些按鈕存在時,它們就是主要的核准 UX;OpenClaw
只有在工具結果表示聊天核准不可用,或手動核准是唯一途徑時,
才應包含手動 /approve 命令。
設定路徑:
channels.slack.execApprovals.enabledchannels.slack.execApprovals.approvers(選用;可行時會退回commands.ownerAllowFrom)channels.slack.execApprovals.target(dm|channel|both,預設:dm)agentFilter,sessionFilter
enabled 未設定或為 "auto",且至少解析出一位核准者時,Slack 會自動啟用原生執行核准。設定 enabled: false 可明確停用 Slack 作為原生核准用戶端。
設定 enabled: true 可在解析出核准者時強制開啟原生核准。
沒有明確 Slack 執行核准設定時的預設行為:
approvals.exec 轉送是獨立的。只有在執行核准提示也必須
路由到其他聊天或明確的頻外目標時才使用它。共用的 approvals.plugin 轉送也是
獨立的;當這些請求已經抵達 Slack 時,Slack 原生按鈕仍可完成 Plugin 核准。
同一聊天中的 /approve 也可在已支援命令的 Slack 頻道與 DM 中使用。完整的核准轉送模型請參閱執行核准。
事件與操作行為
- 訊息編輯/刪除會對應到系統事件。
- 執行緒廣播(「也傳送到頻道」的執行緒回覆)會作為一般使用者訊息處理。
- 新增/移除反應事件會對應到系統事件。
- 成員加入/離開、頻道建立/重新命名,以及釘選新增/移除事件會對應到系統事件。
- 啟用
configWrites時,channel_id_changed可以遷移頻道設定鍵。 - 頻道主題/用途中繼資料會被視為不受信任的內容,且可注入路由內容中。
- 適用時,執行緒起始訊息與初始執行緒歷史內容播種會依設定的傳送者允許清單篩選。
- 區塊動作與互動視窗互動會發出結構化的
Slack interaction: ...系統事件,並包含豐富的酬載欄位:- 區塊動作:選取的值、標籤、選擇器值,以及
workflow_*中繼資料 - 互動視窗
view_submission與view_closed事件,包含已路由的頻道中繼資料與表單輸入
- 區塊動作:選取的值、標籤、選擇器值,以及
設定參考
主要參考:設定參考 - Slack。高訊號 Slack 欄位
高訊號 Slack 欄位
- 模式/驗證:
mode,botToken,appToken,signingSecret,webhookPath,accounts.* - DM 存取:
dm.enabled,dmPolicy,allowFrom(舊版:dm.policy,dm.allowFrom),dm.groupEnabled,dm.groupChannels - 相容性切換:
dangerouslyAllowNameMatching(緊急破窗;除非需要,否則保持關閉) - 頻道存取:
groupPolicy,channels.*,channels.*.users,channels.*.requireMention - 執行緒/歷史:
replyToMode,replyToModeByChatType,thread.*,historyLimit,dmHistoryLimit,dms.*.historyLimit - 傳遞:
textChunkLimit,chunkMode,mediaMaxMb,streaming,streaming.nativeTransport,streaming.preview.toolProgress - 展開預覽:
unfurlLinks,unfurlMedia,用於chat.postMessage連結/媒體預覽控制 - 操作/功能:
configWrites,commands.native,slashCommand.*,actions.*,userToken,userTokenReadOnly
疑難排解
頻道中沒有回覆
頻道中沒有回覆
請依序檢查:
groupPolicy- 頻道允許清單(
channels.slack.channels)— 鍵必須是頻道 ID(C12345678),而不是名稱(#channel-name)。在groupPolicy: "allowlist"下,基於名稱的鍵會無聲失敗,因為頻道路由預設優先使用 ID。若要尋找 ID:在 Slack 中右鍵點選頻道 → Copy link — URL 結尾的C...值就是頻道 ID。 requireMention- 每個頻道的
users允許清單
DM 訊息被忽略
DM 訊息被忽略
檢查:
channels.slack.dm.enabledchannels.slack.dmPolicy(或舊版channels.slack.dm.policy)- 配對核准 / 允許清單項目
- Slack Assistant DM 事件:提到
drop message_changed的詳細日誌 通常表示 Slack 傳送了一個已編輯的 Assistant 執行緒事件,但訊息中繼資料中 沒有可復原的人類傳送者
Socket mode 未連線
Socket mode 未連線
請驗證 Slack 應用程式設定中的 bot + app 權杖,以及 Socket Mode 啟用狀態。如果
openclaw channels status --probe --json 顯示 botTokenStatus 或
appTokenStatus: "configured_unavailable",表示 Slack 帳戶已
設定,但目前執行階段無法解析由 SecretRef 支援的值。HTTP 模式未收到事件
HTTP 模式未收到事件
驗證:
- 簽署密鑰
- webhook 路徑
- Slack Request URLs(Events + Interactivity + Slash Commands)
- 每個 HTTP 帳戶使用唯一的
webhookPath
signingSecretStatus: "configured_unavailable",表示 HTTP 帳戶已設定,但目前執行階段無法解析由 SecretRef 支援的簽署密鑰。原生命令/slash commands 未觸發
原生命令/slash commands 未觸發
確認你原本想使用的是:
- 原生命令模式(
channels.slack.commands.native: true),並已在 Slack 中註冊相符的 slash commands - 或單一 slash command 模式(
channels.slack.slashCommand.enabled: true)
commands.useAccessGroups 與頻道/使用者允許清單。附件視覺參考
當 Slack 檔案下載成功且大小限制允許時,Slack 可以將下載的媒體附加到代理回合。影像檔可透過媒體理解路徑傳遞,或直接傳給支援視覺的回覆模型;其他檔案則會保留為可下載的檔案情境,而不是視為影像輸入。支援的媒體類型
| 媒體類型 | 來源 | 目前行為 | 備註 |
|---|---|---|---|
| JPEG / PNG / GIF / WebP 影像 | Slack 檔案 URL | 已下載並附加到該回合,以供支援視覺的處理使用 | 每個檔案上限:channels.slack.mediaMaxMb(預設 20 MB) |
| PDF 檔案 | Slack 檔案 URL | 已下載並公開為檔案情境,供 download-file 或 pdf 等工具使用 | Slack 入站不會自動將 PDF 轉換為影像視覺輸入 |
| 其他檔案 | Slack 檔案 URL | 可行時下載,並公開為檔案情境 | 二進位檔案不會被視為影像輸入 |
| 執行緒回覆 | 執行緒起始訊息檔案 | 當回覆沒有直接媒體時,可將根訊息檔案補入為情境 | 僅含檔案的起始訊息會使用附件預留位置 |
| 多影像訊息 | 多個 Slack 檔案 | 每個檔案會獨立評估 | Slack 處理每則訊息最多八個檔案 |
入站管線
當含有檔案附件的 Slack 訊息抵達時:- OpenClaw 會使用 Bot 權杖(
xoxb-...)從 Slack 的私有 URL 下載檔案。 - 檔案會在成功時寫入媒體儲存區。
- 下載的媒體路徑與內容類型會加入入站情境。
- 支援影像的模型/工具路徑可以使用該情境中的影像附件。
- 非影像檔案仍可作為檔案中繼資料或媒體參照,供能處理它們的工具使用。
執行緒根附件繼承
當訊息抵達執行緒中(具有thread_ts 父項):
- 如果回覆本身沒有直接媒體,而包含的根訊息有檔案,Slack 可以將根檔案補入為執行緒起始情境。
- 直接回覆附件優先於根訊息附件。
- 只有檔案且沒有文字的根訊息會以附件預留位置表示,因此後備處理仍可包含其檔案。
多附件處理
當單一 Slack 訊息包含多個檔案附件時:- 每個附件會透過媒體管線獨立處理。
- 下載的媒體參照會彙總到訊息情境中。
- 處理順序遵循事件承載中的 Slack 檔案順序。
- 某個附件下載失敗不會阻擋其他附件。
大小、下載與模型限制
- 大小上限:預設每個檔案 20 MB。可透過
channels.slack.mediaMaxMb設定。 - 下載失敗:Slack 無法提供的檔案、過期 URL、無法存取的檔案、過大的檔案,以及 Slack 驗證/登入 HTML 回應都會被略過,而不會回報為不支援的格式。
- 視覺模型:影像分析會在目前使用中的回覆模型支援視覺時使用該模型,或使用在
agents.defaults.imageModel設定的影像模型。
已知限制
| 情境 | 目前行為 | 替代方法 |
|---|---|---|
| 過期的 Slack 檔案 URL | 略過檔案;不顯示錯誤 | 在 Slack 中重新上傳檔案 |
| 未設定視覺模型 | 影像附件會儲存為媒體參照,但不會作為影像進行分析 | 設定 agents.defaults.imageModel,或使用支援視覺的回覆模型 |
| 非常大的影像(預設 > 20 MB) | 依大小上限略過 | 若 Slack 允許,增加 channels.slack.mediaMaxMb |
| 轉發/分享的附件 | 文字與 Slack 代管的影像/檔案媒體採最佳努力處理 | 直接在 OpenClaw 執行緒中重新分享 |
| PDF 附件 | 儲存為檔案/媒體情境,不會自動透過影像視覺路由 | 使用 download-file 取得檔案中繼資料,或使用 pdf 工具進行 PDF 分析 |
相關文件
相關
配對
將 Slack 使用者配對到 gateway。
群組
頻道與群組 DM 行為。
頻道路由
將入站訊息路由到代理。
安全性
威脅模型與強化。
設定
設定版面與優先順序。
Slash commands
命令目錄與行為。