前言¶
在手机上用 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):
- Host 半区(
index.js)改动需重装插件或重启dsh web;Client 半区刷新即生效。 - 侧栏折叠为 56px 轨道时仅显示图标。
- 手机端自动铸码依赖本机是否安装
dsh-remote-web-ui(本插件不声明该依赖)。 - 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 写好桌面地址即可。