前言¶
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 共存。
这是什么¶
本仓库同时包含两样东西:
- DSH 插件(Node,
dsh-remote-hub):装进 DSH 后由宿主负责桥接、隧道、签 Cookie,并把状态写到~/.dsh/dsh-remote/。 - Android App(APK,不通过 npm 分发):与插件配合,在手机上填地址与凭据(或扫码配对)后连接电脑上的 DSH。
一句话定位:DSH Remote — 通过局域网或隧道,在 Android 上控制 PC 上的 DeepSeek Harness;仓库附带一键连接脚本与 dsh-remote CLI。
核心功能¶
电脑侧插件¶
装完并重启 dsh web(或桌面端)后,插件会自动:
- 在
0.0.0.0:6300起桥接,把 Host 改写成127.0.0.1:1815(避免 Cookie 因端口变化失效); - 自动发现 DSH 宿主端口(固定上游可在配置里设
upstreamPort); - 按策略开隧道:有 ngrok 则用 ngrok(可固定域名),否则尝试 cloudflared 的 trycloudflare quick tunnel;
- 签发 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(或扫码)→ 连接
典型用法¶
推荐:插件 + 扫码¶
- 在电脑上安装插件并确保 DSH 在跑,执行
dsh-remote qr或dsh-remote start --open。 - 手机打开 DSH Remote,用扫码配对或把
dsh-remote connect/status输出的地址与 Cookie 填入。 - 连接后会话列表与聊天与本地 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