☰
OpenClaw 实战 #03-1:接入 Slack 从 0 配到能用(新手不踩坑版)
2026/9/28 16:36:27 网站建设 项目流程

1. 先把场景说清楚:为什么 Slack 接入最容易卡在“看起来配完了”

OpenClaw 接入 Slack 这件事,真正让人头疼的不是代码,而是配置链路太长:Slack App 后台要开 Socket Mode、要拿两种 Token、要配 Event Subscriptions、要开 App Home、要加 Bot Scopes,回到本地还要在config.toml里把 Token 填对、把 Gateway 跑起来、把 pairing 授权走完。任何一步漏掉,表现都是“Slack 里 @ 了没反应”,但报错信息又不会直接告诉你缺哪一项。

这篇是 OpenClaw 实战系列的第三篇,假设你已经完成前两步:OpenClaw 本地能跑、Web UI 能正常对话。接下来只做一件事——通过 Socket Mode 把 OpenClaw 接进 Slack,让它在频道里被 @ 时能回消息,私聊也能用。全程不需要公网 IP、不需要反向代理、不需要 Docker,Gateway 始终只在本机运行。

适合谁看:第一次给 OpenClaw 配 Slack 的新手、团队里想先把 Bot 跑通再谈权限的人、以及被xapp-和xoxb-两个 Token 搞混过的同学。照着配完,你会在 Slack 里看到 OpenClaw 真正回话。

2. 前置条件与 TaoToken 侧准备

在动 Slack 后台之前,先把本地和模型侧确认一遍。OpenClaw 的 Gateway 负责接收 Slack 事件、调用模型、把回复写回 Slack,所以模型通道必须先通。

先检查 Gateway 状态:

openclaw gateway status

期望输出里能看到running。如果没跑起来,先执行openclaw gateway start,再确认 Web UI 能正常对话。Web UI 不通的情况下配 Slack,等于在一条断掉的链子上找问题。

模型侧我这边用的是 TaoToken 的 API 通道,它兼容 OpenAI 风格的调用方式,OpenClaw 里配置 base URL 和 Key 就能用。如果你还没拿 Key,可以先去控制台创建:

  • 控制台入口:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
  • API Keys 管理:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite

API 地址统一用https://taotoken.net/api,注意这个地址不带任何查询参数。Key 创建后只显示一次,复制到本地配置文件里,别贴在聊天窗口或截图里。

注意:Slack 的xoxb-和xapp-是 Slack 平台自己签发的 Token,和模型 API Key 是两套完全独立的东西。前者管“Slack 能不能把消息送到 OpenClaw”,后者管“OpenClaw 能不能调用模型”。两个都缺一不可,但不要混在同一个配置项里。

3. 可复制配置:Slack App 权限清单与 config.toml 骨架

3.1 Slack App 后台要开的项

进入 https://api.slack.com/apps ,Create New App → From scratch,填 App Name 和 Workspace。创建后按下面顺序配:

Socket Mode:左侧 Socket Mode → 打开 Enable Socket Mode。开启时会让你生成一个 App-Level Token,Scope 选connections:write,生成的 Token 以xapp-开头。这个就是 Socket Mode 的握手凭证。

Event Subscriptions:左侧 Event Subscriptions → 打开 Enable Events → 在 Subscribe to bot events 里加两条:

app_mention message.im

app_mention管频道里 @ 机器人,message.im管私聊。加完点右下角 Save Changes,不点保存等于没配。

App Home:左侧 App Home → 勾选 Messages Tab 和 Allow users to send messages。不开这个,私聊入口不会出现。

OAuth & Permissions:左侧 OAuth & Permissions → Bot Token Scopes 加最小可用集:

Scope作用
app_mentions:read读取 @ 提及事件
chat:write以 Bot 身份发消息
channels:history读取公开频道消息
groups:history读取私有频道消息
im:history读取私聊消息
mpim:history读取多人私聊消息

加完后点 Install to Workspace 授权,拿到xoxb-开头的 Bot User OAuth Token。

3.2 config.toml 骨架

OpenClaw 的 Slack 配置可以走交互式openclaw configure,也可以直接写配置文件。下面这份骨架你可以对照自己的文件改,字段名以你本地版本为准:

[gateway] host = "127.0.0.1" port = 8787 [channels.slack] enabled = true mode = "socket" bot_token = "xoxb-你的BotToken" app_token = "xapp-你的AppLevelToken" app_name = "OpenClaw" [channels.slack.access] policy = "allowlist" allow_dms = true dm_pairing = true

几个关键点:mode = "socket"表示走 Socket Mode,不需要公网回调地址;policy = "allowlist"表示只有被邀请进频道的 Bot 才响应,这是新手最稳的选择;dm_pairing = true保留默认配对机制,陌生人私聊会先拿到配对码,需要你在本地批准。

模型侧配置单独一段,base URL 指向 TaoToken:

[model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "你的TaoTokenKey" model = "你的模型名"

改完配置后重载:

openclaw health

这个命令会重新读取配置并做一次健康检查。如果 Token 格式不对或字段缺失,这里通常会给出提示,比等到 Slack 里试错快得多。

4. 验证请求:从 Gateway 连通到 Slack 消息收发

配置写完不代表通了,按下面顺序逐层验证。

第一层,Gateway 是否在跑:

openclaw gateway status

第二层,Slack 通道是否被识别。执行openclaw health后,输出里应该能看到 slack 通道处于 enabled 状态。如果显示 disabled 或 missing token,回去检查bot_token和app_token是否都填了、有没有多余空格。

第三层,把 Bot 邀请进频道。在 Slack 频道里输入:

/invite @OpenClaw

因为策略是 allowlist,没被邀请的频道 Bot 不会响应。邀请后在频道里 @ 它:

@OpenClaw 你好,做个自我介绍

如果一切正常,Slack 里会先出现一条提示,告诉你消息已送达但当前用户未授权,并给出一个 pairing code,类似MANHPUBU。这是默认配对机制在工作,不是报错。

第四层,在运行 OpenClaw 的那台机器上批准配对:

openclaw pairing approve slack MANHPUBU

注意 code 区分大小写,必须和 Slack 里显示的一模一样。批准后再 @ 一次,就能收到 OpenClaw 的正常回复了。私聊同理,第一次私聊会走配对流程,批准后即可持续对话。

想单独验证模型通道是否正常,可以打开模型对话页面发一条测试消息:

https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite

如果模型对话正常但 Slack 没反应,问题基本在 Slack 配置或 Gateway 事件订阅上,不在模型侧。

5. 本篇常见错排查

Q1:Slack 里 @ 了完全没反应。先跑openclaw gateway status确认 Gateway 在运行;再确认 Bot 已被/invite进当前频道;然后回 Slack App 后台看 Event Subscriptions 是否真的点了 Save Changes。这三项占没反应问题的绝大多数。

Q2:提示 invalid_auth 或 token 相关错误。多半是xoxb-和xapp-填反了,或者复制时带了换行和空格。xapp-是 App-Level Token,只在 Socket Mode 握手时用;xoxb-是 Bot Token,用于发消息。两个字段不要互换。

Q3:私聊发消息后只收到配对码,没有回复。这是dm_pairing = true的正常行为。在运行 OpenClaw 的机器上执行openclaw pairing approve slack <code>即可。如果 code 输错会提示找不到,重新复制一次。

Q4:频道里能 @ 但私聊不行。检查 App Home 里的 Messages Tab 和 Allow users to send messages 是否都勾了,以及 Event Subscriptions 里有没有加message.im。缺任何一个,私聊都不会通。

Q5:改了 config.toml 但行为没变。配置不会自动热加载,改完要执行openclaw health重载。如果还不行,重启 Gateway 再试。

Q6:Web UI 和 Slack 能同时用吗。可以。Web UI、Slack、TUI 是并行的入口,消息都走同一个 Gateway,互不冲突。关掉本地终端窗口也不影响 Slack,只要 Gateway 进程还在后台运行。

6. 接下来怎么走:长期编码与 Agent 场景的接入建议

Slack 接通只是第一步。如果你打算把 OpenClaw 长期挂在团队里做编码助手或 Agent 入口,建议把模型通道也固定下来,避免每次换 Key 都改配置。TaoToken 的 Coding Plan 适合这种长期编码场景,接入文档里有 base URL、鉴权和常见客户端的配置示例:

  • Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
  • 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

如果你用的是 Claude Code 这类工具链,Anthropic 兼容接入的说明在这里:

https://taotoken.net/claudecode-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claudecode-anthropic&utm_campaign=rewrite

我自己的做法是:Slack 侧保持 allowlist + pairing 的默认安全策略,模型侧用固定的 API Key 和 base URL,配置写进config.toml后不再频繁改。这样团队里谁被邀请进频道、谁私聊需要批准,都有明确记录;模型调用走同一条通道,排查问题时只需要看 Gateway 日志和 Slack 后台两处。先把这条链路跑稳,再考虑上下文管理、Skills 扩展这些进阶玩法,顺序不会乱。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询