DSH Remote:把 DSH 控制台带到手机与另一台电脑

前言

DSH 跑在开发机上时,会话、审批和提问往往绑定在那一台电脑的浏览器里。你离开工位,只能等回到电脑前再处理;想在手机上续写对话或批准工具调用,也没有现成入口。常见做法是远程桌面或 SSH,但那是整台机器的接管,不是围绕 DSH 工作流的轻量遥控。

下面介绍 Blank-not-black 维护的 DSH Remote(GitHub:Blank-not-black/dsh-Remote)。它通过 DSH 插件、独立网关和 Android 应用 / WebUI 三件套,在局域网或 Tailscale 上提供会话查看、审批与提问处理、文件传输和运行状态总览,并用 Token 鉴权,数据只在你的设备之间流转。

这是什么

DSH Remote 是一套面向 DSH 的远程控制台:在手机或另一台电脑上查看会话、处理审批与提问、传输文件,并掌握主机运行状态。npm 包名为 dsh-remote-plugin,当前仓库版本为 0.6.15,许可证 MIT。

三个部分各司其职:

部分 角色
DSH 插件 在 DSH Web 内提供入口,自动管理网关,展示主机与网关状态
独立网关 负责令牌鉴权、实时连接、文件传输和设备监控
Android 应用 / WebUI 手机、桌面浏览器和插件内嵌的远程操作界面

令牌即远程控制凭证。项目默认不引入额外账号系统;令牌保存在 ~/.dsh-remote/token,需像保护 SSH 密钥一样保管,不要提交到仓库或截图公开。

核心功能

以下能力均来自项目 README 与文档说明。

会话远程控制:查看会话、继续工作、切换模型、处理目标与后台任务。会话详情支持实时消息、历史加载、斜杠命令和全屏输入。

实时决策通知:审批、提问、任务状态实时推送;网络波动时可自动降级为轮询,恢复后再切回 WebSocket。

文件与图片:浏览主机目录,支持分块上传、断点续传、暂停与取消;可将拍照或相册图片作为 session.prompt 的图片内容发送到当前会话(取决于当前 DSH 组合与模型是否支持图像输入)。

运行全景:DSH 版本、网关链路、设备连接、Token 用量和近期活动集中在主页与统计页;插件面板和管理控制台可查看网关版本、端口、上游状态与 Token 近 7 日用量。

多网络接入:支持局域网、Tailscale,以及带认证的 WebSocket 隧道。手机与电脑应位于同一可信局域网,或通过 Tailscale 互通;不要把网关端口直接暴露到公网。

离线可看聊天记录:客户端可加载历史消息,便于弱网或短暂断连后继续查看。

安装与启用

插件需安装在 DSH Web 的 web profile。先确认本机 DSH Web 可正常打开,再在安装 DSH 的同一用户下执行:

dsh plugin --profile web add dsh-remote-plugin
dsh plugin --profile web list --depth 0

第二条命令用于确认插件已装入 web profile。

指定版本或从 Git 安装:

dsh plugin --profile web add dsh-remote-plugin@0.6.8

dsh plugin --profile web add "github:Blank-not-black/dsh-Remote#main&path:/packages/plugin"

经过上面的步骤后:

  1. 完整重启 DSH Web 进程(手动运行则停止后重新执行 dsh web;若使用 systemd 用户服务可执行 systemctl --user restart dsh-web)。
  2. 在 DSH Web 中 Ctrl+F5 强刷,从侧栏打开 DSH Remote 面板。
  3. 在插件面板确认网关已运行,并在 DSH 主机上访问 http://127.0.0.1:8787/health,返回 JSON 表示网关端口可用。
  4. 从插件面板复制令牌或扫码配对;令牌亦保存在 ~/.dsh-remote/token
  5. 手机端在「设置 → 服务器」扫码,或填写 http://电脑局域网IP:8787 与令牌(不可使用 127.0.0.1localhost)。
  6. 另一台电脑可直接打开 http://DSH主机IP:8787,浏览器进入桌面 WebUI。

插件内置网关,默认监听 0.0.0.0:8787,随 DSH 自动启动与自愈。网关开关意图保存在 ~/.dsh-remote/gateway.enabled。端口优先级为环境变量 DSH_REMOTE_GATEWAY_PORT~/.dsh-remote/gateway-port → 8787。

不使用插件时,可从 GitHub Releases 下载单文件网关(如 dsh-remote-linux-x64)独立运行:

./dsh-remote-linux-x64

PORT=9000 TOKEN=your-token ./dsh-remote-linux-x64

默认上游为本机 DSH Web http://127.0.0.1:3080,管理页为 http://127.0.0.1:8787/admin

Android 应用安装包为 Release 中的 dsh-remote.apk

典型用法

网关健康检查(在 DSH 所在电脑执行,便于区分网关未启动与网络不可达):

curl -i http://127.0.0.1:8787/health
ss -ltnp | grep ':8787'
curl -i http://127.0.0.1:3080/

/health 返回 ok: trueupstreamOk: false,说明网关已开而 DSH Web(默认 3080)不可达,需检查 DSH Web 进程而非网关本身。

文件传输 API(Bearer 令牌与插件面板或 ~/.dsh-remote/token 一致):

TOKEN=$(cat ~/.dsh-remote/token)
HOST=http://127.0.0.1:8787

curl -H "Authorization: Bearer $TOKEN" "$HOST/fs/list"
curl -OJ -H "Authorization: Bearer $TOKEN" "$HOST/fs/file?path=~/Downloads/example.zip"
curl -H "Authorization: Bearer $TOKEN" --data-binary @./photo.jpg \
  "$HOST/fs/upload?path=~/Downloads&name=photo.jpg"

默认单文件上限 2GB,可通过 DSH_REMOTE_FS_MAX_UPLOAD 调整;允许目录默认包含当前用户目录及 DSH workspace.list 已登记的工作区,额外根目录可用 DSH_REMOTE_FS_ROOT 配置(Linux/macOS 用 : 分隔,Windows 用 ;)。

手机端导航:会话、文件、主页(链路健康与待办)、统计(Token 与费用)、设置(服务器、令牌、通知与皮肤)。

桌面 WebUI:左侧会话列表与工作台,文件传输、主页总览、统计抽屉,以及审批 / 提问通知卡片。

适用场景与注意

适合以下情况:

  • DSH 在电脑上运行,需要在手机上查看会话、回复提问或处理工具审批。
  • 需要在手机与 DSH 工作目录之间传文件,或把图片作为会话附件发送。
  • 从另一台电脑查看会话、文件、Token 统计和设备连接,通过局域网或 Tailscale 访问,而不额外搭建账号系统。

使用前请注意:

  • 插件以当前 DSH 进程的用户与权限运行,安装前应阅读源码并确认 MIT 许可证与行为是否符合预期。
  • 网关默认监听所有网卡;防火墙需允许 TCP 8787 入站(无需对公网放行 DSH 3080)。手机连不上时检查是否使用了电脑局域网 IP 或 Tailscale 100.x.x.x 地址,以及路由器 AP 隔离。
  • 401 或未授权多为令牌不一致,应从当前插件面板重新扫码或复制令牌;页面黑屏或功能未更新时可 Ctrl+F5 或完全退出 App 后重开,避免静态资源缓存。
  • 优先通过插件面板启动网关或重启 DSH Web 触发自愈;不要把 systemctl --user restart dsh-remote-gateway.service 当作通用重启方式(插件拉起的网关可能是 transient 进程)。

DSH 生态理念是「一切皆插件」。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;dsh-remote-plugin 是社区维护的客户端类插件,GitHub 约 19 stars。

结尾

DSH Remote 把 DSH 最关键的决策面——会话、审批、提问和文件——搬到手机与第二台设备,而不是复制整台远程桌面。三件套分工明确,插件模式下一行命令即可启用,网关与 Token 机制也便于在可信内网或 Tailscale 中自托管。

  • 目录页:https://www.skillhub.cn/plugins/Blank-not-black/dsh-Remote
  • GitHub:https://github.com/Blank-not-black/dsh-Remote
  • npm:https://www.npmjs.com/package/dsh-remote-plugin
羽毛球分组比赛记分
小程序二维码

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

小夜