dsh-plugin-discord:在 Discord 里驱动 DeepSeek Harness 工作区会话

前言

DeepSeek Harness(dsh)的 agent 会话通常绑在桌面端或 dsh web 的某个 profile 里:改代码、跑工具、等审批,人得坐在电脑前。手机或外出时,常见做法是 SSH、远程桌面,或干脆把任务挂到下次开机——和「随时插话、随时停、随时批工具」的体验对不上。

下面介绍社区插件 dsh-plugin-discord(维护者 tjiisztiuv):把 Discord 当作远程控制台,通过 bot 与 Harness Host 同一套 API 对话,而不是再起一个独立网关进程。

这是什么

dsh-plugin-discord 是 dsh 的 bundle 插件,分类为客户端。装好并启用后,代码运行在 DeepSeek 桌面端(或 dsh web)的 Harness Host 进程内,调用与界面相同的 Host API(如 ctx.sessionController、ctx.workspaceRegistry)。

一句话:在 Discord 里与任意工作区会话聊天、接入桌面端正在用的会话、审批工具调用、回答模型提问、停止任务。

不需要额外守护进程,也不对外暴露端口:Discord bot 只做出站连接。

核心功能

与桌面端共用同一会话

  • 从 Discord 新建的会话是普通会话:会出现在桌面端侧边栏对应工作区下,使用当前默认模型、agent preset 与权限。
  • 桌面端已打开的会话可用 /attach(或 !attach)从 Discord 接入;两端任意一端输入,回复会同步到 Discord(可通过配置控制是否镜像桌面输入)。
  • 工具审批与模型 ask_user_question 会同时出现在 Discord 与桌面端;默认策略为 race——谁先答谁生效。Discord 先答时,桌面端审批框会自动收起。

Discord 侧映射

Discord Harness
私信(DM) 一个会话;/new 换新会话
文字频道 一个默认工作区(/use 选择);频道里发消息会自动开线程
线程 一个会话;标题生成后线程会自动改名

命令与日常操作

支持斜杠命令与 ! 前缀文本命令(全局斜杠命令注册后可能要等几分钟,期间可用文本命令)。常用包括:

斜杠命令 文本命令 作用
/ws !ws 列出工作区
/use workspace !use <名称/序号> 切换此处使用的工作区
/new [prompt] [workspace] !new [内容] 新建会话
/sessions [workspace] !sessions 最近会话
/attach session !attach <序号> 接入已有会话
/detach !detach 解绑(不删会话)
/stop !stop 停止当前任务
/steer text !steer <内容> 运行中插话引导
/status !status 查看绑定的工作区与会话

直接发消息即发给当前绑定的会话;无绑定时会在默认工作区新建(文字频道会自动开线程)。图片附件作为图片输入交给模型,其他附件以链接形式附在消息里。

模型提问时,Discord 会显示问题卡片(单选按钮、多选下拉、「其他…」「跳过」等);等待回答期间,频道里的普通消息也可当作回答。一个会话同一时间只绑定一个 Discord 位置;在别处 /attach 同一 session 时,原位置会收到转移提示。

可配置行为(节选)

在 profile 的 cordis.patch.yml 中覆盖 discord 插件配置,例如:

  • approvals / questions:race(双端竞速)或 desktop(仅桌面端)
  • toolCalls:compact(每轮一条可编辑的工具进度)或 off
  • showReasoning:是否以引用格式展示思考过程
  • allowedGuildIds / allowedChannelIds:可选服务器、频道白名单

完整字段见仓库 README 的配置表。

安装与启用

1. 创建 Discord Bot

  1. 打开 https://discord.com/developers/applications → New Application。
  2. 左侧 Bot → Reset Token,复制 token。
  3. 同页开启 Privileged Gateway Intents → MESSAGE CONTENT INTENT(否则读不到消息正文)。
  4. OAuth2 → URL Generator:Scopes 勾选 bot 与 applications.commands;Bot Permissions 勾选 View Channels、Send Messages、Create Public Threads、Send Messages in Threads、Manage Threads、Read Message History、Add Reactions、Attach Files。用生成链接把 bot 邀请进你的服务器。
  5. 获取你的 Discord 用户 ID:设置 → 高级 → 开发者模式 → 右键头像 → 复制用户 ID。

私信 bot 的前提是你与 bot 在同一服务器内。

2. 安装插件

方式 A(桌面端):侧边栏「插件」→ 安装 → 「插件包名」填 dsh-plugin-discord → 安装后「立即启用」。

方式 B(命令行,dsh web 或其他 profile):

dsh plugin --profile <profile> add dsh-plugin-discord

3. 配置 token

token 不写进 patch 文件,由 dsh 凭据系统读取,默认环境变量名 DISCORD_BOT_TOKEN。任选其一:

  • ~/.dsh/.env:DISCORD_BOT_TOKEN=xxxxx
  • 或 ~/.dsh/.credentials.yaml

若使用 .env:只在桌面端启动时读一次,修改后需彻底退出(如 Cmd+Q)再打开;仅在插件页重新启用读不到新值。变量名须与配置里的 tokenEnv 一致。

4. 填写 patch(必须)

默认 allowedUserIds 为空时 bot 不会上线(日志会有提示)。在 profile 的 cordis.patch.yml 中覆盖 discord 一行,桌面端示例路径为 ~/.dsh/profiles/desktop/cordis.patch.yml:

- id: discord
  config:
    tokenEnv: DISCORD_BOT_TOKEN
    allowedUserIds: ['123456789012345678']     # 你的 Discord 用户 ID
    stateFile: !!js dshHomePath('discord', 'state.json')
    defaultWorkspace: my-project                # 可选

patch 会整体替换该行的 config,需要的键都要写全。保存后,启用 HMR 的 profile 会自动重载;否则重启桌面端。

典型用法

  1. 在 Discord 私信 bot:/use 选好工作区,/new 或直发消息开始会话;桌面端侧边栏会出现同一会话。
  2. 桌面端已在跑的长任务:Discord 里 /sessions 找到序号,/attach 接入,在外出时用 /steer 插话或 /stop 停止。
  3. agent 请求执行工具:Discord 收到审批按钮,与桌面端谁先点谁生效;完全放行(full access)的 preset 下不会出现审批。
  4. 模型多选题:点按钮、用下拉,或直接回复序号/原文/任意文字;plan mode 下表示「批准」的选项为绿色按钮。

适用场景与注意

适合谁:已在用 dsh 桌面端或 dsh web、希望用手机或 Mac 上的 Discord 跟进同一工作区会话的开发者;需要在路上批工具、答模型提问、停任务,又不想另搭反向代理或暴露本机端口的人。

安全(务必阅读):

  • Discord 消息会直接驱动本机 agent 读写文件、执行命令,效果等同远程 shell。必须配置 allowedUserIds,并建议只把 bot 放在私人服务器;可选 allowedGuildIds、allowedChannelIds 进一步收窄范围。
  • token 只放在本机凭据里,不要提交到仓库。
  • 插件以当前 dsh 进程权限运行;安装前请自行查看源码与 MIT 许可证,确认符合你的安全策略。

已知限制(来自 README):

  • 限时提问超时后,补答只能在桌面端进行。
  • 回复在每个模型步骤结束后整段发送,不做逐字流式编辑。
  • token 写在 ~/.dsh/.env 时需彻底重启桌面端才会上线;写在 ~/.dsh/.credentials.yaml 时可在插件页重新启用。

DeepSeek Harness 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。

结尾

dsh-plugin-discord 把 Discord 接到 Harness Host 内部:不增进程、不开端口,却能远程对话、接入桌面会话、竞速审批与答题。若你已经在用 dsh 并希望移动端可控,可按 README 创建 bot、安装 bundle、配置白名单用户 ID 后启用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye