dsh-phone-remote:在局域网用手机打开 DeepSeek Harness 桌面 Web UI

前言

DeepSeek Harness(DSH)桌面客户端的 Web UI 默认只在本机浏览器里用。人在电脑前时没问题;想同一 Wi-Fi 下用手机或平板继续看会话、点审批,就得自己折腾端口或远程桌面。社区插件 dsh-phone-remote(包名 @flametinary/dsh-phone-remote)跑在 DSH 客户端进程里,在本机起一个带鉴权的网关,把正在运行的 Harness Web UI 镜像到局域网;离开局域网时还可选 Cloudflare 命名隧道。它不是通用反向代理,也不能用于 Cursor、Claude Code 等其它 AI 客户端。下面介绍它的定位、能力与安装用法。

这是什么

dsh-phone-remote 由社区维护者 FlameTinary 发布(GitHub:FlameTinary/dsh-phone-remote),在 SkillHub 目录中归类为客户端插件。简介原文:在局域网访问 DeepSeek Harness 桌面 Web UI;仅 Host 侧 DSH 插件,且只适用于 DeepSeek Harness 桌面客户端。

插件在 0.0.0.0:58800(可配置)监听 HTTP,经访问密钥、网关 Cookie 或可选 HTTP Basic 鉴权后,代签 Harness 浏览器会话 Cookie,转发 HTTP、SSE 与 WebSocket(含 /api/remote.mux),手机浏览器里看到的界面与桌面端一致。项目 README 标明为非官方社区插件,与 DeepSeek 官方无隶属关系;许可证为 MIT(见仓库 package.json,当前资料中版本 0.3.0)。

核心功能

资料中已明确的能力包括:

  • 一条链接进会话:局域网形如 http://<电脑 IP>:58800/?k=<访问密钥>,首次打开写入约 1 年有效的网关 Cookie,之后可直接访问根路径。
  • 完整代理 Web UI:会话、工具调用、审批界面与桌面端一致;HTML 请求可注入移动端抽屉增强(窄屏侧边栏、避免 iOS 输入框自动放大)。
  • 局域网白名单:默认按本机网卡生成 IPv4 /24 CIDR,仅接受回环与配置网段。
  • 自动代签会话:读取本机 ~/.dsh/.credentials.yaml 中 client-connection/browser-session,在客户端进程内代签 Cookie;上游 401 时自动换凭据重试。
  • 外网可选(Cloudflare):需自行安装 cloudflared 与命名隧道 Token;快速隧道(trycloudflare.com)不支持 SSE,Harness 会停在「加载插件…」,仅适合连通性测试。
  • 应用内设置页:路径为 插件 → 已安装插件 → 手机远程访问,改端口、白名单、密钥、隧道等后点「保存并应用」,网关自动重启。
  • 随插件启停:在 DSH 插件设置里关闭后,监听与隧道立即停止。
  • 诊断:电脑访问 http://127.0.0.1:58800/__dshgw/、/__dshgw/status,或读 ~/.dsh/phone-remote/phone-url.txt,或运行 CLI status。

局域网模式仅依赖 Node.js 标准库;外网模式额外依赖系统上的 cloudflared,插件不捆绑该二进制。

工作原理(简述)

请求先到插件网关(默认 58800),通过网段检查与鉴权后,转发至本机 Harness webServer(优先 ctx.webServer.getOrigin())。插件依赖 DSH Host 的 webServer 与可选的 credentials 服务;没有 DeepSeek Harness 客户端则无法工作。README 明确:不要把网关端口直接映射到公网,外网应走 Cloudflare 隧道。

环境要求

  • DeepSeek Harness 桌面客户端,且 Web UI 正在运行。
  • 手机与电脑同一局域网,或电脑已安装 cloudflared 并使用命名隧道。
  • 默认端口 58800 未被占用(可改)。
  • 插件安装器使用客户端内置 Node;手动跑脚本需 Node.js ≥ 20。
  • 适用范围表写明 macOS 上 0.2.1-rc.3 实测;其它 DSH 版本与其它桌面平台理论可用但未在资料中实测。

若曾使用旧版通过 launchd 常驻的 dsh-phone-remote skill,安装前需先停掉占用 58800 的网关(README 提供 launchctl bootout 与 plist 重命名示例)。

安装与启用

资料中的推荐方式是在 DeepSeek Harness 里添加本地目录为插件源(链接目录安装,后续 git pull 后重启 DSH 即可加载,无需重复安装)。

1、把仓库放到本机,例如:

git clone https://github.com/FlameTinary/dsh-phone-remote.git ~/CodeRepo/dsh-phone-remote

2、打开 DeepSeek Harness → 插件 → 添加插件,在安装源中填入本地目录绝对路径,例如 /Users/sheldon/CodeRepo/dsh-phone-remote,点击安装。

3、在 已安装插件 中找到 手机远程访问(Phone Remote),确认开关为开启。

从 0.1.x 升级时,包名已改为 @flametinary/dsh-phone-remote,需先卸载旧插件再按上述步骤安装;~/.dsh/phone-remote/ 下配置与密钥会保留。

方式 B:在 Agent 会话中通过 plugin_manager 安装:

{ "action": "install_bundle", "target": "/Users/sheldon/CodeRepo/dsh-phone-remote" }

成功后 list_bundles 中可见类似:

@flametinary/dsh-phone-remote  0.3.0  availability=profile  installed=true  enabled=true

首次启动会创建 ~/.dsh/phone-remote/config.json(权限 0600),随机生成访问密钥与 Basic 密码,并写入 phone-url.txt。

典型用法

拿到手机链接(任选其一):

  • 浏览器打开 http://127.0.0.1:58800/__dshgw/(需 Basic 或访问密钥);
  • 读取 ~/.dsh/phone-remote/phone-url.txt;
  • 执行(将路径换成你的插件目录):
node /path/to/dsh-phone-remote/bin/phone-remote.mjs url

输出示例:

Phone URLs (same LAN, contains the access key):
  http://192.168.1.42:58800/?k=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Basic auth: dsh / xxxxxxxxxxxxxxxxxx

手机端:与电脑同一 Wi-Fi,用浏览器打开带 ?k= 的链接;303 跳转后会写入 Cookie,之后可书签保存无密钥的局域网地址。

检查状态:

node /path/to/dsh-phone-remote/bin/phone-remote.mjs status

返回 JSON 含 ok、version、upstream、listen、phoneUrls 等字段。

适用场景与注意

适合:已在用 DeepSeek Harness 桌面版,希望在同一局域网用手机/平板浏览器继续同一 Harness 会话;偶尔离开家网、且愿意配置 Cloudflare 命名隧道与域名的用户。

不适合:任何非 DSH 的 AI 客户端;把插件当通用内网穿透或静态站;直接公网暴露 58800 端口。

安全与信任:插件以当前 DSH 进程权限运行,会读取本机凭据并为浏览器代签会话 Cookie。安装前应阅读源码与 MIT 许可证,自行评估是否纳入工作流。访问密钥、Basic 密码与 phone-url.txt 权限为 0600,仍应视为敏感信息,勿泄露链接中的 ?k=。

已知限制(资料原文):Cloudflare 快速隧道不支持 SSE;仅 DSH 桌面客户端;非官方插件,宿主 API 或 Cookie 格式变化时可能需要适配。

结尾

dsh-phone-remote 把 DeepSeek Harness 桌面 Web UI 延伸到手机浏览器:局域网一条链接即可,外网可走可选 Cloudflare 命名隧道,并在插件详情页完成配置。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye