packages/dsh-remote-web-ui
zhu1090093659/dsh-web手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
需要先装手机端 App,光装这个插件没用:手机那一半是单独的 APK,必须先安装——下载地址 https://github.com/Zoragyx/dsh-phone-pair/releases ——否则电脑端装好了也没得配。本包是电脑那一半:开启上游远程访问插件、Cloudflare 快速隧道与固定中继域名,扫一次码之后在外面也能连回来。
![]()
⚠️ 先装手机端 App,否则这个插件没法用
本套件只是电脑那一半。手机那一半是一个单独的 Android App,请先下载安装: Releases → DSH-Phone-Pair-1.0.3.apk (包名
com.dsh.phone.pair)。只装电脑端、没有手机端,是没有任何东西可以配对的。
🧪 请把它当成「公开自测版」
这套东西横跨手机 App、Cloudflare 隧道、固定域名中继、系统代理、各种 Android 版本和浏览器内核, 其中相当一部分 bug 作者在自己的机器上复刻不出来,也就无从定位、无从修复。所以:
- 遇到问题先按下面「排错」表自查一遍,那几条覆盖了目前已知的绝大多数坑;
- 自查无果就是真 bug 了,请在 Issues 里报,并附上: 系统版本、DSH 版本、App 版本、
GET /api/pair/status返回的tunnel.state与relay.state、 以及完整报错文字(截图也行);- 你提供的复现信息往往就是修它的唯一线索 —— 只写「用不了」的话,这边大概率还是修不了。
让这台电脑变成可被手机配对的 DSH 主机 —— 也就是 DSH 手机版 · 配对版 App 的服务端那一半。
灵感来源与致谢:本套件只做「插入一段配置、把开关打开」这一件事;配对思路与配对服务端来自上游开源插件
@linxin666/dsh-remote-web-ui(作者 linxin666,源码仓库 https://github.com/zhu1090093659/dsh-web,许可 Apache-2.0)。感谢原作者; 本项目与该作者没有隶属关系,若有任何不妥会立即调整。完整的第三方清单见仓库根目录的NOTICE.md。
装上它之后,电脑会自己开一条 Cloudflare 隧道,并把这条隧道登记成一个固定域名
https://<id>.dsh-market.com;手机只要配对一次,之后无论在家里还是在外面都能连回来,不用重新扫码。
| 组件 | 作用 |
|---|---|
@linxin666/dsh-remote-web-ui(依赖,由本套件自动插入) | 提供配对端点:/pair-accept?pair=<code>(用一次性令牌换设备凭据)、/pair-app(手机版界面壳)、按设备可撤销的会话、设置页里的「远程访问」面板与二维码 |
cordis.patch.yml(本套件) | 把上面那个插件插进来,并打开 autoTunnel: true(开机自动起隧道,不需要 Cloudflare 账号或域名)与 relay: true(登记固定域名,重启后手机不用重配对) |
本套件自己的 lib/index.js 不提供任何端点,只写一行日志,所以它不会和别的插件抢资源。
DSH 的插件以「profile bundle」的形式挂载。任选一种:
A. 从目录装(本地开发)
# 把本目录放进某个 profile 的 node_modules,并登记到 bundles
$profile = "$env:USERPROFILE\.dsh\profiles\desktop"
Copy-Item . "$profile\node_modules\dsh-phone-pair-kit" -Recurse -Force
# 然后编辑 $profile\package.json,把 "dsh-phone-pair-kit" 加进 dsh.profile.bundles 数组
B. 从市场装(推荐)
本套件已于 2026-10-15 收录进 DSH 插件市场(awesome-dsh-plugin 目录),
市场页面:awesome-dsh-plugin.com/p/Zoragyx/dsh-phone-pair--plugin-dsh-phone-pair-kit。
打开 设置 → 插件,搜 dsh-phone-pair 点安装即可,也可以直接复制市场页面给出的安装命令。
投稿材料保留在仓库的 market/ 目录里,供溯源用。别忘了先装上面那个手机端 App,
否则电脑端装好了也没得配。
C. 从 GitHub 装
# 需要本机装了 git —— pnpm 会用 git ls-remote 去问默认分支;
# 没装 git 会报 "'git' 不是内部或外部命令",那就用 A 方式:
# 在仓库页面点 Code → Download ZIP,解压后把路径指向 plugin\dsh-phone-pair-kit
pnpm add github:Zoragyx/dsh-phone-pair#path:plugin/dsh-phone-pair-kit
装完打开远程访问面板(入口:设置按钮旁边的手机图标,或「设置 → Web 插件 → 远程访问」;单独装插件时在设置的插件行):面板会显示固定域名和二维码/配对链接。 如果面板提示「当前服务仅绑定在 127.0.0.1 且未配置公网地址」,说明隧道还没起来,看下面「排错」。
DSH 手机版 · 配对版(Releases
里的 DSH-Phone-Pair-1.0.3.apk,包名 com.dsh.phone.pair)。https://<id>.dsh-market.com/pair-accept?pair=xxxx)。>= 0.2.0-rc.2^22.19.0 || >= 24.0.0cloudflared 是 Go 程序,只认
HTTPS_PROXY 环境变量,不读 Windows 的 IE/WinINET 代理设置。隧道起不来时先设:
[Environment]::SetEnvironmentVariable('HTTPS_PROXY','http://127.0.0.1:7897','User')
[Environment]::SetEnvironmentVariable('NO_PROXY','localhost,127.0.0.1,::1','User')
然后重启 DSH。不设代理也能用,就把这两个变量清空。lanAvailable: false),暴露面只有出站隧道,不需要开 --host 0.0.0.0。cordis.patch.yml 里指向 remote-web-ui 的条目(或卸掉本套件),
固定域名立刻失效。| 现象 | 原因 / 处理 |
|---|---|
| 面板说没有公网地址 | 隧道没起来:多为代理问题(见上),或云端 CF 边缘抖动,等 1 分钟看 GET /api/pair/status 的 tunnel.state / relay.state |
手机打不开 https://<id>.dsh-market.com/pair-app,返回 530 | 中继正在把固定域名重指到新隧道(隧道重启后常见),等十几秒重试;再不行重启 DSH |
| 隧道地址每次重启都变 | 这是快速隧道的正常行为;固定域名由 relay 负责,手机不用重配对 |
| 手机上白屏很久 | 首次要把约 10 MB 客户端拉下来(配对版已经把 28 MB 资源内置,正常不会遇到) |
面板顶部红字「固定域名同步失败」,二维码变成 *.trycloudflare.com | 插件连不上 dsh-market.com:本机 HTTPS_PROXY 指向一个没在运行的代理(例如 Clash 没启动)时 fetch 直接失败。启动代理软件,或给 NO_PROXY 加 dsh-market.com,.dsh-market.com,或清掉 HTTPS_PROXY;然后点面板「刷新二维码」 |
| 手机上粘贴链接后提示「输入完整的链接」/「链接被截断」 | 复制了面板上被省略号截断的可见文字,或误点『复制令牌』(那是给 Docker/反向代理环境用的裸令牌)。改点『复制链接』整条发送;App ≥ 1.0.2 会把具体原因讲清楚 |
手机上粘的是 http://192.168… 却配不上 | 1.0.2 及更早的 App 只接受 https;1.0.3 起内网地址的 http 可以直接配对(手机与电脑要在同一网络/同一 Tailscale 网络)。公网域名的 http 仍会被拒,改用面板的「公网地址」 |
| 手机浏览器点「继续」提示「暂时无法保存确认状态,请重试」 | 这是 DSH 自己的「预览版说明」要把确认状态写回电脑,而浏览器没带上配对 Cookie。从聊天里点开链接(别手输/别存书签)、用系统 Chrome/Edge(别用微信内置浏览器、别开无痕、别阻止第三方 Cookie),或直接用配对版 App |
package.json 的 dsh.profile.bundles 里移除 dsh-phone-pair-kit。node_modules\dsh-phone-pair-kit(可选:一并删掉 @linxin666/dsh-remote-web-ui)。cordis.patch.yml 里对应的 remote-web-ui 条目,避免残留配置。