dsh-expose:把运行中的 DSH 实例开放到局域网或公网

前言

DeepSeek Harness(DSH)的 Web 界面默认只监听 127.0.0.1。官方文档把 --host 0.0.0.0 视为明确的用法错误:那样会把具备远程代码执行能力的会话直接暴露在网络上。实际开发里却常遇到另一头需求——同一台机器上已经在跑的 DSH,希望用手机、平板或另一台电脑接着用,又不想改 DSH 自身的绑定策略。

下面介绍社区插件 dsh-expose(仓库 WONGIII/dsh-expose)。它在 DSH 外面加一层由你显式控制的转发监听器:选好地址和端口、拨动开关,即可复制远程 URL;不绕过 DSH 原有的 Host/Origin 护栏、Cookie 与会话鉴权。

这是什么

dsh-expose 的分类是联网工具,维护者为 WONGIII,当前 package 版本为 0.1.0,许可证 MIT,Node 要求 >=20。

一句话定位:把当前正在运行的那一个 DSH 实例原样发布到局域网或公网——默认监听 0.0.0.0:3080,开放后页面列出可复制的连接地址(局域网、公网直连,或在 NAT 后提示做端口映射的公网出口)。

配置与开关状态写在 $DSH_HOME/dsh-expose.json,重启后仍生效;若上次处于开启,重启后会自动重新开放。

为什么需要单独一层「暴露」

DSH 故意只绑回环;本插件的做法是「端口是你开的,登录还是 DSH 的登录」:

官方防线 插件行为
只绑定回环 转发监听器由你显式开关、选地址和端口,默认关闭
/api 的 Host/Origin 护栏 入站 Host、Origin、Referer 重写为上游回环权威
绑定权威的浏览器 Cookie 不改动 Cookie;令牌登录仍在目标浏览器上换会话
无令牌 = 401 原样透传,匿名依旧被拒
远程执行能力 远端浏览器拿到的仍是普通 DSH 会话,权限模型不变

核心功能

  1. 监听与开关:监听地址默认 0.0.0.0(全部网卡),也可只绑某一张网卡;端口默认 3080,可改为 1–65535。保存并开放 / 关闭开放 立即生效,关闭后端口释放,回到仅本机可访问。
  2. 远程连接地址:「令牌」开关默认打开——复制/打开的是带一次性登录令牌的链接,新设备点开即登录(令牌随 DSH 进程变化)。关闭后则为纯地址,适合已登录过的设备。虚拟网卡(如 Radmin、Tailscale、OpenVPN)会被标注,且不会作为推荐地址。
  3. 公网出口识别:通过外部回显服务读取本机公网 IP。直连公网(公网 IP 在本机物理网卡上)与 NAT 之后(需路由器/光猫端口映射)会分别标注。
  4. 连通性自检:在本机依次验证「监听端口 → 真实网卡地址 → 未授权被拒(401)→ 令牌登录」四段链路。
  5. 防火墙辅助:Windows 上可尝试用 netsh advfirewall 添加入站规则;权限不足时界面会给出需手动执行的命令。

配置面板入口有两处等价路径:插件 页中该插件的详情页,以及 设置 → 内置插件 → 远程访问。

安装与启用

GUI

打开 插件 页 → 添加插件,在输入框粘贴下面任意一行并回车:

https://github.com/WONGIII/dsh-expose
github:WONGIII/dsh-expose

装好并启用后,标题与简介来自包内 locale 元数据;lib/ 随仓库提交,无 prepare/postinstall,不声明 dependencies,安装时不下载第三方包,也无需批准构建脚本。

命令行

# Web 版
dsh plugin --profile web add github:WONGIII/dsh-expose

# Desktop 版(Electron)
dsh plugin --profile desktop add github:WONGIII/dsh-expose

# 锁版本(推荐)
dsh plugin --profile web add github:WONGIII/dsh-expose#v0.1.0

装完后重启 DSH。在 插件 页「已安装」中应能看到 远程访问;升级可先 remove 再 add 同一仓库地址。

插件以当前 DSH 进程的权限运行;安装前请自行查看仓库源码与 MIT 许可证。社区目录 SkillHub 上的 dsh-expose 页 与 GitHub 均为第三方维护入口,与 DeepSeek / 幻方无官方从属关系。

典型用法

经过上面的安装步骤后,可按下面顺序操作:

  1. 进入插件详情或 设置 → 内置插件 → 远程访问,确认监听地址与端口(默认 0.0.0.0:3080)。
  2. 点击 保存并开放。界面会显示自何时起转发到本机 DSH 回环端口(例如 127.0.0.1:19387,以你实例为准)。
  3. 在 远程连接地址 区域复制局域网 URL(如 http://192.168.x.x:3080/),或按需打开带令牌的链接,在另一设备浏览器中使用同一 DSH 会话。
  4. 若需从公网访问:在 NAT 环境下完成端口映射,并优先使用令牌链接;用完后 关闭开放,只保留必要端口。
  5. 点 连通性自检,四段检查全部通过后再依赖远程访问。

需要从公网访问时,除映射端口外,还应使用强口令或受控网络。插件提供的是可达性,鉴权始终由 DSH 的浏览器会话负责。

控制 API(已登录同源)

浏览器半通过 DSH /api 护栏与 Cookie 鉴权调用;远程匿名访问无法使用这些接口:

方法 路径 说明
GET /api/dsh-expose/state 设置、监听状态、地址列表、公网出口、自检结果
POST /api/dsh-expose/config { enabled?, host?, port? },保存并立即生效
POST /api/dsh-expose/refresh 重新探测公网出口 IP
POST /api/dsh-expose/probe 运行连通性自检
POST /api/dsh-expose/firewall { action: "add" \| "remove" \| "status" }

适用场景与注意

适合:开发者在局域网内用手机调试同一 DSH 会话;临时把本机 DSH 分享给可信同事;在可控网络下配合端口映射做远程接入。

务必注意:

  • 不要将 --host 0.0.0.0 当作 DSH 本体的替代方案;应使用本插件的显式开关。
  • 公网暴露前评估风险,用完关闭开关。
  • 插件与 DSH 同属「一切皆插件」生态;安装来源以 GitHub 仓库与 SkillHub 目录页为准。

结尾

dsh-expose 在不动 DSH 回环绑定与安全模型的前提下,用可选的转发层解决「同一实例、多设备访问」的问题。目录与详情见 SkillHub:WONGIII/dsh-expose,源码与完整说明见 GitHub:WONGIII/dsh-expose。

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

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

小夜