dsh-desktop-link:在 DSHA 侧栏一键打开桌面版 DSH Web GUI

前言

在手机上用 DSHA(DeepSeek Harness 安卓启动器) 跑 DSH 时,内置浏览器只能访问本机 http://127.0.0.1:<端口> 上的 DSH 服务,没有「填一个网址去连电脑上那套 DSH」的入口。你当然可以在系统浏览器里手动输入桌面端的远程地址,但每隔一段时间就要重新找链接、复制书签。

DSHA 本身有一条规则:顶层导航若离开本机 DSH 服务,会交给系统浏览器打开(WebPreviewActivity.shouldOverrideUrlLoading → ACTION_VIEW)。dsh-desktop-link(npm 包名 dsh-desktop-link,仓库 lzlrt/dsha-desktop-link)所做的,是给这条已有行为加一个侧栏按钮入口:不改 DSHA、不需要 root、不需要 am start。

这是什么

dsh-desktop-link 由维护者 lzlrt 发布,分类为客户端类 DSH 插件。它在 DSH Web 侧栏底部增加两个控件:显示器图标按钮用于打开桌面版 DSH 的 Web GUI;齿轮按钮用于在界面里填写并保存地址。

专门为 DSHA 场景设计:在手机上点「桌面版」,导航会离开本机 DSH 服务,DSHA 将 URL 交给系统浏览器,从而打开你电脑上跑的 DSH;DSHA 内的 agent 仍独立运行,不受影响。

核心功能

侧栏底部示意(README 原文):

🖥 →  桌面版      ⚙
点击环境 结果
手机(DSHA 的 WebView 或手机浏览器) 导航离开 DSH 服务 → DSHA 交给系统浏览器 → 打开桌面版 GUI
电脑浏览器 target="_blank" 开新标签页,当前 GUI 不受影响

未配置地址时,主按钮变灰;此时点击会直接打开齿轮对应的设置界面,不会跳到无效链接。

地址解析按优先级依次查找,命中即停:

优先级 来源
1 profile 补丁里的 config.desktopUrl / config.launchUrl
2 环境变量 DSH_DESKTOP_URL / DSH_DESKTOP_LAUNCH_URL
3 $DSH_HOME/desktop-url.txt 第 1 行(桌面地址)/ 第 2 行(点击时打开的地址)
4 $DSH_HOME/remote-web-ui-registry/web.json 的 id → https://<id>.dsh-market.com(需已装 dsh-remote-web-ui 并开启固定域名中继)

desktopUrl 为长期地址(锚点 href、复制链接、收藏均用它);launchUrl 为点击时实际打开的地址,可指向会临时铸码的端点。未配置 launchUrl 时等同于 desktopUrl。

若本机装有 dsh-remote-web-ui,手机点击时插件可先调同源 /api/pair/issue 铸一次性码再跳转;未装则退回直接打开 desktopUrl。未配对设备直接打开桌面地址可能收到 401,属于 DSH 远程配对机制,而非插件缺陷。

安装与启用

桌面 DSH(推荐从 npm)

下面命令来自插件 README:

dsh plugin --profile web add dsh-desktop-link

当前 npm 包版本在 package.json 中为 1.3.0;引擎要求 DSH >=0.2.1-rc.2,Node ^22.19.0 || >=24.0.0。许可证 MIT。

开发或离线场景下,README 还给出从本地目录、link: 路径或 .tgz 安装的方式;装到手机上的 DSHA 时,可在插件页粘贴 registry 的 tgz URL、直接填包名 dsh-desktop-link,或本地导入后于插件管理页点「重启 Web」。

典型用法:配置地址

在界面上填

点侧栏底部齿轮 → 填写「桌面版地址」与可选的「点按钮时打开的地址」→ 保存。写入 $DSH_HOME/desktop-url.txt,刷新页面即可生效,一般无需重启。

桌面浏览器上使用 React 浮层;手机 DSHA 的 WebView 上,齿轮为普通链接,打开服务端渲染的 GET /desktop-link/settings(纯 HTML 表单,无 JavaScript),避免 WebView 在表单提交与 React 重渲染组合下进程退出。

desktop-url.txt 示例(README):

# 第一行:桌面版长期地址(书签、复制链接用)
https://your-desktop.example.com

# 第二行(可选):点按钮时真正打开的地址。
https://your-desktop.example.com/pair-entry

两框都清空等价于删除该文件,退回自动探测。

命令行与 API 兜底

DSHA 终端一行写入(Host 半区每次请求重读文件):

echo 'https://4217332722d23859.dsh-market.com' > ~/.dsh/desktop-url.txt

界面异常时,可在已配对、同源的浏览器访问(将 <DSH 端口> 换成本实例端口):

http://127.0.0.1:<DSH 端口>/api/desktop-link/set?desktopUrl=https://xxx.dsh-market.com

查询当前解析结果:GET /api/desktop-link/info;JSON 写入:POST /api/desktop-link/config,body 为 {"desktopUrl":"…","launchUrl":"…"}。相关路由均经 DSH Connection 围栏与同源检查。

适用场景与注意

适合谁: 经常在手机上用 DSHA 管本机 DSH,又需要偶尔用系统浏览器打开电脑上同一套(或远程)DSH Web 界面的用户。

运行权限: 插件随当前 DSH 进程的权限运行;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。

已知限制(README):

  1. Host 半区(index.js)改动需重装插件或重启 dsh web;Client 半区刷新即生效。
  2. 侧栏折叠为 56px 轨道时仅显示图标。
  3. 手机端自动铸码依赖本机是否安装 dsh-remote-web-ui(本插件不声明该依赖)。
  4. DSHA 若 profile 启动失败会进入 recovery profile,界面「变回出厂样子」时需查 [DSHA_STARTUP] 日志。

DeepSeek Harness 生态以「一切皆插件」为思路;社区目录站点 SkillHub 上的 dsha-desktop-link 页 与 GitHub 同源信息互补,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-desktop-link 把「离开本机 DSH 服务 → 系统浏览器打开外链」这条 DSHA 既有规则,落实为侧栏一键入口,并自带多套配置路径与手机 WebView 友好的设置页。若你在 DSHA 与桌面 DSH 之间频繁切换,可按上文安装命令启用,再用齿轮或 desktop-url.txt 写好桌面地址即可。

羽毛球分组比赛记分
小程序二维码

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

小夜