<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Discord on 火炬树</title>
        <link>https://torchtree.com/tags/discord/</link>
        <description>Recent content in Discord on 火炬树</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>TorchTree Co., Ltd.</copyright>
        <lastBuildDate>Mon, 13 Apr 2026 10:12:01 +0800</lastBuildDate><atom:link href="https://torchtree.com/tags/discord/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Hermes Agent Discord 配置与会话隔离完全指南</title>
        <link>https://torchtree.com/post/hermes-agent-discord-setup-session-isolation/</link>
        <pubDate>Mon, 13 Apr 2026 10:12:01 +0800</pubDate>
        
        <guid>https://torchtree.com/post/hermes-agent-discord-setup-session-isolation/</guid>
        <description>&lt;p&gt;Hermes Agent 作为功能完备的 AI 助手平台，支持通过 Discord Bot 形式接入服务器。本文基于实际部署经验，系统梳理从 Bot 创建到会话隔离配置的完整流程，并解答部署过程中可能遇到的典型问题。&lt;/p&gt;
&lt;h2 id=&#34;一discord-bot-创建与基础配置&#34;&gt;一、Discord Bot 创建与基础配置
&lt;/h2&gt;&lt;h3 id=&#34;1-创建-discord-application&#34;&gt;1. 创建 Discord Application
&lt;/h3&gt;&lt;p&gt;访问 &lt;a class=&#34;link&#34; href=&#34;https://discord.com/developers/applications&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord Developer Portal&lt;/a&gt;，点击 &lt;strong&gt;New Application&lt;/strong&gt;，填写应用名称后进入管理界面。在 General Information 页面记录 &lt;strong&gt;Application ID&lt;/strong&gt;，后续生成邀请链接时需要用到。&lt;/p&gt;
&lt;h3 id=&#34;2-配置-bot-与关键权限&#34;&gt;2. 配置 Bot 与关键权限
&lt;/h3&gt;&lt;p&gt;进入左侧 &lt;strong&gt;Bot&lt;/strong&gt; 标签页，此处需要完成三项关键设置：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bot 身份设置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Public Bot：建议保持 ON，以便使用 Discord 提供的标准邀请链接&lt;/li&gt;
&lt;li&gt;可在此页面上传 Bot 头像和横幅&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Token 获取&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;点击 Reset Token 生成 Bot Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;该 Token 仅显示一次&lt;/strong&gt;，务必妥善保存，后续写入 Hermes 的 &lt;code&gt;.env&lt;/code&gt; 文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Privileged Gateway Intents（关键步骤）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;页面下方找到 Privileged Gateway Intents 区域，&lt;strong&gt;必须开启以下两项&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Intent&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;是否必须&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Server Members Intent&lt;/td&gt;
          &lt;td&gt;访问成员列表、解析用户名&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Message Content Intent&lt;/td&gt;
          &lt;td&gt;读取消息文本内容&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;是&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：Message Content Intent 是 Bot 能够正常响应的前提。若未开启，Bot 虽能在线并接收事件，但无法获取消息文字内容，表现为&amp;quot;在线但不回复&amp;quot;。&lt;/p&gt;
&lt;h3 id=&#34;3-生成邀请链接并授权&#34;&gt;3. 生成邀请链接并授权
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;方式一：Installation 标签页（推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左侧进入 Installation → 开启 Guild Install&lt;/li&gt;
&lt;li&gt;Install Link 选择 Discord Provided Link&lt;/li&gt;
&lt;li&gt;Scopes 勾选 &lt;code&gt;bot&lt;/code&gt; 和 &lt;code&gt;applications.commands&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Permissions 选择：View Channels、Send Messages、Read Message History、Embed Links、Attach Files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方式二：手动构造 URL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将 YOUR_APP_ID 替换为 Application ID，访问该链接选择服务器完成授权。&lt;/p&gt;
&lt;h2 id=&#34;二hermes-环境配置&#34;&gt;二、Hermes 环境配置
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;~/.hermes/.env&lt;/code&gt; 文件中添加：&lt;/p&gt;
&lt;p&gt;获取 User ID 的方式：Discord 设置 → Advanced → 开启 Developer Mode，右键点击自己的用户名选择 Copy User ID。&lt;/p&gt;
&lt;p&gt;启动 Gateway：&lt;/p&gt;
&lt;p&gt;可选环境变量：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;变量&lt;/th&gt;
          &lt;th&gt;默认值&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_REQUIRE_MENTION&lt;/td&gt;
          &lt;td&gt;true&lt;/td&gt;
          &lt;td&gt;频道中是否需要 @Bot 才响应&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_AUTO_THREAD&lt;/td&gt;
          &lt;td&gt;true&lt;/td&gt;
          &lt;td&gt;@mention 时自动创建 Thread（推荐保持开启）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_FREE_RESPONSE_CHANNELS&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;无需 @mention 即可响应的频道 ID&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DISCORD_IGNORED_CHANNELS&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;Bot 完全不理会的频道黑名单&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;三会话隔离机制详解&#34;&gt;三、会话隔离机制详解
&lt;/h2&gt;&lt;p&gt;Hermes 通过 &lt;code&gt;session_key&lt;/code&gt; 区分不同会话，Discord 场景下的默认行为如下：&lt;/p&gt;
&lt;h3 id=&#34;1-dm私聊-天然隔离&#34;&gt;1. DM（私聊）— 天然隔离
&lt;/h3&gt;&lt;p&gt;每个 DM 对话拥有独立的 &lt;code&gt;session_key&lt;/code&gt;，无需 @mention，所有消息自动归入同一会话。&lt;/p&gt;
&lt;h3 id=&#34;2-服务器频道--默认按用户隔离&#34;&gt;2. 服务器频道 — 默认按用户隔离
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;config.yaml&lt;/code&gt; 中的全局设置控制此行为：&lt;/p&gt;
&lt;p&gt;当该值为 &lt;code&gt;true&lt;/code&gt; 时：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alice 在 #research 频道 @Bot，Bot 为她维护独立会话&lt;/li&gt;
&lt;li&gt;Bob 在同一频道 @Bot，Bot 为他维护&lt;strong&gt;完全不同的独立会话&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;两人互不共享上下文、Token 消耗、运行状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若设为 &lt;code&gt;false&lt;/code&gt;，整个频道共享一个会话。&lt;/p&gt;
&lt;h3 id=&#34;3-thread子区线程-核心隔离手段&#34;&gt;3. Thread（子区/线程）— 核心隔离手段
&lt;/h3&gt;&lt;p&gt;Discord Thread 是 Hermes 实现会话隔离的关键机制：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thread 与父频道隔离&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thread 的 &lt;code&gt;session_key&lt;/code&gt; 包含 &lt;code&gt;thread_id&lt;/code&gt;，因此 Thread 内对话与父频道完全隔离&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Thread 内默认共享&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;thread_sessions_per_user&lt;/code&gt; 默认为 &lt;code&gt;false&lt;/code&gt;，同一 Thread 内的所有用户共享一个会话（适合协作场景）&lt;/li&gt;
&lt;li&gt;若需 Thread 内也按用户隔离，设置 &lt;code&gt;thread_sessions_per_user: true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自动创建 Thread（强烈推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DISCORD_AUTO_THREAD&lt;/code&gt; 默认为 &lt;code&gt;true&lt;/code&gt;，其工作机制：&lt;/p&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次 @mention = 一个新的 Thread = 一个全新的隔离会话&lt;/li&gt;
&lt;li&gt;Thread 内后续回复无需再次 @mention&lt;/li&gt;
&lt;li&gt;不同任务天然处于不同会话，完全避免上下文污染&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;四问题排查频道-mention-无响应&#34;&gt;四、问题排查：频道 @mention 无响应
&lt;/h2&gt;&lt;p&gt;若 DM 可正常工作但频道 @mention 无响应，按以下顺序排查：&lt;/p&gt;
&lt;h3 id=&#34;1-检查-message-content-intent最常见原因&#34;&gt;1. 检查 Message Content Intent（最常见原因）
&lt;/h3&gt;&lt;p&gt;进入 Discord Developer Portal → 你的 Application → Bot → Privileged Gateway Intents，确认 &lt;strong&gt;Message Content Intent 已开启&lt;/strong&gt;，点击 Save Changes。&lt;/p&gt;
&lt;h3 id=&#34;2-检查-bot-频道权限&#34;&gt;2. 检查 Bot 频道权限
&lt;/h3&gt;&lt;p&gt;在 Discord 中，右键频道 → Edit Channel → Permissions，确认 Bot 角色拥有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View Channels&lt;/li&gt;
&lt;li&gt;Read Message History&lt;/li&gt;
&lt;li&gt;Send Messages&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-检查环境配置&#34;&gt;3. 检查环境配置
&lt;/h3&gt;&lt;h3 id=&#34;4-终极解决方案重新授权&#34;&gt;4. 终极解决方案：重新授权
&lt;/h3&gt;&lt;p&gt;若确认以上设置均正确但仍无法响应，尝试：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将 Bot 踢出服务器&lt;/li&gt;
&lt;li&gt;使用新的邀请链接重新授权（确保权限整数包含所需权限）&lt;/li&gt;
&lt;li&gt;重新启动 hermes gateway&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;实际部署经验表明，重新授权往往能解决问题，可能是 Discord 端权限缓存未刷新导致。&lt;/p&gt;
&lt;h2 id=&#34;五最佳实践配置&#34;&gt;五、最佳实践配置
&lt;/h2&gt;&lt;p&gt;推荐配置实现&lt;strong&gt;最大化隔离&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;~/.hermes/.env&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;~/.hermes/config.yaml&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;此配置下的交互体验：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 #general @Bot &amp;ldquo;帮我写 Python 脚本&amp;rdquo; → Bot 自动创建 Thread A，任务在隔离环境运行&lt;/li&gt;
&lt;li&gt;再次 @Bot &amp;ldquo;分析这份文档&amp;rdquo; → Bot 创建 Thread B，又是一个全新会话&lt;/li&gt;
&lt;li&gt;同事也在 #general @Bot → 获得独立的 Thread C，互不干扰&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六会话管理命令&#34;&gt;六、会话管理命令
&lt;/h2&gt;&lt;p&gt;在任意对话中可使用以下命令：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;/reset&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;重置当前会话，开启全新空会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;/title 任务名称&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;为当前会话命名，便于后续查找&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;/sethome&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;将当前频道设为 Home Channel，用于接收定时任务输出&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;隔离层级&lt;/th&gt;
          &lt;th&gt;默认行为&lt;/th&gt;
          &lt;th&gt;控制方式&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DM vs 频道&lt;/td&gt;
          &lt;td&gt;完全隔离&lt;/td&gt;
          &lt;td&gt;天然&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;不同用户同频道&lt;/td&gt;
          &lt;td&gt;按用户隔离&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;group_sessions_per_user: true&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;不同 Thread&lt;/td&gt;
          &lt;td&gt;完全隔离&lt;/td&gt;
          &lt;td&gt;天然（&lt;!-- raw HTML omitted --&gt;thread_id&lt;!-- raw HTML omitted --&gt; 参与 session key）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;同 Thread 不同用户&lt;/td&gt;
          &lt;td&gt;共享会话&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;thread_sessions_per_user: true&lt;!-- raw HTML omitted --&gt; 可开启隔离&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;同用户同频道不同任务&lt;/td&gt;
          &lt;td&gt;共享会话&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;依靠 &lt;!-- raw HTML omitted --&gt;DISCORD_AUTO_THREAD=true&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt; 自动开 Thread&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;保持 &lt;code&gt;DISCORD_AUTO_THREAD=true&lt;/code&gt;（默认开启）是最简单有效的防污染手段，让每次 @mention 都落入全新 Thread 会话中，从根本上避免同一频道内多任务互相干扰。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
