dsh-mobile-access:用 Safari 在局域网安全打开 DSH Web

前言

DeepSeek Harness(DSH)的 Web 界面默认用终端里打印的一条带很长 token 的 URL 做登录校验。在 Mac 或 Windows 上复制打开没问题;在 iPhone 或 iPad 上,这条链接既不好转发,也不适合手输。直接在手机 Safari 里访问电脑的 http://<局域网 IP>:3080,往往会看到 dsh web authentication required; reopen the URL printed by dsh web.——这是 DSH 的安全机制,不是网络故障。

社区插件 dsh-mobile-access(维护者 abbaababa)是独立的 TypeScript DSH bundle:不改 DSH 核心、不装手机 App、不替换整站页面。它在 DSH 里增加「手机访问」入口、短地址与 8 位配对码,并在 iPhone/iPad Safari 上附带少量输入与触摸补丁。下面介绍它做什么、怎么装、怎么配对,以及使用时需要知道的边界。

这是什么

dsh-mobile-access 发布在 npm(当前资料中的版本为 1.1.9,许可证 MIT),分类属于 DSH 生态里的联网工具。它只做三件事(README 原文归纳):

  1. 左侧栏增加「手机访问」入口;
  2. 提供手机用的短地址(路径以 /m 结尾)和 8 位配对码;
  3. 一组仅在 iPhone/iPad 上生效的前端小补丁(Return 换行、防自动放大、侧栏手势等)。

其余行为保持不变:不改登录体系底层、不装独立后台服务、不拦截现有请求。若 DSH 只监听 127.0.0.1,插件会在本机启动局域网网关(默认端口 3081,被占用时会尝试后续 10 个端口,以面板显示为准);电脑仍用 127.0.0.1,手机用面板给出的 http://<电脑局域网 IP>:3081/m(或已监听局域网时对应的 :3080/m)。

这不是公网隧道或 VPN,面向自家可信 Wi-Fi/LAN;外出访问可选 README 中的 Tailscale Serve 步骤(本文不展开)。

核心功能

配对登录流程

经过上面的背景,插件把「长 token 链接」换成可操作的步骤:

电脑「手机访问」面板显示 8 位配对码
        ↓
iPhone Safari 打开面板上的 /m 短地址
        ↓
输入 8 位数字并连接
        ↓
进入完整 DSH Web,HttpOnly 登录 Cookie 有效期 30 天

资料说明:长登录 token 不会出现在手机地址栏、浏览器历史或 Referer 里;配对码 10 分钟过期,连续输错过多会锁定,需在电脑面板「刷新配对码」。

局域网网关

当 DSH 仅绑定 127.0.0.1 时,插件自动起本地网关,转发你主动发起的 HTTP/WebSocket,不另存聊天或文件内容。手机切勿使用 127.0.0.1 或 localhost——在手机上那指向手机自身,不是电脑。

iPhone / iPad Safari 补丁

仅移动端生效,桌面 Mac/Windows 行为不动。README 列举的能力包括:Return 换行、发送按钮发送;点模型切换器不放大页面、不误弹键盘;点侧栏会话可切换并收起侧栏;右滑打开侧栏、点会话区关闭;切换会话时收起键盘而非反复弹出。

安装与启用

安装命令须与 README 一致;运行环境要求 Node.js >= 22(与 package.json 中 engines 一致)。

Mac 终端:

dsh plugin --profile web add dsh-mobile-access@1.1.9 --registry=https://registry.npmjs.org/

Windows 10/11 PowerShell(无需管理员):

dsh plugin --profile web add dsh-mobile-access@1.1.9 --registry=https://registry.npmjs.org/

先做安装,再在浏览器里 刷新 DSH 页面,左侧栏打开 「手机访问」(英文界面为 Mobile Access)。若平时用的不是 web profile,把命令里的 web 换成实际 profile 名。插件管理器若提示需要重启 DSH,按提示手动重启一次即可,不必反复重装。

Windows 用户第一次让手机访问时,防火墙可能询问是否允许 Node.js 在专用网络(Private networks)通信,选允许;Wi-Fi 建议设为「专用网络」。DSH 若装在 WSL 内,局域网手机通常无法直接访问,README 建议在本机 Windows 安装 DSH 或自行做端口转发,已超出插件「零配置」范围。

典型用法

  1. 确认电脑上的 DSH Web 已正常运行,iPhone 与电脑在同一 Wi-Fi(公司/学校 Wi-Fi 若开启客户端隔离,可能无法互通)。
  2. 在 DSH 左侧栏点「手机访问」,记下 8 位配对码 和面板上的 /m 地址。
  3. iPhone Safari 打开该地址,输入 8 位数字,点「连接 DSH」。
  4. 进入后可将站点 添加到主屏幕,便于下次打开。

Windows 上若不知局域网 IP,可在 PowerShell 执行 ipconfig,查看当前 Wi-Fi 网卡下的 IPv4;面板一般会直接给出完整 URL。

常见问题对照(摘自 README 表格要点):打不开 /m 时先查防火墙与是否同网;401 多为未走 /m 配对;「配对码已过期」或「已锁定」在电脑面板刷新配对码;电脑睡眠后需唤醒并保持 DSH 进程运行。

适用场景与注意

适合谁: 已在 Mac 或 Windows 10/11 上跑 DSH Web,希望用 iPhone/iPad Safari 在同一局域网里操作界面、又不想装专用 App 的用户。

安全与权限: 插件运行在 DSH 进程权限内。README 1.1.9 源码与 npm 包自查结论包括:无生产 dependencies;服务端仅用 Node 内置 http、net、os 与 Web Crypto,未使用读文件的 fs、未使用 child_process 或 eval;配对与流量不经过第三方服务器(可选 Tailscale 为自备组网)。仍应只从 npm 安装固定版本(如 1.1.9),勿把配对码交给不可信的人;公共 Wi-Fi 下建议关闭网关或改用 Tailscale。安装前可阅读仓库源码与 MIT 许可证,必要时用 README 提供的 npm view、npm audit、grep 命令自行复核。

生态说明: DSH 社区插件目录在 SkillHub,与 DeepSeek / 幻方无官方从属关系;「一切皆插件」是 DSH 的使用方式,本文介绍的是社区维护的独立 bundle。

结尾

dsh-mobile-access 把 DSH Web 的长 token 登录 bottleneck 收成「电脑看码、手机输码、短地址 /m」的流程,并在 Safari 上补了移动端可用性,Mac 与 Windows 共用同一 npm 包与安装命令。

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

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

Xiaoye