tjiisztiuv/dsh-plugin-discord ↗★ 0
dsh-plugin-discord
Discord bridge for DeepSeek Harness: drive any Workspace Session from Discord on your phone or desktop 适合需要在手机或桌面 Discord 客户端上随时随地与 DSH 工作区进行交互的用户。
Other repositories with this package name
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:tjiisztiuv/dsh-plugin-discordREADME
Read the full README ↗3. 配置 token
token 不写进配置文件,而是通过 dsh 的凭据系统读取(默认变量名 DISCORD_BOT_TOKEN)。任选一种:
- 写到
~/.dsh/.env:DISCORD_BOT_TOKEN=xxxxx - 或写到
~/.dsh/.credentials.yaml(dsh 本地凭据库)
.env只在桌面端启动时读取一次:写入或修改后要彻底退出(Cmd+Q)再重新打开,只在插件页重新启用读不到新值。变量名要和配置里的tokenEnv完全一致。
4. 填写配置(必须)
插件默认 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 # 可选:没选工作区时默认用哪个(标题/路径/ID)
# allowedGuildIds: ['...'] # 可选:只在这些服务器响应
# allowedChannelIds: ['...'] # 可选:只在这些频道(及其线程)响应
patch 会整体替换这一行的
config,所以要把需要的键都写全。保存后启用了 HMR 的 profile 会自动重载;否则重启桌面端。
全部配置项
| 字段 | 默认值 | 说明 |
|---|---|---|
tokenEnv | DISCORD_BOT_TOKEN | bot token 的凭据引用名 |
allowedUserIds | [] | 允许使用 bot 的用户 ID;为空时 bot 不上线 |
allowedGuildIds | [] | 服务器白名单,空 = 不限制(不影响私信) |
allowedChannelIds | [] | 频道白名单,线程按父频道匹配,空 = 不限制(不影响私信) |
stateFile | ~/.dsh/discord/state.json | 频道 ↔ 会话绑定的持久化文件 |
defaultWorkspace | — | 频道没选工作区时使用的工作区 |
timeZone | 本机时区 | 随 prompt 发送的 IANA 时区 |
approvals | race | race:Discord 与桌面端同时可审批,先答者生效;desktop:只在桌面端审批 |
questions | race | race:模型提问(ask_user_question)同时发到 Discord 与桌面端,先答完者生效;desktop:只在桌面端回答 |
toolCalls | compact | compact:每轮一条可编辑的工具调用进度消息;off:不显示 |
showReasoning | false | 以引用格式显示模型思考过程 |
mirrorDesktopInput | true | 把在桌面端输入的消息同步到 Discord |
registerCommands | true | 上线时注册全局斜杠命令 |
commandPrefix | ! | 文本命令前缀 |
messageChunkSize | 1900 | 单条 Discord 消息最大字符数(上限 2000) |
sessionListLimit | 10 | /sessions 列出的会话数 |
progressMaxLines | 12 | 进度消息保留的工具调用行数 |
progressEditIntervalMs | 1500 | 进度消息最小编辑间隔 |
typingIntervalMs | 8000 | 运行中「正在输入」提示的刷新间隔 |
maxImageBytes | 8 MiB | 转发给模型的图片附件上限 |
approvalArgumentChars | 900 | 审批卡片里展示的工具参数字符数 |
requestTimeoutMs | 60000 | 调用 Host API(新建、发送、列表)的超时 |
全部配置项
| 字段 | 默认值 | 说明 |
|---|---|---|
tokenEnv | DISCORD_BOT_TOKEN | bot token 的凭据引用名 |
allowedUserIds | [] | 允许使用 bot 的用户 ID;为空时 bot 不上线 |
allowedGuildIds | [] | 服务器白名单,空 = 不限制(不影响私信) |
allowedChannelIds | [] | 频道白名单,线程按父频道匹配,空 = 不限制(不影响私信) |
stateFile | ~/.dsh/discord/state.json | 频道 ↔ 会话绑定的持久化文件 |
defaultWorkspace | — | 频道没选工作区时使用的工作区 |
timeZone | 本机时区 | 随 prompt 发送的 IANA 时区 |
approvals | race | race:Discord 与桌面端同时可审批,先答者生效;desktop:只在桌面端审批 |
questions | race | race:模型提问(ask_user_question)同时发到 Discord 与桌面端,先答完者生效;desktop:只在桌面端回答 |
toolCalls | compact | compact:每轮一条可编辑的工具调用进度消息;off:不显示 |
showReasoning | false | 以引用格式显示模型思考过程 |
mirrorDesktopInput | true | 把在桌面端输入的消息同步到 Discord |
registerCommands | true | 上线时注册全局斜杠命令 |
commandPrefix | ! | 文本命令前缀 |
messageChunkSize | 1900 | 单条 Discord 消息最大字符数(上限 2000) |
sessionListLimit | 10 | /sessions 列出的会话数 |
progressMaxLines | 12 | 进度消息保留的工具调用行数 |
progressEditIntervalMs | 1500 | 进度消息最小编辑间隔 |
typingIntervalMs | 8000 | 运行中「正在输入」提示的刷新间隔 |
maxImageBytes | 8 MiB | 转发给模型的图片附件上限 |
approvalArgumentChars | 900 | 审批卡片里展示的工具参数字符数 |
requestTimeoutMs | 60000 | 调用 Host API(新建、发送、列表)的超时 |
使用
直接发消息 = 发给这里绑定的会话;没有绑定时,会在当前默认工作区新建一个会话(文字频道里会自动开线程)。图片附件会作为图片输入发给模型,其他附件以链接形式附在消息里。
| 斜杠命令 | 文本命令 | 作用 |
|---|---|---|
/ws | !ws | 列出工作区(👉 为当前默认) |
/use workspace | !use | 切换这里使用的工作区;如果这里绑定的会话属于别的工作区,会自动解绑,下一条消息在新工作区新建会话 |
/new [prompt] [workspace] | !new [内容] | 新建会话 |
/sessions [workspace] | !sessions | 最近会话(▶️ 运行中,📍 当前绑定) |
/attach session | !attach | 接入已有会话,例如桌面端正在跑的那个 |
/detach | !detach | 解绑(不删除会话) |
/stop | !stop | 停止当前任务(排队的消息保留) |
/steer text | !steer | 任务运行中插话引导 |
/status | !status | 查看绑定的工作区和会话 |
| — | !help | 帮助 |
斜杠命令的 workspace / session 参数都支持自动补全。全局命令首次注册后可能要等几分钟才出现在客户端里,期间可以先用文本命令。
回答模型提问
模型调用 ask_user_question 时,绑定的频道里会逐题出现问题卡片(一次问多个问题时答完一题出下一题):
- 单选:每个选项一个按钮,点一下即回答;
计划审阅(plan mode 的exit_plan_mode)里表示批准的选项是绿色按钮。 - 多选:从下拉菜单里选一项或多项。
✏️ 其他…/✏️ 回答…弹出输入框写文字回答;跳过跳过这一题。- 也可以直接发消息回答:回复选项序号(多选用逗号分隔,如
1,3)、选项原文,或任意文字。问题等待回答期间,频道里的普通消息都会被当作回答。
桌面端开着时两边同时可答,先答完的一方生效,另一边的卡片会自动收起;桌面端没开时只在 Discord 回答。限时提问(tool-ask-user 配置为 mode: timed)超时后模型会先继续工作,卡片显示「等待超时」。
一个会话同一时间只绑定一个 Discord 位置:在别处 /attach 同一个会话时,原来的位置会收到「已转到 …」的提示。