dsh-remote-hub: Remotely control DSH on computer using a native mobile app

前言

DeepSeek Harness(DSH)平时跑在开发机上,会话、模型和权限都在本地进程里。人离开电脑后,若仍想查看会话、发消息或中断流式回复,常见做法是 SSH 端口转发、自建 Web 入口,或临时开内网穿透再手抄地址和 Cookie。步骤多,且 DSH 对 Host 与 Cookie 的 authority 绑定较严,桥接写错 Host 容易 403。

下面介绍社区插件 dsh-remote-public(NPM 包名 dsh-remote-hub):电脑侧由 DSH 插件起桥接、可选 ngrok / cloudflared 隧道、签发 Cookie;手机侧是 Kotlin/Compose 原生 Android App DSH Remote,直连 DSH 自带的 HTTP API 与 WebSocket 网关,不是 WebView 套壳。维护者为 liaoguogang-hub,在插件目录中归类为客户端。仓库为公共版:不含内置服务器地址与登录凭据,连接方式支持局域网、ngrok 隧道与自定义;包名 com.dsh.remote.ngrok,可与作者自用版 com.dsh.remote 共存。

这是什么

本仓库同时包含两样东西:

  1. DSH 插件(Node,dsh-remote-hub):装进 DSH 后由宿主负责桥接、隧道、签 Cookie,并把状态写到 ~/.dsh/dsh-remote/。
  2. Android App(APK,不通过 npm 分发):与插件配合,在手机上填地址与凭据(或扫码配对)后连接电脑上的 DSH。

一句话定位:DSH Remote — 通过局域网或隧道,在 Android 上控制 PC 上的 DeepSeek Harness;仓库附带一键连接脚本与 dsh-remote CLI。

核心功能

电脑侧插件

装完并重启 dsh web(或桌面端)后,插件会自动:

  1. 在 0.0.0.0:6300 起桥接,把 Host 改写成 127.0.0.1:1815(避免 Cookie 因端口变化失效);
  2. 自动发现 DSH 宿主端口(固定上游可在配置里设 upstreamPort);
  3. 按策略开隧道:有 ngrok 则用 ngrok(可固定域名),否则尝试 cloudflared 的 trycloudflare quick tunnel;
  4. 签发 30 天 Cookie,写入 status.json 与 connect.txt。

常用命令:

dsh-remote qr         # 打开配对页,手机扫码自动填地址与凭据
dsh-remote start --open   # 起桥接并打印地址/Cookie,同时打开二维码页
dsh-remote status     # 局域网地址、公网地址、Cookie、上游端口
dsh-remote connect    # 直接打印要抄进手机的两行
dsh-remote doctor     # 自检:凭据、ngrok、cloudflared、宿主端口
dsh-remote start      # 不开 DSH 也可单独前台跑

插件配置可在 profile 中覆盖:

键 默认 作用
enabled true 关闭插件但不卸载
port 6300 桥接监听端口
authority 127.0.0.1:1815 桥接呈现的 Host,Cookie 绑定它
tunnel auto auto / off / ngrok / cloudflared
upstreamPort 0 固定 DSH 宿主端口,0 为自动发现

手机侧 App

README 发布页提供 DSH Remote v4.21.3 APK(Android 8.0 / API 26 及以上)。安装后应用名为「DSH Remote」。

能力概览(与 README 功能表一致):

  • 三种连接方式(局域网 / ngrok / 自定义),地址与凭证首次填写后本地保存;
  • 会话列表:搜索、排序、归档筛选;默认显示最近 10 条,可展开;
  • 长按会话:重命名、归档或取消归档;
  • 发消息、流式回复、中断;
  • 历史分页与本地缓存;
  • 模型选择与分组目录;
  • 权限模式仅可读当前值(DSH 未开放远程切换权限接口);
  • 自定义地址历史。

扫码配对:电脑上执行 dsh-remote qr 打开配对页,手机在「设置 → 扫码配对」扫描。二维码不含 Cookie,只含 10 分钟有效、单次使用的配对码;也可手动输入地址与配对码。

安装与启用

安装 DSH 插件

资料给出的推荐命令(须带版本号与官方 npm 源,避免 profile 默认 minimumReleaseAge 或镜像延迟导致装到旧版):

dsh plugin --profile desktop add dsh-remote-hub@0.4.6 --registry=https://registry.npmjs.org

Web profile 同样可用:

dsh plugin --profile web add dsh-remote-hub@0.4.6 --registry=https://registry.npmjs.org

装完后用 dsh-remote status 确认;若版本不对,重跑上述命令。插件依赖 Node ^22.19.0 || >=24.0.0,许可证 MIT。

安装 Android App

从 GitHub Releases 下载 APK,例如:

https://github.com/liaoguogang-hub/dsh-remote-public/releases/download/v4.21.3/DSH-Remote-v4.21.3.apk

配合关系:

电脑:dsh plugin … add dsh-remote-hub@0.4.6 → 起桥接 / 开隧道 / 签 Cookie
手机:安装 APK → 填地址与 Cookie(或扫码)→ 连接

典型用法

推荐:插件 + 扫码

  1. 在电脑上安装插件并确保 DSH 在跑,执行 dsh-remote qr 或 dsh-remote start --open。
  2. 手机打开 DSH Remote,用扫码配对或把 dsh-remote connect / status 输出的地址与 Cookie 填入。
  3. 连接后会话列表与聊天与本地 DSH 能力对齐;电脑侧桥接进程需保持运行,关掉即断开手机。

Windows 用户还可使用与 App 一并发布的 connect.cmd:双击后起桥接、签 30 天 Cookie、尽量开公网隧道并打印结果(逻辑与 dsh-remote start --open 同源),结果也会写入同目录 connect-info.txt。

公网与 ngrok(可选)

脚本或插件会优先尝试 PATH 中的 ngrok,否则在条件允许时用 cloudflared 开免注册 quick tunnel;都不可用时仅提供局域网地址。若需要固定公网域名,可按 README 注册 ngrok、配置 Authtoken,并将 ngrok 放到 tools\ngrok.exe 或 PATH;注意隧道须使用 --host-header=127.0.0.1:1815,且不要对隧道再加 Basic Auth(会与 DSH Cookie 冲突)。

手工控制时,README 给出桥接、隧道与签 Cookie 的示例:

node lan-proxy.mjs 6300 127.0.0.1:1815
ngrok http 6300 --host-header=127.0.0.1:1815
node mint.mjs "127.0.0.1:1815" 30

适用场景与注意

适合谁:已在 PC 上日常使用 DSH,希望在同一 WiFi 或外出时用手机查看会话、发消息、换模型,又不想维护一套独立 Web 壳的用户。

安全与运行环境:

  • 插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,自行评估风险。
  • 公共版仓库不含任何内置地址、Token 或 Cookie;Cookie 由本机 ~/.dsh/.credentials.yaml 密钥签发,勿提交到仓库。
  • 局域网桥接为明文 HTTP,仅在可信网络使用;跨网优先 TLS 隧道。
  • App 允许明文与用户证书,地址来源需自行把关。

DeepSeek Harness 生态强调「一切皆插件」;社区目录(如 dsh-plugin.org、skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-remote-hub 把「桥接 + 隧道 + Cookie + 配对页」收进 DSH 插件,再用原生 Android 客户端对接官方 API,减少手抄 Host 和凭据的摩擦。目录与源码:

  • 插件目录:https://www.skillhub.cn/plugins/liaoguogang-hub/dsh-remote-public
  • GitHub:https://github.com/liaoguogang-hub/dsh-remote-public
羽毛球分组比赛记分
小程序二维码

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

Xiaoye