dsh-web-control:在 DSH 内管理可局域网或 Tailscale 访问的 dsh web

前言

DeepSeek Harness(DSH)提供 dsh web 命令,在本地启动 Web 界面。默认情况下它只监听 127.0.0.1,同一局域网内的手机或其他设备无法直接访问。若要把服务暴露到局域网或 Tailscale 网段,通常需要自行查 IP、拼装 dsh web 的 --host、--port、--public-url 等参数,并从日志里解析带 token 的登录 URL。weichengwu 维护的 dsh-web-control 插件把上述流程收进 DSH:在设置页或智能体工具里选择绑定地址、启停实例、复制 token URL、查看日志。

这是什么

  • 名称:dsh-web-control
  • 维护者:weichengwu
  • 分类:admin-security(社区目录归类为管理与安全相关能力)
  • 仓库:github.com/weichengwu/dsh-web-control
  • 版本(package.json):0.1.0,MIT 许可证

插件在后台调用 DSH 自带的 dsh 可执行文件(而非直接 node CLI),大致等价于:

dsh web --no-open --port <PORT> --host <IP> --public-url http://<IP>:<PORT>/

并从子进程日志中解析就绪行:

dsh web: http://<IP>:<PORT>/?token=<TOKEN>

核心功能

  1. 绑定地址选择:支持 Tailscale 地址(如 100.64.0.10)、局域网 IPv4(如 192.168.1.100)或回环;bindHost 为 null 时按 Tailscale → 局域网 → 回环 自动检测。
  2. 生命周期管理:启动、停止、重启 dsh web 子进程。
  3. Token URL:复制完整登录链接;每次启动 token 轮换且一次性,首次浏览器交换后变为 cookie。
  4. 日志:读取 dsh web 子进程的 stdout/stderr 汇总日志。
  5. 智能体工具:dsh_web_control、dsh_web_config 供 Agent 查询状态或改配置。

Tailscale 与局域网(README 对比)

Tailscale LAN
可达范围 有互联网的任意网络 同一 WiFi / 路由器
加密 WireGuard 端到端;隧道内 HTTP 仍为明文 明文 HTTP,同网段可嗅探
依赖 两端安装并登录 Tailscale 无额外依赖
适用 外出用手机访问家中 Mac 等 家里或办公室内网

安装与启用

从 GitHub 安装(需使用 --profile desktop):

dsh plugin --profile desktop add github:weichengwu/dsh-web-control

或安装 Releases 中的预构建 tarball(路径须为绝对路径):

dsh plugin --profile desktop add file:/absolute/path/to/dsh-web-control-0.1.0.tgz

安装后退出并重新打开 DSH。macOS 分步说明见仓库内 docs/SETUP-MAC.zh.md。

注意:不要使用 dsh plugin add dsh-web-control 这类裸名;插件未发布到 npm,否则会触发 ERR_PNPM_FETCH_404。

典型用法

设置页

打开 Settings → Web 访问:选择地址、设置端口(默认 3080),点击 启动,再将 URL 复制到手机浏览器。

配置文件与状态文件

配置位于 ~/.dsh-web-control/config.json:

  • bindHost:null 表示自动检测
  • port:默认 3080
  • autoStart:默认 false

同目录下还有 instance.json(pid、url、bindHost、port、startedAt)、dshweb.log、url.txt(当前完整 URL,权限 600)。

Agent 工具

dsh_web_control — 参数示例:

{ "action": "status|start|stop|restart|url", "host?": "...", "port?": 3080 }

返回:{ running, url, bindHost, port, message }。

dsh_web_config — 参数示例:

{ "bindHost?": "...", "port?": 3080, "autoStart?": false }

无参数时读取配置;返回 { config, candidates }。

适用场景与注意

适合谁:需要在手机或其他设备上通过浏览器使用同一台机器上的 DSH Web,且愿意在受信网络(家庭/office 局域网或 Tailscale)上暴露 HTTP 监听口的用户。

技术约束(README 原文要点)

  • --host 必须是具体 IPv4 字面量,不接受 0.0.0.0。
  • 日志里 listening on <IP> over plain HTTP; restrict this port... 是提示而非错误;Tailscale 上由 WireGuard 加密,纯局域网下 HTTP 不加密。
  • 绑定到非回环地址后,能访问该地址且持有 token 或 cookie 的一方,具备该机器上 DSH 的同等权限(文件、命令、工具)。仅在可信网络使用;勿在公共 WiFi 上以 LAN 模式长期开启;用毕停止;将 token URL 视为凭证。

插件运行方式:插件随当前 DSH 桌面进程加载,管理的是本机上的 dsh web 子进程。安装前可在 GitHub 查看源码与 MIT 许可证;社区插件目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系,属社区「一切皆插件」生态中的独立条目。

结尾

dsh-web-control 把「选 IP、起服务、拿 token URL」从 shell 脚本收进 DSH 界面与 Agent API,适合 Tailscale 或家庭局域网远程使用 dsh web 的场景。目录页:https://www.skillhub.cn/plugins/weichengwu/dsh-web-control;源码与中文主文档:https://github.com/weichengwu/dsh-web-control(README.zh.md)。

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

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

Xiaoye