前言¶
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 里与任意工作区会话聊天、接入桌面端正在用的会话、审批工具调用、回答模型提问、停止任务。
- 目录页:https://www.skillhub.cn/plugins/tjiisztiuv/dsh-plugin-discord
- 源码:https://github.com/tjiisztiuv/dsh-plugin-discord(MIT,当前 package 版本 0.1.0)
- 简介(英文):Discord bridge for DeepSeek Harness (dsh): chat with any workspace session, approve tool calls, and answer model questions from 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(每轮一条可编辑的工具进度)或offshowReasoning:是否以引用格式展示思考过程allowedGuildIds/allowedChannelIds:可选服务器、频道白名单
完整字段见仓库 README 的配置表。
安装与启用¶
1. 创建 Discord Bot¶
- 打开 https://discord.com/developers/applications → New Application。
- 左侧 Bot → Reset Token,复制 token。
- 同页开启 Privileged Gateway Intents → MESSAGE CONTENT INTENT(否则读不到消息正文)。
- 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 邀请进你的服务器。 - 获取你的 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 会自动重载;否则重启桌面端。
典型用法¶
- 在 Discord 私信 bot:
/use选好工作区,/new或直发消息开始会话;桌面端侧边栏会出现同一会话。 - 桌面端已在跑的长任务:Discord 里
/sessions找到序号,/attach接入,在外出时用/steer插话或/stop停止。 - agent 请求执行工具:Discord 收到审批按钮,与桌面端谁先点谁生效;完全放行(full access)的 preset 下不会出现审批。
- 模型多选题:点按钮、用下拉,或直接回复序号/原文/任意文字;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 后启用。