前言¶
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>
核心功能¶
- 绑定地址选择:支持 Tailscale 地址(如
100.64.0.10)、局域网 IPv4(如192.168.1.100)或回环;bindHost为null时按 Tailscale → 局域网 → 回环 自动检测。 - 生命周期管理:启动、停止、重启
dsh web子进程。 - Token URL:复制完整登录链接;每次启动 token 轮换且一次性,首次浏览器交换后变为 cookie。
- 日志:读取
dsh web子进程的 stdout/stderr 汇总日志。 - 智能体工具:
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:默认3080autoStart:默认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)。