跳转到主要内容

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 应用集成,已可用于生产环境中的私信和渠道。默认模式是 Socket Mode;也支持 HTTP 请求 URL。

配对

Slack 私信默认使用配对模式。

斜杠命令

原生命令行为和命令目录。

渠道故障排除

跨渠道诊断和修复操作手册。

快速设置

1

创建新的 Slack 应用

在 Slack 应用设置中点击 创建新应用 按钮:
  • 选择 从清单创建,并为你的应用选择一个工作区
  • 粘贴下方的 示例清单,然后继续创建
  • 生成具有 connections:write 权限的 应用级令牌xapp-...
  • 安装应用,并复制显示的 Bot 令牌xoxb-...
2

配置 OpenClaw

推荐的 SecretRef 设置:
export SLACK_APP_TOKEN=xapp-...
export SLACK_BOT_TOKEN=xoxb-...
cat > slack.socket.patch.json5 <<'JSON5'
{
  channels: {
    slack: {
      enabled: true,
      mode: "socket",
      appToken: { source: "env", provider: "default", id: "SLACK_APP_TOKEN" },
      botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" },
    },
  },
}
JSON5
openclaw config patch --file ./slack.socket.patch.json5 --dry-run
openclaw config patch --file ./slack.socket.patch.json5
环境变量回退(仅默认账号):
SLACK_APP_TOKEN=xapp-...
SLACK_BOT_TOKEN=xoxb-...
3

启动 Gateway 网关

openclaw gateway

Socket Mode 传输调优

对于 Socket Mode,OpenClaw 默认将 Slack SDK 客户端 pong 超时设为 15 秒。仅在需要针对工作区或主机进行特定调优时,才覆盖传输设置:
{
  channels: {
    slack: {
      mode: "socket",
      socketMode: {
        clientPingTimeout: 20000,
        serverPingTimeout: 30000,
        pingPongLoggingEnabled: false,
      },
    },
  },
}
仅当 Socket Mode 工作区记录 Slack WebSocket pong/server-ping 超时,或运行在已知存在事件循环饥饿问题的主机上时,才使用此配置。clientPingTimeout 是 SDK 发送客户端 ping 后等待 pong 的时间;serverPingTimeout 是等待 Slack 服务器 ping 的时间。应用消息和事件仍然是应用状态,而不是传输存活信号。

清单和作用域核对清单

Socket Mode 和 HTTP 请求 URL 使用相同的基础 Slack 应用清单。只有 settings 块(以及斜杠命令的 url)不同。 基础清单(Socket Mode 默认):
{
  "display_information": {
    "name": "OpenClaw",
    "description": "Slack connector for OpenClaw"
  },
  "features": {
    "bot_user": { "display_name": "OpenClaw", "always_online": true },
    "app_home": {
      "home_tab_enabled": true,
      "messages_tab_enabled": true,
      "messages_tab_read_only_enabled": false
    },
    "slash_commands": [
      {
        "command": "/openclaw",
        "description": "Send a message to OpenClaw",
        "should_escape": false
      }
    ]
  },
  "oauth_config": {
    "scopes": {
      "bot": [
        "app_mentions:read",
        "assistant:write",
        "channels:history",
        "channels:read",
        "chat:write",
        "commands",
        "emoji:read",
        "files:read",
        "files:write",
        "groups:history",
        "groups:read",
        "im:history",
        "im:read",
        "im:write",
        "mpim:history",
        "mpim:read",
        "mpim:write",
        "pins:read",
        "pins:write",
        "reactions:read",
        "reactions:write",
        "usergroups:read",
        "users:read"
      ]
    }
  },
  "settings": {
    "socket_mode_enabled": true,
    "event_subscriptions": {
      "bot_events": [
        "app_home_opened",
        "app_mention",
        "channel_rename",
        "member_joined_channel",
        "member_left_channel",
        "message.channels",
        "message.groups",
        "message.im",
        "message.mpim",
        "pin_added",
        "pin_removed",
        "reaction_added",
        "reaction_removed"
      ]
    }
  }
}
对于 HTTP 请求 URL 模式,将 settings 替换为 HTTP 变体,并为每个斜杠命令添加 url。需要公共 URL:
{
  "features": {
    "slash_commands": [
      {
        "command": "/openclaw",
        "description": "Send a message to OpenClaw",
        "should_escape": false,
        "url": "https://gateway-host.example.com/slack/events"
      }
    ]
  },
  "settings": {
    "event_subscriptions": {
      "request_url": "https://gateway-host.example.com/slack/events",
      "bot_events": [
        "app_home_opened",
        "app_mention",
        "channel_rename",
        "member_joined_channel",
        "member_left_channel",
        "message.channels",
        "message.groups",
        "message.im",
        "message.mpim",
        "pin_added",
        "pin_removed",
        "reaction_added",
        "reaction_removed"
      ]
    },
    "interactivity": {
      "is_enabled": true,
      "request_url": "https://gateway-host.example.com/slack/events",
      "message_menu_options_url": "https://gateway-host.example.com/slack/events"
    }
  }
}

其他清单设置

启用不同功能来扩展上述默认设置。 默认清单启用 Slack 应用首页的 首页 标签页,并订阅 app_home_opened。当工作区成员打开首页标签页时,OpenClaw 会通过 views.publish 发布一个安全的默认首页视图;其中不包含任何对话载荷或私有配置。消息 标签页仍为 Slack 私信启用。
如果你希望外发消息使用当前智能体身份(自定义用户名和图标),而不是默认 Slack 应用身份,请添加 chat:write.customize bot 作用域。如果你使用表情图标,Slack 需要 :emoji_name: 语法。
如果你配置了 channels.slack.userToken,典型读取作用域为:
  • channels:history, groups:history, im:history, mpim:history
  • channels:read, groups:read, im:read, mpim:read
  • users:read
  • reactions:read
  • pins:read
  • emoji:read
  • search:read(如果你依赖 Slack 搜索读取)

令牌模型

  • Socket Mode 需要 botToken + appToken
  • HTTP 模式需要 botToken + signingSecret
  • botTokenappTokensigningSecretuserToken 接受明文 字符串或 SecretRef 对象。
  • 配置令牌会覆盖环境变量回退。
  • SLACK_BOT_TOKEN / SLACK_APP_TOKEN 环境变量回退仅适用于默认账户。
  • userTokenxoxp-...)只能通过配置提供(没有环境变量回退),并默认采用只读行为(userTokenReadOnly: true)。
Status 快照行为:
  • Slack 账户检查会跟踪每个凭据的 *Source*Status 字段(botTokenappTokensigningSecretuserToken)。
  • Status 为 availableconfigured_unavailablemissing
  • configured_unavailable 表示账户通过 SecretRef 或其他非内联密钥来源进行了配置,但当前命令/运行时路径 无法解析实际值。
  • 在 HTTP 模式下,会包含 signingSecretStatus;在 Socket Mode 下, 必需组合为 botTokenStatus + appTokenStatus
对于操作/目录读取,配置后可以优先使用用户令牌。对于写入,仍优先使用 bot 令牌;只有当 userTokenReadOnly: false 且 bot 令牌不可用时,才允许用户令牌写入。

操作和门控

Slack 操作由 channels.slack.actions.* 控制。 当前 Slack 工具中可用的操作组:
默认值
messages启用
reactions启用
pins启用
memberInfo启用
emojiList启用
当前 Slack 消息操作包括 sendupload-filedownload-filereadeditdeletepinunpinlist-pinsmember-infoemoji-listdownload-file 接受入站文件占位符中显示的 Slack 文件 ID,并对图片返回图片预览,或对其他文件类型返回本地文件元数据。

访问控制和路由

channels.slack.dmPolicy 控制私信访问。channels.slack.allowFrom 是规范私信允许列表。
  • pairing(默认)
  • allowlist
  • open(要求 channels.slack.allowFrom 包含 "*"
  • disabled
私信标志:
  • dm.enabled(默认 true)
  • channels.slack.allowFrom
  • dm.allowFrom(旧版)
  • dm.groupEnabled(群组私信默认为 false)
  • dm.groupChannels(可选 MPIM 允许列表)
多账户优先级:
  • channels.slack.accounts.default.allowFrom 仅适用于 default 账户。
  • 命名账户在自己的 allowFrom 未设置时继承 channels.slack.allowFrom
  • 命名账户不会继承 channels.slack.accounts.default.allowFrom
为兼容性,旧版 channels.slack.dm.policychannels.slack.dm.allowFrom 仍会读取。openclaw doctor --fix 会在不改变访问权限的情况下,将它们迁移到 dmPolicyallowFrom私信中的配对使用 openclaw pairing approve slack <code>

线程、会话和回复标签

  • 私信路由为 direct;渠道路由为 channel;MPIM 路由为 group
  • Slack 路由绑定接受原始对端 ID,以及 channel:C12345678user:U12345678<@U12345678> 等 Slack 目标形式。
  • 使用默认 session.dmScope=main 时,Slack 私信会合并到智能体主会话。
  • 渠道会话:agent:<agentId>:slack:channel:<channelId>
  • 适用时,线程回复可以创建线程会话后缀(:thread:<threadTs>)。
  • channels.slack.thread.historyScope 默认值为 threadthread.inheritParent 默认值为 false
  • channels.slack.thread.initialHistoryLimit 控制新线程会话启动时获取多少条现有线程消息(默认 20;设为 0 可禁用)。
  • channels.slack.thread.requireExplicitMention(默认 false):当为 true 时,抑制隐式线程提及,使机器人只响应线程内显式的 @bot 提及,即使机器人已经参与过该线程。否则,机器人已参与线程中的回复会绕过 requireMention 门控。
回复线程控制项:
  • channels.slack.replyToModeoff|first|all|batched(默认 off
  • channels.slack.replyToModeByChatType:按 direct|group|channel 分别设置
  • 直接聊天的旧版回退:channels.slack.dm.replyToMode
支持手动回复标签:
  • [[reply_to_current]]
  • [[reply_to:<id>]]
replyToMode="off" 会禁用 Slack 中的所有回复线程,包括显式 [[reply_to_*]] 标签。这与 Telegram 不同,Telegram 在 "off" 模式下仍会遵循显式标签。Slack 线程会将消息从渠道中隐藏,而 Telegram 回复会以内联形式保持可见。

确认反应

ackReaction 会在 OpenClaw 处理入站消息时发送一个确认表情符号。 解析顺序:
  • channels.slack.accounts.<accountId>.ackReaction
  • channels.slack.ackReaction
  • messages.ackReaction
  • 智能体身份表情符号回退(agents.list[].identity.emoji,否则为 ”👀”)
注意事项:
  • Slack 期望使用短代码(例如 "eyes")。
  • 使用 "" 可为 Slack 账号或全局禁用该反应。

文本流式传输

channels.slack.streaming 控制实时预览行为:
  • off:禁用实时预览流式传输。
  • partial(默认):用最新的部分输出替换预览文本。
  • block:追加分块预览更新。
  • progress:生成时显示进度状态文本,然后发送最终文本。
  • streaming.preview.toolProgress:当草稿预览处于活动状态时,将工具/进度更新路由到同一条已编辑的预览消息中(默认:true)。设为 false 可保留单独的工具/进度消息。
  • streaming.preview.commandText / streaming.progress.commandText:设为 status 可隐藏原始命令/执行文本,同时保留紧凑的工具进度行(默认:raw)。
隐藏原始命令/执行文本,同时保留紧凑的进度行:
{
  "channels": {
    "slack": {
      "streaming": {
        "mode": "progress",
        "progress": {
          "toolProgress": true,
          "commandText": "status"
        }
      }
    }
  }
}
channels.slack.streaming.nativeTransportchannels.slack.streaming.modepartial 时控制 Slack 原生文本流式传输(默认:true)。
  • 必须有可用的回复线程,原生文本流式传输和 Slack 助手线程状态才会显示。线程选择仍遵循 replyToMode
  • 当原生流式传输不可用或不存在回复线程时,渠道、群聊和顶层私信根仍可使用普通草稿预览。
  • 顶层 Slack 私信默认保持在线程外,因此不会显示 Slack 线程样式的原生流/状态预览;OpenClaw 会改为在私信中发布并编辑草稿预览。
  • 媒体和非文本载荷会回退到普通投递。
  • 媒体/错误最终消息会取消待处理的预览编辑;符合条件的文本/分块最终消息仅在可以就地编辑预览时刷新。
  • 如果流式传输在回复中途失败,OpenClaw 会对剩余载荷回退到普通投递。
使用草稿预览,而不是 Slack 原生文本流式传输:
{
  channels: {
    slack: {
      streaming: {
        mode: "partial",
        nativeTransport: false,
      },
    },
  },
}
旧版键:
  • channels.slack.streamModereplace | status_final | append)会自动迁移到 channels.slack.streaming.mode
  • 布尔值 channels.slack.streaming 会自动迁移到 channels.slack.streaming.modechannels.slack.streaming.nativeTransport
  • 旧版 channels.slack.nativeStreaming 会自动迁移到 channels.slack.streaming.nativeTransport

输入反应回退

typingReaction 会在 OpenClaw 处理回复期间,为入站 Slack 消息添加一个临时表情回应,并在运行结束时移除它。这在线程回复之外最有用;线程回复会使用默认的“正在输入…”状态指示器。 解析顺序:
  • channels.slack.accounts.<accountId>.typingReaction
  • channels.slack.typingReaction
注意事项:
  • Slack 需要短代码(例如 "hourglass_flowing_sand")。
  • 该表情回应是尽力而为的,并且会在回复或失败路径完成后自动尝试清理。

媒体、分块和投递

Slack 文件附件会从 Slack 托管的私有 URL 下载(令牌认证请求流),并在获取成功且大小限制允许时写入媒体存储。文件占位符包含 Slack fileId,因此智能体可以使用 download-file 获取原始文件。下载使用有界空闲超时和总超时。如果 Slack 文件检索停滞或失败,OpenClaw 会继续处理消息,并回退到文件占位符。运行时入站大小上限默认为 20MB,除非被 channels.slack.mediaMaxMb 覆盖。
  • 文本分块使用 channels.slack.textChunkLimit(默认 4000)
  • channels.slack.chunkMode="newline" 启用优先按段落拆分
  • 文件发送使用 Slack 上传 API,并且可以包含线程回复(thread_ts
  • 配置后,出站媒体上限遵循 channels.slack.mediaMaxMb;否则渠道发送会使用媒体流水线中的 MIME 类型默认值
首选显式目标:
  • user:<id> 用于私信
  • channel:<id> 用于渠道
仅文本/区块的 Slack 私信可以直接发布到用户 ID;文件上传和线程发送会先通过 Slack conversation API 打开私信,因为这些路径需要具体的 conversation ID。

命令和斜杠行为

斜杠命令在 Slack 中可以表现为单个已配置命令,也可以表现为多个原生命令。配置 channels.slack.slashCommand 可更改命令默认值:
  • enabled: false
  • name: "openclaw"
  • sessionPrefix: "slack:slash"
  • ephemeral: true
/openclaw /help
原生命令需要在你的 Slack 应用中配置其他清单设置,并改用 channels.slack.commands.native: true 或全局配置中的 commands.native: true 启用。
  • Slack 的原生命令自动模式为关闭,因此 commands.native: "auto" 不会启用 Slack 原生命令。
/help
原生参数菜单使用自适应渲染策略,会在分派所选选项值前显示确认模态框:
  • 最多 5 个选项:按钮区块
  • 6-100 个选项:静态选择菜单
  • 超过 100 个选项:当交互选项处理器可用时,使用带异步选项过滤的外部选择
  • 超出 Slack 限制:编码后的选项值回退为按钮
/think
斜杠会话使用类似 agent:<agentId>:slack:slash:<userId> 的隔离键,并且仍使用 CommandTargetSessionKey 将命令执行路由到目标 conversation 会话。

交互式回复

Slack 可以渲染由智能体编写的交互式回复控件,但此功能默认禁用。 全局启用:
{
  channels: {
    slack: {
      capabilities: {
        interactiveReplies: true,
      },
    },
  },
}
或仅为一个 Slack 账户启用:
{
  channels: {
    slack: {
      accounts: {
        ops: {
          capabilities: {
            interactiveReplies: true,
          },
        },
      },
    },
  },
}
启用后,智能体可以发出仅适用于 Slack 的回复指令:
  • [[slack_buttons: Approve:approve, Reject:reject]]
  • [[slack_select: Choose a target | Canary:canary, Production:production]]
这些指令会编译为 Slack Block Kit,并通过现有 Slack 交互事件路径将点击或选择路由回来。 注意事项:
  • 这是 Slack 专属 UI。其他渠道不会将 Slack Block Kit 指令转换为自己的按钮系统。
  • 交互式回调值是 OpenClaw 生成的不透明令牌,而不是智能体编写的原始值。
  • 如果生成的交互区块会超出 Slack Block Kit 限制,OpenClaw 会回退为原始文本回复,而不是发送无效的 blocks 载荷。

Slack 中的执行审批

Slack 可以作为带有交互式按钮和交互的原生审批客户端,而不是回退到 Web 界面或终端。
  • 执行审批使用 channels.slack.execApprovals.* 进行原生私信/渠道路由。
  • 当请求已经落在 Slack 中且审批 ID 类型为 plugin: 时,插件审批仍可以通过同一个 Slack 原生按钮界面解析。
  • 审批者授权仍会强制执行:只有被识别为审批者的用户才能通过 Slack 批准或拒绝请求。
这使用与其他渠道相同的共享审批按钮界面。当你的 Slack 应用设置中启用 interactivity 时,审批提示会直接在 conversation 中渲染为 Block Kit 按钮。 当这些按钮存在时,它们是主要审批体验;只有在工具结果表明聊天审批不可用或手动审批是唯一路径时,OpenClaw 才应包含手动 /approve 命令。 配置路径:
  • channels.slack.execApprovals.enabled
  • channels.slack.execApprovals.approvers(可选;可能时回退到 commands.ownerAllowFrom
  • channels.slack.execApprovals.targetdm | channel | both,默认:dm
  • agentFiltersessionFilter
enabled 未设置或为 "auto" 且至少解析出一个审批者时,Slack 会自动启用原生执行审批。设置 enabled: false 可明确禁用 Slack 作为原生审批客户端。 设置 enabled: true 可在解析出审批者时强制启用原生审批。 没有显式 Slack 执行审批配置时的默认行为:
{
  commands: {
    ownerAllowFrom: ["slack:U12345678"],
  },
}
只有在你想覆盖审批者、添加过滤器或选择启用来源聊天投递时,才需要显式 Slack 原生配置:
{
  channels: {
    slack: {
      execApprovals: {
        enabled: true,
        approvers: ["U12345678"],
        target: "both",
      },
    },
  },
}
共享 approvals.exec 转发是独立的。只有在执行审批提示还必须路由到其他聊天或显式带外目标时才使用它。共享 approvals.plugin 转发也是独立的;当这些请求已经落在 Slack 中时,Slack 原生按钮仍可以解析插件审批。 同一聊天中的 /approve 也适用于已支持命令的 Slack 渠道和私信。请参阅执行审批,了解完整的审批转发模型。

事件和运行行为

  • 消息编辑/删除会映射为系统事件。
  • 线程广播(“同时发送到渠道”的线程回复)会作为普通用户消息处理。
  • 表情回应添加/移除事件会映射为系统事件。
  • 成员加入/离开、渠道创建/重命名以及置顶添加/移除事件会映射为系统事件。
  • 启用 configWrites 时,channel_id_changed 可以迁移渠道配置键。
  • 渠道主题/用途元数据会被视为不受信任的上下文,并可注入到路由上下文中。
  • 线程起始消息和初始线程历史上下文种子填充会在适用时按已配置的发送者允许列表过滤。
  • 区块操作和模态交互会发出结构化的 Slack interaction: ... 系统事件,并带有丰富的载荷字段:
    • 区块操作:所选值、标签、选择器值以及 workflow_* 元数据
    • 模态 view_submissionview_closed 事件,包含已路由的渠道元数据和表单输入

配置参考

主要参考:配置参考 - Slack
  • 模式/身份验证:modebotTokenappTokensigningSecretwebhookPathaccounts.*
  • 私信访问:dm.enableddmPolicyallowFrom(旧版:dm.policydm.allowFrom)、dm.groupEnableddm.groupChannels
  • 兼容性开关:dangerouslyAllowNameMatching(应急;除非需要,否则保持关闭)
  • 渠道访问:groupPolicychannels.*channels.*.userschannels.*.requireMention
  • 线程/历史:replyToModereplyToModeByChatTypethread.*historyLimitdmHistoryLimitdms.*.historyLimit
  • 投递:textChunkLimitchunkModemediaMaxMbstreamingstreaming.nativeTransportstreaming.preview.toolProgress
  • 运维/功能:configWritescommands.nativeslashCommand.*actions.*userTokenuserTokenReadOnly

故障排除

按顺序检查:
  • groupPolicy
  • 渠道允许列表(channels.slack.channels):键必须是渠道 IDC12345678),而不是名称(#channel-name)。在 groupPolicy: "allowlist" 下,基于名称的键会静默失败,因为默认情况下渠道路由会优先使用 ID。要查找 ID:在 Slack 中右键点击渠道 → 复制链接;URL 末尾的 C... 值就是渠道 ID。
  • requireMention
  • 每渠道 users 允许列表
常用命令:
openclaw channels status --probe
openclaw logs --follow
openclaw doctor
检查:
  • channels.slack.dm.enabled
  • channels.slack.dmPolicy(或旧版 channels.slack.dm.policy
  • 配对审批/允许列表条目
  • Slack Assistant 私信事件:提到 drop message_changed 的详细日志 通常表示 Slack 发送了一个已编辑的 Assistant 线程事件, 且消息元数据中没有可恢复的人类发送者
openclaw pairing list slack
在 Slack 应用设置中验证机器人和应用令牌,以及 Socket Mode 启用状态。如果 openclaw channels status --probe --json 显示 botTokenStatusappTokenStatus: "configured_unavailable",说明 Slack 账户已配置, 但当前运行时无法解析由 SecretRef 支持的值。
验证:
  • 签名密钥
  • webhook 路径
  • Slack 请求 URL(事件 + 交互性 + 斜杠命令)
  • 每个 HTTP 账户唯一的 webhookPath
如果账户快照中出现 signingSecretStatus: "configured_unavailable", 说明 HTTP 账户已配置,但当前运行时无法解析由 SecretRef 支持的签名密钥。
验证你的预期是:
  • 原生命令模式(channels.slack.commands.native: true),并在 Slack 中注册了匹配的斜杠命令
  • 或单斜杠命令模式(channels.slack.slashCommand.enabled: true
另请检查 commands.useAccessGroups 和渠道/用户允许列表。

附件视觉参考

当 Slack 文件下载成功且大小限制允许时,Slack 可以将下载的媒体附加到智能体回合。图像文件可以通过媒体理解路径传递,或直接传递给具备视觉能力的回复模型;其他文件会保留为可下载的文件上下文,而不是作为图像输入处理。

支持的媒体类型

媒体类型来源当前行为备注
JPEG / PNG / GIF / WebP 图像Slack 文件 URL已下载并附加到该轮次,以便支持视觉的处理单文件上限:channels.slack.mediaMaxMb(默认 20 MB)
PDF 文件Slack 文件 URL已下载并作为文件上下文暴露给 download-filepdf 等工具Slack 入站不会自动将 PDF 转换为图像视觉输入
其他文件Slack 文件 URL可行时下载并作为文件上下文暴露二进制文件不会被视为图像输入
线程回复线程起始消息文件当回复没有直接媒体时,根消息文件可以作为上下文补齐仅包含文件的起始消息使用附件占位符
多图像消息多个 Slack 文件每个文件都会独立评估Slack 处理限制为每条消息最多八个文件

入站流水线

当带有文件附件的 Slack 消息到达时:
  1. OpenClaw 使用机器人令牌(xoxb-...)从 Slack 的私有 URL 下载文件。
  2. 下载成功后,文件会写入媒体存储。
  3. 下载的媒体路径和内容类型会添加到入站上下文。
  4. 支持图像的模型/工具路径可以使用该上下文中的图像附件。
  5. 非图像文件仍会作为文件元数据或媒体引用,供能够处理它们的工具使用。

线程根附件继承

当消息到达某个线程中(具有 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 网关配对。

群组

渠道和群组私信行为。

渠道路由

将入站消息路由到智能体。

安全

威胁模型和加固。

配置

配置布局和优先级。

斜杠命令

命令目录和行为。