Discord 设置#
Hermes Agent 以机器人形式与 Discord 集成,让你可以通过私信或服务器频道与 AI 助手对话。机 器人接收你的消息,通过 Hermes Agent 管道(包括工具调用、记忆和推理)进行处理,并实时响应。它支持文本、语音消息、文件附件和斜杠命令。在开始设置之前,先介绍大多数人最想了解的内容:Hermes 进入服务器后的行为方式。Hermes 的行为方式#
| 上下文 | 行为 |
|---|
| 私信(DM) | Hermes 响应每条消息,无需 @提及。每个私信有独立的会话。 |
| 服务器频道 | 默认情况下,Hermes 仅在被 @提及 时响应。如果你在频道中发帖但未提及它,Hermes 会忽略该消息。 |
| 自由响应频道 | 你可以通过 DISCORD_FREE_RESPONSE_CHANNELS 将特定频道设为无需提及,或通过 DISCORD_REQUIRE_MENTION=false 全局禁用提及要求。这些频道中的消息会直接回复——自动创建线程功能会被跳过,使频道保持轻量级聊天状态。 |
| 线程(Thread) | Hermes 在同一线程中回复。提及规则仍然适用,除非该线程或其父频道被配置为自由响应。线程的会话历史与父频道相互隔离。 |
| 多用户共享频道 | 默认情况下,Hermes 为安全和清晰起见,在频道内按用户隔离会话历史。在同一频道中交谈的两个人不会共享同一份对话记录,除非你明确禁用该功能。 |
| 提及其他用户的消息 | 当 DISCORD_IGNORE_NO_MENTION 为 true(默认值)时,如果消息 @提及了其他用户但未提及机器人,Hermes 保持沉默。这可防止机器人介入针对其他人的对话。如果你希望机器人响应所有消息而不管提及了谁,请设置为 false。此设置仅适用于服务器频道,不适用于私信。 |
如果你想要一个普通的机器人帮助频道,让用户无需每次都 @标记就能与 Hermes 对话,请将该频道添加到 DISCORD_FREE_RESPONSE_CHANNELS。
Discord Gateway(网关)模型#
Hermes 在 Discord 上不是无状态回复的 webhook(网络钩子)。它通过完整的消息网关运行,这意味着每条传入消息都会经过:1.
授权验证(DISCORD_ALLOWED_USERS)
5.
正常的 Hermes agent 执行,包括工具、记忆和斜杠命令
这一点很重要,因为在繁忙服务器中的行为取决于 Discord 路由和 Hermes 会话策略 两者。Discord 中的会话模型#
因此,如果 Alice 和 Bob 都在 #research 中与 Hermes 对话,即使他们使用的是同一个可见的 Discord 频道,Hermes 默认也会将其视为独立的对话。仅当你明确希望整个房间共享一个对话时,才将其设置为 false:一个人正在进行的运行可能会中断同一房间中另一个人的后续操作
中断与并发#
Hermes 按会话键跟踪正在运行的 agent。使用默认的 group_sessions_per_user: true 时:Alice 中断自己正在进行的请求只影响她在该频道中的会话
Bob 可以继续在同一频道中交谈,不会继承 Alice 的历史记录或中断 Alice 的运行
使用 group_sessions_per_user: false 时:整个房间共享该频道/线程的一个正在运行的 agent 槽位
本指南将引导你完成完整的设置流程——从在 Discord 开发者门户创建机器人到发送第一条消息。第一步:创建 Discord 应用#
3.
输入应用名称(例如"Hermes Agent")并接受开发者服务条款。
你将进入 General Information 页面。记下 Application ID——稍后构建邀请 URL 时需要用到。第二步:创建机器人#
2.
Discord 会自动为你的应用创建一个机器人用户。你会看到机器人的用户名,可以自定义。
3.
将 Public Bot 设置为 ON——使用 Discord 提供的邀请链接时需要此设置(推荐)。这允许 Installation 标签页生成默认授权 URL。
将 Require OAuth2 Code Grant 保持为 OFF。
你可以在此页面为机器人设置自定义头像和横幅,这是用户在 Discord 中看到的样子。
如果你希望保持机器人私有(Public Bot = OFF),则必须在第五步中使用手动 URL 方法,而不是 Installation 标签页。Discord 提供的链接需要启用 Public Bot。
第三步:启用特权网关 Intent(意图)#
这是整个设置过程中最关键的步骤。如果没有启用正确的 intent,你的机器人将连接到 Discord,但无法读取消息内容。在 Bot 页面,向下滚动到 Privileged Gateway Intents。你会看到三个开关:| Intent | 用途 | 是否必需? |
|---|
| Presence Intent | 查看用户在线/离线状态 | 可选 |
| Server Members Intent | 访问成员列表、解析用户名 | 必需 |
| Message Content Intent | 读取消息的文本内容 | 必需 |
将 Server Members Intent 和 Message Content Intent 都切换为 ON。没有 Message Content Intent,你的机器人会收到消息事件,但消息文本为空——机器人实际上看不到你输入的内容。
没有 Server Members Intent,机器人无法解析允许用户列表中的用户名,可能无法识别是谁在发消息。
如果你的机器人在线但从不响应消息,Message Content Intent 几乎可以肯定是被禁用了。返回 开发者门户,选择你的应用 → Bot → Privileged Gateway Intents,确保 Message Content Intent 已切换为 ON。点击 Save Changes。 如果你的机器人在少于 100 个服务器中,可以自由切换 intent。
如果你的机器人在 100 个或更多服务器中,Discord 要求你提交验证申请才能使用特权 intent。对于个人使用,这不是问题。