前言¶
DeepSeek Harness (DSH) 在启动 dsh web 时会生成随机的 launch token 用于授权浏览器访问。本机设备启动时通常由 GUI 自动处理,但 iPad、iPhone 或其他局域网设备需要访问时,通常只能通过服务器日志查找带 token 的 URL。这种方式不仅麻烦,且容易出错。
dsh-remote-auth 插件在 webserver 上挂载了一个公开路由 GET /mobile-auth。设备访问该页面后,通过输入 PIN 或扫描二维码,即可获取当前 dsh web 进程的浏览器会话授权链接,并生成有效期 30 天的持久化 Cookie。
插件简介¶
- 名称:dsh-remote-auth
- 一句话:一键或扫码获取 dsh web 浏览器会话的远程授权页
- 作者:wentao75
- 许可证:MIT
核心功能¶
- 远程获取会话:点一下链接或扫一下二维码即可获取当前 dsh web 进程的浏览器会话。
- 多场景支持:支持局域网、Tailscale 以及 iPad/iPhone 等远程设备访问。
- 免查日志:无需从服务器日志中查找 token。
- 安全验证:支持 PIN 门禁安全验证。
- 访问控制:支持 Host 头白名单和源 IP 网段白名单(CIDR)。
- 持久化 Cookie:Cookie 由持久化签名密钥签发,重启 dsh 不会踢掉已授权设备,有效期 30 天。
安装与启用¶
使用官方安装命令添加插件:
dsh plugin --profile web add dsh-remote-auth -w
安装后需要重启 dsh web 生效(GUI 会短暂断连后自动恢复)。
使用方式¶
安装完成后,从任意授权设备打开以下地址:
- 本机:
http://127.0.0.1:3080/mobile-auth - 局域网:
http://<Mac-name>.local:3080/mobile-auth - Tailscale:
http://<host>.tailXXXX.ts.net:3080/mobile-auth
在页面中输入 PIN(如果已启用),然后点击“在本设备打开授权链接”或让另一台设备扫描二维码。授权成功后,设备将获得与当前访问 authority 一致的浏览器会话。
配置项¶
在 profile 的 cordis.patch.yml 中可以配置以下参数:
allowedAuthorities:Host 头白名单。支持裸主机名(任意端口)或精确host:port。回环地址恒放行。allowedSubnets:源 IP 网段白名单(CIDR)。回环地址恒放行。pin:8 位字母数字 PIN 码。设为空字符串""可关闭 PIN 门禁(不推荐在公网使用)。lockAfterFails:锁定阈值,默认为 5。lockSeconds:锁定秒数,默认为 60。originProtocol:当服务位于 TLS 反向代理之后时,需设为"https"。
注意事项与兼容性¶
- 重启生效:重启
dsh web后插件生效。 - 依赖内核:依赖内核扩展点
ctx.webServer.register和ctx.connection.authenticatedUrl。 - 内核版本:已验证兼容内核版本
0.1.2-rc.1和0.1.6-alpha.1。 - Polyfill:在明文 HTTP 环境(局域网/Tailscale IP)下,需要
crypto.randomUUIDpolyfill。 - 包类型:
package.json中"type": "module",不要将 vendored 的lib/qrcode.cjs重命名为.js,否则会导致加载失败。
结语¶
dsh-remote-auth 解决了在非本机环境下访问 DSH Web 服务需要翻阅日志查找 Token 的痛点,通过简单的扫码或点击即可建立远程会话。适合需要在局域网或远程设备(如 iPad)上持续使用 DSH Web 的场景。