← Hermes Agent 中文介绍

渠道接入

Hermes Agent 接入 Discord

把 Hermes Agent 接到 Discord 机器人上。本文讲怎么在 Discord Developer Portal 建应用、拿 Bot Token、开 Privileged Intents、生成 OAuth2 邀请链接、改 hermes 配置,以及为什么 Discord 的 dmPolicy 用 open 是安全的。

准备工作

  • 一个 Discord 账号 + 一个能管理的服务器(你想把机器人加到哪个 Server)
  • 已经在跑的 Hermes Agent(没跑起来先看 安装指南
  • 不需要公网 HTTPS:Discord Bot 默认走 WebSocket Gateway,Hermes 主动连

第一步:在 Discord Developer Portal 建应用

  1. 打开 discord.com/developers/applications,点 New Application。
  2. 填名字(这就是机器人显示名),创建。
  3. 左侧 Bot → Add Bot。这里能看到 Bot Token,点 Reset Token 复制下来,泄露了别人就能控制你的机器人。
  4. 记下 Application ID(左侧 General Information 里),生成邀请链接要用。

第二步:开 Privileged Intents

Bot 页面下方有三个 Privileged Gateway Intents 开关,必须勾上:

  • PRESENCE INTENT(看用户在线状态,可选)
  • SERVER MEMBERS INTENT(读群成员,建议开)
  • MESSAGE CONTENT INTENT(读消息内容,必须开,否则机器人收到的消息全是空内容)

不开 MESSAGE CONTENT INTENT 是 Discord 上接 AI 机器人最常踩的坑,机器人看着收到了消息但内容全空。

第三步:用环境变量启动 Hermes(最快)

docker run -d \
  -e OPENROUTER_API_KEY="sk-or-v1-..." \
  -e DISCORD_BOT_TOKEN="MTI..." \
  -p 8642:8642 \
  ghcr.io/nousresearch/hermes-agent:latest

第四步:用 hermes.json 精细控制

{
  "channels": {
    "discord": {
      "enabled": true,
      "botToken": "${DISCORD_BOT_TOKEN}",
      "dmPolicy": "open",
      "allowFrom": ["*"]
    }
  },
  "plugins": {
    "entries": {
      "discord": { "enabled": true }
    }
  }
}

dmPolicy:Discord 用 open + allowFrom: ["*"]

跟 Telegram 不一样,Discord 机器人是 invite-only:用户必须先把机器人邀请到自己的服务器,或者机器人主动加到一个共同服务器,才能私聊。陌生人不能搜到你的机器人然后随便发消息。所以 Discord 用 dmPolicy: "open" + allowFrom: ["*"] 是安全的。

如果你强行用 pairing,会出现一个糟糕的 UX:用户要先 DM 机器人拿配对码,然后跳到 Web 网关确认绑定,再回 Discord 私聊 —— Discord 用户根本不习惯这种流程,绝大多数人会卡住。

注意:dmPolicy: "open" 必须配 allowFrom,否则 Hermes 启动会报错:channels.discord.dmPolicy="open" requires channels.discord.allowFrom to include "*"

第五步:生成邀请链接,把机器人加到服务器

  1. 左侧 OAuth2 → URL Generator。
  2. SCOPES 勾 botapplications.commands
  3. BOT PERMISSIONS 至少勾:Read Messages/View Channels、Send Messages、Read Message History、Use Slash Commands、Embed Links、Attach Files。
  4. 底下生成的 URL 复制,在浏览器打开,选你管理的服务器,授权。
  5. 回到 Discord 服务器,机器人应该已经出现在成员列表里。

测试

  • 在服务器频道里 @ 机器人发消息:@MyBot 你好
  • 私聊机器人:直接发消息(dmPolicy=open 时无需配对)
  • docker logs hermes 确认消息进来了

常见报错

Used disallowed intents

没开 Privileged Intents。回 Developer Portal Bot 页面把三个开关勾上(最重要是 MESSAGE CONTENT INTENT),重启 Hermes。

机器人能收到消息但内容是空字符串

MESSAGE CONTENT INTENT 没开。Discord 在 2022 年改了策略,没拿到这个 intent 的机器人只能看到自己被 mention 的消息内容,其他全是空。

401 Unauthorized — Invalid Token

Token 错了或过期。Developer Portal Bot 页面 Reset Token 重新拿一个。注意 token 一旦在公开仓库出现,Discord 会自动撤销。

机器人在线但群里 @ 不回

  • plugins.entries.discord.enabled 没设 true
  • OPENROUTER_API_KEY 没传或额度耗尽
  • docker logs hermes 2>&1 | grep discord 找具体错误

Slash Commands 不出现

生成邀请链接时漏了 applications.commands scope。重新生成、重新邀请(或者用 Reauthorize 链接)。

多服务器场景

一个机器人 token 可以加到任意多个 Discord 服务器,Hermes 不需要每个 Server 都配一遍。allowFrom 想限制只在某些服务器可用,填 Discord Server ID(右键服务器 → 复制服务器 ID,需要先开开发者模式)。

托管版:OpenClaw Launch

Discord Developer Portal、Privileged Intents、OAuth2 邀请链接、Slash Command 注册、Token 撤销重发 —— 这些都搞清楚要时间。 OpenClaw Launch 托管版直接提供 Hermes Agent 的 Discord 渠道,在 Dashboard 填 Bot Token 就能跑。首月 $3,之后 $6/月。

下一步

一键接 Discord

OpenClaw Launch 托管版自动处理 Privileged Intents 和邀请链接。

立即部署