前言¶
DSH(DeepSeek Harness)采用插件化架构,默认以本地模式运行。在开发调试或演示场景下,有时需要在手机端预览 WebUI 效果。由于 DSH 默认不开放局域网访问,直接通过浏览器访问本地端口通常受限于安全策略或网络隔离。下面介绍 hw-cola/dsh-remote-control 插件,它通过反向代理和二维码授权机制,将本地 DSH WebUI 暴露给局域网设备。
简介¶
这是一个 DSH 客户端插件,用于手机远程控制。
由 hw-cola 维护,基于 MIT 协议开源。插件通过启动一个独立的 Node 子进程监听局域网端口,将流量转发到本地 DSH 服务。核心功能是在设置面板增加「远程控制」页,支持自动探测局域网 IP、生成二维码、扫码验签以及设备白名单管理。
核心功能¶
设置面板与局域网探测¶
安装后,DSH 设置面板会新增「远程控制」页(仅电脑端显示)。
- 开启开关:点击「允许局域网访问」开关,插件会自动探测并列出本机的局域网 IPv4 地址。
- 多网卡切换:当存在多个网卡时,用户可以在列表中切换选中的 IP 地址。
- 二维码生成:二维码随选中地址实时生成。插件内置纯 JS QR 编码器(Byte 模式、ECC-M、版本 1~10),无第三方依赖,支持离线使用。
- 自动刷新:二维码每 60 秒自动刷新,旧码立即失效,防止中间人重放攻击。
扫码验签与安全拦截¶
为了防止未授权的局域网访问,插件实现了严格的验签机制。
- 扫码授权:非本机来源(非
127.0.0.1或localhost)访问必须先扫码。二维码 URL 携带一次性验签 token(?rcnt_t=<token>)。Token 校验通过后,服务端会签发rcnt_authCookie 并跳转到干净地址。 - Cookie 有效期:已授权设备凭 Cookie 持续访问,最长有效期为 7 天。
- 403 拦截:未授权直接访问会返回 403 提示页,且插件会拦截 WebSocket 握手,确保无法建立连接。
- 本机访问:本机使用
localhost或127.0.0.1访问不受影响,直连 DSH;本机使用局域网 IP 访问同样需要扫码(因为来源非回环,属于「非本机」访问)。 - 白名单机制:支持最多 32 台设备的白名单管理。白名单持久化在
~/.dsh/remote-control/devices.json。显示设备名(按 User-Agent 解析)、IP、授权与最近活跃时间,支持单独移除。
代理与兼容性处理¶
- 反向代理:独立 Node 子进程监听
0.0.0.0:<端口>,将请求转发到127.0.0.1:<端口>,并将 Host/Origin 头改写为回环地址,以绕过 DSH 的浏览器信任篱笆。 - 非安全上下文:手机访问通常处于非安全上下文(HTTP),
crypto.randomUUID不可用。代理会在 HTML 响应中自动注入 polyfill。 - Windows 防火墙:在 Windows 下,开启时会自动创建并复用名为「DSH Remote Control」的入站 TCP 规则,无需手动配置。
安装与启用¶
安装命令¶
安装依赖 pnpm 和 DSH 后,执行以下命令:
dsh plugin --profile web add "git+https://github.com/hw-cola/dsh-remote-control.git"
若需钉到指定版本:
dsh plugin --profile web add "git+https://github.com/hw-cola/dsh-remote-control.git#v1.0.0"
本地开发模式:
dsh plugin --profile web add "link:${PATH}/dsh-remote-control"
启动与刷新¶
安装完成后,必须重启 dsh web 以便插件的 cordis 补丁层生效。随后刷新浏览器页面,设置面板中即可看到「远程控制」页。
注意事项¶
- 安全性:通信仍是 HTTP 明文,同网段可嗅探 token 或 Cookie。已授权设备之间等价共享访问权。DSH WebUI 本身无登录认证,请仅在可信网络中使用,用毕务必关闭开关。
- 数据持久化:开关状态仅存于宿主进程内存,重启
dsh后默认关闭;但设备白名单持久化在~/.dsh/remote-control/devices.json,重启后已授权设备免重新扫码。 - 卸载清理:卸载会终止代理子进程。设备白名单文件不会自动删除,需要时请手动清理该文件。
- 兼容性:插件在 DSH
0.1.1-rc.2上开发测试。客户端 API 仍在迭代,大版本升级后若功能异常,请检查仓库是否有适配版本。
总结¶
该插件解决了 DSH 本地开发中无法在手机端直接访问的问题。通过扫码授权和二维码刷新机制,在提供便利的同时限制了未授权访问。使用时需注意网络环境的安全性与白名单文件的管理。