Skip to content

hermes agent Slack 设置

使用套接字模式 (Socket Mode) 将 Hermes Agent 作为机器人连接到 Slack。套接字模式使用 WebSocket 代替公开的 HTTP 端点,因此您的 Hermes 实例不需要公开可访问 —— 它可以在防火墙后面、您的笔记本电脑上或私有服务器上正常工作。

组件
库 (Library)适用于 Python 的 slack-bolt / slack_sdk(套接字模式 / Socket Mode)
连接方式 (Connection)WebSocket —— 不需要公开的 URL
所需的认证令牌 (Auth tokens needed)机器人令牌 (Bot Token, xoxb-) + 应用级令牌 (App-Level Token, xapp-)
用户识别 (User identification)Slack 成员 ID(例如:U01ABC2DEF3

第 1 步:创建 Slack 应用 (Create a Slack App)

Section titled “第 1 步:创建 Slack 应用 (Create a Slack App)”

最快的方法是直接粘贴由 Hermes 为您生成的清单 (Manifest)。它会一次性声明每个内置的斜杠命令(/btw/stop/model……)、每个必需的 OAuth 作用域、每个事件订阅,并启用套接字模式 (Socket Mode)。

选项 A:从 Hermes 生成的清单创建(推荐)

Section titled “选项 A:从 Hermes 生成的清单创建(推荐)”
  1. 生成清单: hermes slack manifest --write 此操作会将清单写入 ~/.hermes/slack-manifest.json 并打印出粘贴说明。
  2. 前往 https://api.slack.com/apps → 点击 Create New App → 选择 From an app manifest
  3. 选择您的工作区,粘贴 JSON 内容,检查无误后点击 NextCreate
  4. 直接跳到 第 6 步:将应用安装到工作区。清单已经自动为您处理好了作用域、事件和斜杠命令。
  1. 前往 https://api.slack.com/apps
  2. 点击 Create New App
  3. 选择 From scratch
  4. 输入应用名称(例如 “Hermes Agent”)并选择您的工作区。
  5. 点击 Create App

您将进入该应用的 Basic Information 页面。请继续按照下方的第 2-6 步进行操作。

第 2 步:配置机器人令牌作用域

Section titled “第 2 步:配置机器人令牌作用域”

在侧边栏中导航至 Features → OAuth & Permissions。向下滚动到 Scopes → Bot Token Scopes 并添加以下作用域:

作用域 (Scope)用途 (Purpose)
chat:write以机器人身份发送消息
app_mentions:read检测何时在频道中被 @提及
channels:history读取机器人所在公开频道中的消息
channels:read列出并获取公开频道的信息
groups:history读取机器人被邀请加入的私有频道中的消息
im:history读取私信(纯私聊)的历史记录
im:read查看基础的私信信息
im:write开启并管理私信
users:read查找用户信息
files:read读取并下载附加的文件,包括语音留言/音频
files:write上传文件(图片、音频、文档)

可选作用域:

作用域 (Scope)用途 (Purpose)
groups:read列出并获取私有频道的信息

第 3 步:启用套接字模式 (Enable Socket Mode)

Section titled “第 3 步:启用套接字模式 (Enable Socket Mode)”

套接字模式允许机器人通过 WebSocket 进行连接,而不需要公开的 URL。

  1. 在侧边栏中,前往 Settings → Socket Mode
  2. Enable Socket Mode 切换为 ON(开启)。
  3. 系统会提示您创建一个应用级令牌 (App-Level Token)
    • 将其命名为类似于 hermes-socket 的名称(名称叫什么并不重要)。
    • 添加 connections:write 作用域。
    • 点击 Generate
  4. 复制该令牌 —— 它以 xapp- 开头。这就是您的 SLACK_APP_TOKEN

第 4 步:订阅事件 (Subscribe to Events)

Section titled “第 4 步:订阅事件 (Subscribe to Events)”

这一步至关重要 —— 它控制着机器人可以接收并看到哪些消息。

  1. 在侧边栏中,前往 Features → Event Subscriptions
  2. Enable Events 切换为 ON(开启)。
  3. 展开 Subscribe to bot events(订阅机器人事件)并添加以下事件:
事件 (Event)是否必要?用途 (Purpose)
message.im机器人接收私信(纯私聊)消息
message.channels机器人接收其已被加入的公开频道中的消息
message.groups推荐机器人接收其被邀请加入的私有频道中的消息
app_mention防止机器人在被 @提及 时触发 Bolt SDK 错误
  1. 点击页面底部的 Save Changes(保存更改)。

缺失事件订阅是排在第 1 位的设置故障

如果机器人可以在私信中正常工作,但 在频道中不起作用,您几乎可以肯定忘记了添加 message.channels(针对公开频道)和/或 message.groups(针对私有频道)。如果没有这些事件,Slack 根本就不会把频道消息投递给机器人。

第 5 步:启用消息标签页 (Enable the Messages Tab)

Section titled “第 5 步:启用消息标签页 (Enable the Messages Tab)”

这一步用来启用向机器人发送私信(DM)的功能。如果不启用此项,用户在尝试向机器人发送私信时会看到 “Sending messages to this app has been turned off”(向此应用发送消息功能已被关闭)的提示。

  1. 在侧边栏中,前往 Features → App Home
  2. 向下滚动到 Show Tabs(显示标签页)区域。
  3. Messages Tab 切换为 ON(开启)。
  4. 勾选 “Allow users to send Slash commands and messages from the messages tab”(允许用户从消息标签页发送斜杠命令和消息)。

不完成此步骤,私信功能将被完全阻断

即使您配置了所有正确的权限作用域(Scopes)和事件订阅(Event Subscriptions),只要不启用消息标签页,Slack 也不会允许用户向机器人发送私信。这是 Slack 平台的硬性要求,并非 Hermes 的配置问题。

第 6 步:将应用安装到工作区 (Install App to Workspace)

Section titled “第 6 步:将应用安装到工作区 (Install App to Workspace)”
  1. 在侧边栏中,前往 Settings → Install App
  2. 点击 Install to Workspace
  3. 检查权限列表,然后点击 Allow(允许)。
  4. 授权完成后,您将看到一个以 xoxb- 开头的 Bot User OAuth Token(机器人用户 OAuth 令牌)。
  5. 复制该令牌 —— 这就是您的 SLACK_BOT_TOKEN

第 7 步:获取允许列表所需的用户 ID (User IDs for the Allowlist)

Section titled “第 7 步:获取允许列表所需的用户 ID (User IDs for the Allowlist)”

Hermes 使用 Slack 成员 ID (Member IDs)(而非用户名或显示名称)来配置允许列表。

获取成员 ID 的方法如下:

  1. 在 Slack 中,点击该用户的名称或头像。
  2. 点击 View full profile(查看完整个人资料)。
  3. 点击 (更多)按钮。
  4. 选择 Copy member ID(复制成员 ID)。

成员 ID 的外观类似于 U01ABC2DEF3。您最少需要获取您自己的成员 ID。

第 8 步:配置 Hermes (Configure Hermes)

Section titled “第 8 步:配置 Hermes (Configure Hermes)”

将以下内容添加到您的 ~/.hermes/.env 文件中:

Terminal window
# 必要配置
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
SLACK_APP_TOKEN=xapp-your-app-token-here
SLACK_ALLOWED_USERS=U01ABC2DEF3 # 以英文逗号分隔的成员 ID 列表
# 可选配置
SLACK_HOME_CHANNEL=C01234567890 # 用于定时任务/计划消息的默认频道
SLACK_HOME_CHANNEL_NAME=general # 主频道的人类可读名称(可选)

或者运行交互式设置:

Terminal window
hermes gateway setup # 出现提示时选择 Slack

然后启动网关:

Terminal window
hermes gateway # 在前台运行
hermes gateway install # 安装为用户级服务
sudo hermes gateway install --system # 仅限 Linux:安装为开机自启的系统级服务

第 9 步:邀请机器人加入频道 (Invite the Bot to Channels)

Section titled “第 9 步:邀请机器人加入频道 (Invite the Bot to Channels)”

启动网关后,您需要将机器人 邀请 到您希望它做出回应的任何频道中:

/invite @Hermes Agent

机器人 不会 自动加入频道。您必须手动将它单独邀请到每个频道中。

-
0:000:00