接入 Discord
通过 Discord 的服务器频道或私信向 Ghast 发送任务,并在 Discord 收到回复。连接由你电脑上的 Ghast Desktop 运行:使用时需要保持客户端运行、登录和联网。
打开 设置 → 渠道 → Discord。你不需要自己编写机器人程序,也不需要另外部署一个服务。
开始前准备
准备好:
- 一个 Discord 应用及其机器人 Token,以及把机器人安装到测试服务器的权限;
- 一个在 Ghast 中可用的模型——先完成 Provider 配置,在本地 Chat 成功发送一次消息;
- 一个范围较小、不含敏感资料的工作区,用于文件类任务;
- 允许机器人接收消息的服务器 ID 和频道 ID。
Ghast 的 Discord 服务器和频道白名单只检查服务器消息,不拦截私信。当前页面没有“允许的用户”或“关闭私信”设置。不要把它理解为只有你本人才能使用的电脑遥控器。如果无法接受机器人实际可接触的用户范围,请保持停用。
1. 准备 Discord 应用
- 打开 Discord Developer Portal,创建或选择你的应用。
- 进入 Bot,取得 bot token,粘贴到 Ghast 的 Bot Token。不要填写 Application ID、Public Key、OAuth Client Secret 或个人 Discord Token。截图、共享屏幕时保持 Token 遮蔽。
- 在应用的 Bot → Privileged Gateway Intents 中启用 MESSAGE CONTENT INTENT。Ghast 的普通消息对话需要读取消息内容;当前连接不要求 Server Members Intent。
- 将机器人安装到测试服务器。使用应用的服务器安装链接,或按照 Ghast 配置指引 中的 OAuth2 → URL Generator 路径,选择
botscope。 - 为测试频道授予 View Channels、Send Messages、Read Message History、Attach Files 和 Add Reactions。不要为了省事直接给 Administrator;还要检查频道自身的权限覆盖。
Discord 的 应用设置教程 说明了 Token 和安装流程。Ghast 已经提供运行机器人所需的程序;教程中的示例程序、自建 Web 服务和 HTTP 交互地址不是接入 Ghast 的前置条件。
重置已有 Token 会让旧 Token 失效。更换后也要更新 Ghast 并保存;输入框仍显示圆点,不代表 Discord 仍然接受这个 Token。
2. 添加服务器与频道白名单
在 Discord 打开 User Settings → Advanced → Developer Mode。右键服务器,选择 Copy Server ID;右键目标频道,选择 Copy Channel ID。具体入口见 Discord 的 ID 获取说明。
在 Ghast 的 访问控制 中:
- 将一个服务器 ID 粘贴到 允许的服务器 ID 输入框。
- 点击 添加,或按 Enter。确认输入框下方出现该 ID 的标签。
- 用相同方式逐个添加 允许的频道 ID。
- 填错时点击标签旁的 × 移除。
- 模型、工作区和回复规则准备好之前,保持机器人停用。
只输入 ID 不算添加成功,必须看到它出现在列表里。多个 ID 分开添加,不要粘贴逗号分隔的整串内容。输入框不会查询名称,也不会验证 Discord 是否认识该 ID。相同 ID 不会重复添加。
| 服务器列表 | 频道列表 | 哪些服务器消息能通过 |
|---|---|---|
| 都为空 | 都为空 | 机器人能够访问的任意服务器频道消息 |
| 已填写 | 为空 | 列出的服务器内,机器人可访问的任意频道 |
| 为空 | 已填写 | 任意可访问服务器中,列出的频道 |
| 已填写 | 已填写 | 所属服务器和消息所在频道必须同时在列表中 |
白名单不会授予 Discord 权限,也不限制私信。“允许一个服务器”不是“只允许某个人”:能在允许频道发言的其他成员也可能调用 Ghast。
Discord 帖子/线程有自己的频道 ID。允许父频道不会自动匹配其中线程的消息。需要使用线程时,添加实际线程 ID;需要指定工作区时,也为该 ID 单独绑定。

3. 选择何时回复
开启 仅提及时响应,可以减少对普通服务器聊天的回复。它并不是严格的“只有带 @Bot 的消息才处理”。
| 收到的消息 | 实际行为 |
|---|---|
| 发给机器人的私信 | 不需要提及即可进入 Ghast |
| 服务器中 @ 机器人的消息 | 通过服务器/频道检查后进入 Ghast |
| 回复机器人发送的消息 | 也会触发 Ghast |
文本中包含 ghast,不区分大小写 | 也会触发;不要求是真正的 Discord @ 提及 |
以 ! 或 / 开头的消息 | 进入命令处理 |
| 开关打开时的普通服务器文本 | 不启动普通消息的回复判断 |
| 开关关闭时的普通服务器文本 | 可以交给模型判断是否值得回复;关闭开关不代表每条消息都会获得回复 |
回复判断本身会调用模型,即使最后没有完整回复,也可能产生用量。没有可用的判断模型,或判断请求失败时,普通未提及聊天会保持安静;上表中的明确触发方式不依赖这一判断。
Ghast 忽略自己发出的消息,但并不会统一排除所有其他机器人。其他机器人的消息也可能触发它;避免多个机器人互相回复形成循环。
服务器/频道过滤之后,Ghast 会先处理附件、记录最近服务器聊天,再判断是否回复。未提及的消息因此可能作为后续任务的上下文。音频也可能在提及判断之前被下载和转录;成功的转录即使在此开关打开时,也可能进入回复判断。
不能用这个开关阻止敏感内容被本地保存或交给模型处理。应限制机器人实际能访问的频道。发送音频前请阅读 Discord 语音输入,包括哪些情况下音频会发送给 OpenAI。
4. 选择模型
在 Discord 机器人区域选择 默认模型,然后保存。
明确设置的 Discord 默认模型会优先用于后续 Discord 任务,包括已有映射会话。未设置时,已有会话可以继续使用其保存的模型,新会话使用 Chat 默认模型。留空并不是让普通回复改用后台模型。
如果选择器没有可用模型,返回 Provider 与模型设置,检查 Provider 是否启用、凭据是否有效,或插件连接是否已认证。机器人 Token 只负责连接 Discord,不提供模型访问权、推理余额或免费模型。
5. 绑定工作区
在 工作区绑定 中:
- 选择已识别的频道,或手动输入频道 ID。已知频道的选择器中也有手动输入入口。
- 选择工作区。
- 点击 添加,确认列表中出现
频道 → 工作区。 - 所有设置准备好后,点击 保存。
没有同时选择频道 ID 和工作区时,添加不可用。临时工作区不会出现在选择器中;找不到目标目录时,先通过 工作区 将它添加/打开,再返回此处。
已保存的频道绑定优先于 通用 → 默认工作区。没有有效绑定,也没有选定的有效默认工作区时,使用 Ghast 内置默认工作区。“自动”不代表当前正在客户端查看的项目。
移除绑定只会让频道重新使用回退工作区,不会阻止消息,也不会删除文件。要更换已有绑定,移除原行,再添加同一频道和新工作区,最后保存。Discord 的下一条入站任务也会把已有映射会话更新到当前解析出的工作区;请等运行中的任务结束再调整路由。
6. 保存、启用并测试
- 核对 Token、两种白名单、仅提及时响应、默认模型和工作区。
- 打开 启用 Discord 机器人,点击 保存。Token 为空时无法打开启用开关。
- 等待 Discord 标签上的状态更新。保存变更会重启 Discord 连接;保存成功不等于登录或消息送达成功。
- 在允许的测试频道 @ 机器人,发送:“只回复
discord-ready-47,不要使用工具。” - 在 Discord 中确认收到对应回复,不能只看 Ghast 内的生成结果。
- 如果计划使用私信,单独测试私信;它和服务器消息的访问控制不同。
- 使用不含敏感信息的示例,分别测试附件、线程回复和工作区读取。
编辑配置会出现 未保存的修改。切换平台标签不会应用修改。需要放弃时,关闭设置并确认不保存,再重新打开 Discord 核对已保存的值。关闭机器人同样需要 保存。
即使只改模型、列表或工作区绑定,保存 Discord 设置也会重启桥接连接。请在任务之间调整;不要假定运行中的生成及其外部送达能跨越重启继续完成。
命令与共享会话
直接发送以 ! 或 / 开头的普通消息。如果 Discord 弹出自身的斜杠命令选择器,可以改用 ! 形式。
无法识别的命令可能被当作普通任务文本交给 Agent,而不是直接拒绝。如果文字本身要求写入或执行外部动作,不要把它当成无副作用的命令试验。
| 命令 | 用途与影响范围 |
|---|---|
!help / !start | 显示机器人的简短命令说明 |
!model | 显示 Discord 默认模型,并打开 Provider/模型菜单 |
!new Meeting notes | 创建会话,可附带标题;需要建立个人新会话时,使用私信操作 |
!stop | 请求停止当前 Discord 频道中的一个运行任务 |
通过 Discord 菜单选模型,会修改整个 Discord 渠道共享的默认模型,不只是你的个人会话。该菜单不是仅供所有者使用的设置界面;能够操作菜单的人可能影响这个共享选择,应据此限制可接触范围。菜单最多显示 25 个 Provider,每个 Provider 最多显示 25 个已启用模型;其他选择请在桌面客户端完成。提示会话过期时,重新发送 !model。
同一服务器频道的不同发言者通常共用一个 Ghast 会话。如果会话仍在运行,新消息可能分支到另一会话,而不是排队等待之前的回复。不要把 !new 当成隐私隔离措施,也不要据此假定群聊历史已经清空。
!stop 按频道查找任务,不保证只停止发令者本人启动的任务,也不会撤销已完成的工具操作。重试写入或发送前,应先核对任务结果。
常见问题
| 现象 | 检查方式 |
|---|---|
| 启用开关不可用 | 先填写机器人 Token。选择模型不等于已连接 Discord。 |
| 显示已停用 | 已保存的启用开关处于关闭状态。完成配置后再启用并保存。 |
| 一直连接中、已停止或错误 | 保持 Ghast 运行,检查 Token、联网及应用的 Message Content Intent。保存后等待状态刷新。 |
| 服务器里没有回复 | 核对实际服务器和频道 ID、ID 是否已添加为标签并保存、频道权限,以及明确的 @Bot 触发。 |
| 父频道正常,线程没反应 | 在频道白名单中加入实际线程 ID,并检查机器人访问该线程的权限。 |
| 限制服务器后,私信仍能使用 | 当前行为如此:服务器和频道列表不拦截私信。 |
| 普通文字不触发 | 先明确 @ 机器人。仅提及时响应及回复判断都可能让普通消息保持安静。 |
| 提示 No model configured | 选择可用的 Discord 默认模型,保存后重试。 |
| 在 Discord 选模型后,其他会话模型也变了 | !model 修改共享默认值。再次修改前重新打开桌面设置,不要用旧草稿覆盖远端选择。 |
!new 提示创建成功,但服务器聊天仍继续旧会话 | 当前限制:命令创建的是发令者映射,普通服务器消息使用的却是频道共享映射。需要个人新会话时请在私信使用;不能把成功提示当成服务器共享上下文已清空。 |
| 使用了错误工作区 | 检查准确的频道/线程 ID 绑定、通用默认工作区,以及已保存工作区是否仍存在。 |
| 文本正常,图片/音频/文件异常 | 分别检查模型能力、附件下载、Attach Files 权限和语音的独立前置条件。 |
| Ghast 有回复,Discord 没有最终消息 | 生成与送达是两步。检查目标频道和机器人权限,不要盲目重复会产生外部影响的任务。 |
断开连接
关闭 启用 Discord 机器人并 保存。这会停止连接,但不会清除 Ghast 会话、本地媒体或已发送的 Discord 消息,也不会撤销 Token。不再使用时,还应在 Discord 将机器人移出服务器或撤销 Token。