dsh-mesh-access:在组网地址上反代当前 DSH,手机浏览器续用同一会话

前言

DeepSeek Harness(DSH)的网页界面通常由 dsh web 提供。dsh web --host 只接受一个具体网卡地址,且拒绝通配;只监听 127.0.0.1:3080 时,组网里的手机、另一台电脑或带图形界面的 NAS 都访问不到。开机后才出现的 TAP(星空组网 StarVPN)或 utun 等网卡,也不会出现在服务启动时的地址表里。

常见做法是再开一个 dsh、SSH 端口转发,或改监听地址——容易得到两个实例、两份会话,甚至触发 task-board ledger is already owned by …。维护者 SilverKurali 的客户端插件 dsh-mesh-access 在已在运行的 DSH 进程内部于组网网卡上多开一个反代端口,把请求转到 127.0.0.1:3080,从而同一实例、同一份会话与上下文,无需 SSH,也无需第二个 dsh。

这是什么

dsh-mesh-access 是 DSH 的 web profile 插件(npm 包名 dsh-mesh-access,仓库 SilverKurali/dsh-mesh-access)。底层做法是把正在运行的 DeepSeek Harness 网页界面挂到组网网卡上,在服务进程内完成反代;手机浏览器打开的是你在电脑上正在用的那个界面。社区目录页:SkillHub 插件条目。插件同时出现在 awesome-dsh-plugin 商店。许可证 MIT;package.json 中当前版本为 1.5.9,要求 Node >=22,DSH >=0.2.1-rc.2。

数据路径示意(README 原文):

任何设备 ──▶ 192.168.188.1:3081 ──▶(插件反代)──▶ 127.0.0.1:3080(你正在用的这个 dsh)

核心功能

进程内组网反代

插件不能修改主服务自身的监听地址;组网侧是反代,不是把 dsh web 再绑一次。默认把组网地址上的流量转到本机上游(默认 127.0.0.1)上的 DSH 端口。同一份 ~/.dsh 只允许一个实例持有 task-board 锁,本插件的设计目标就是避免为远程访问再拉第二个实例。

侧栏「组网访问」面板

安装并重启 web profile 后,左侧导航会出现组网访问,大致包括:

功能块 内容
当前状态 反代是否在跑、DSH 监听端口、检测到的组网网卡数量
动作 在组网地址上开端口 / 关闭 / 刷新
访问地址 供组网内设备打开的地址(带 token,可复制)
公网隧道(可选) 用你自己的服务器做公网入口:启停 frpc、显示公网地址、探测可达性
入口登录(门锁) 公网入口三模式:密钥 / 账号密码 / 关闭(1.4.0 起)
远程卡顿? 提示 billion-context 开销等
第一次用星空组网? 邀请注册与成员账号说明

重启后自动恢复:面板开过的组网端口与公网隧道记在侧车里;dsh web 重启、机器重启或断电恢复后,插件会轮询恢复(最多等待网卡与上游就绪)。仅当你在面板手动「关闭 / 停止」时才会清除记忆。也可通过 dsh-frpc.service 让 frpc 开机自启,与 dsh web 是否运行解耦。

可选配置

可在 profile 的 patch 层写入(均有默认值):

- id: mesh
  name: dsh-mesh-access
  config:
    interfacePattern: '^(StarVPN|utun\d+|tap\d+|tun\d+|wg\d+|gpd\d+|ppp\d+|ipsec\d+)$'
    addressPrefix: '192.168.'
    proxyPort: 3081
    upstream: 127.0.0.1

addressPrefix 用于避免把 tun* 上的公网地址误判为组网地址。插件只考虑 IPv4 组网地址。

HTTP 接口与无界面排查

面板对应少量 API,例如:

GET  /api/dsh-mesh-access/status   → 状态
POST /api/dsh-mesh-access/proxy    → start | stop
GET  /api/dsh-mesh-access/tunnel   → frpc 隧道状态(1.1.0+)
GET  /api/dsh-mesh-access/auth     → 入口登录;POST 切换模式等(1.4.0+)

本机可执行:

curl -s http://127.0.0.1:3080/api/dsh-mesh-access/status

公网隧道与入口登录(可选)

组网路径在部分链路上会走高延迟 TCP 中继(README 给出实测 RTT 与「重新连接中」现象说明)。若你有带公网 IP 的自有服务器,可用仓库内 tools/frps-setup.sh 与 tools/frpc-setup.sh 自建入口;插件不提供、也不使用他人服务器。公网门锁在插件面板配置,认证状态落在本机 ~/.config/frp/dsh-mesh-access.json。详细步骤见仓库 docs/VPS.md、docs/AI-SETUP.md。

不只手机

只要在同一星空组网(或同类 VPN/组网)内、能路由到组网 IP、浏览器能发 HTTP,手机、平板、另一台电脑、图形界面 NAS、电视盒子上的浏览器均可打开「访问地址」中的链接,无需在对方设备安装 DSH 或本插件。

安装与启用

官方推荐通过 DSH 插件命令安装(须使用 web profile):

dsh plugin --profile web add dsh-mesh-access

无法走 npm 或镜像不便时,可用 Release 中的 tgz:

dsh plugin --profile web add \
  https://github.com/SilverKurali/dsh-mesh-access/releases/latest/download/dsh-mesh-access.tgz

本地开发可 link 安装:

dsh plugin --profile web add link:/绝对路径/dsh-mesh-access

装完后重启 web profile,确认侧栏出现「组网访问」。完整装法、验证、卸载与故障表见仓库 INSTALL.md。

权限说明:插件随当前 dsh web 进程运行,具备该进程的用户权限。安装前宜浏览仓库源码与 MIT 许可证,确认是否符合你的环境策略。

典型用法

1、确认 DSH 已在本地正常监听(例如 127.0.0.1:3080),并已加入星空组网等,本机可见 StarVPN、utun 等网卡。

2、安装插件并重启 profile,打开 组网访问 → 在组网地址上开端口,从 访问地址 复制带 token 的 URL。

3、在组网内的手机或其它设备浏览器中打开该 URL。带 ?token= 的请求会种下 dsh-auth-* cookie(30 天等规则见 README);更换组网 IP 或端口后需重新点一次 token 链接。

4、若组网链路卡顿或 WebSocket 反复重连,先用 README 中的 grep 示例查星空客户端日志是否 path=SN-TCP;需要稳定公网访问时,按 docs/VPS.md 自建 frp 隧道,并在面板 公网隧道 中启动。

5、无图形界面或 DSH 未启动时的替代方案(会起第二个实例)是配套项目 dsh-mesh-kit,与本插件的设计路径不同,按需选用。

适用场景与注意

适合:已在用 DSH web,希望通过 VPN/组网从手机或其它设备继续同一实例、同一会话,且不想 SSH 或再起一个 dsh。

注意:

  • 远程体验取决于组网选路;TCP 中继高延迟时,界面可能出现「重新连接中…」,多数情况不是反代逻辑错误(1.0.0 时代因未改写 Origin 导致 WebSocket 403,需 1.0.1+)。
  • 改了端口或组网 IP 后,须在面板关闭再重新开端口,并复制新地址。
  • 组网设备超时:先 ping 组网 IP,再查本机防火墙是否放行端口。
  • DSH 生态以「一切皆插件」为理念;SkillHub、awesome-dsh-plugin 等为社区目录,与 DeepSeek / 幻方无官方从属关系。

链接

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

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

Xiaoye