前言¶
DSH 的 Web GUI 默认只绑定回环地址。DSH launcher 本身也会拒绝 --host 0.0.0.0,原因是绑定所有接口会把 DSH 暴露的工具带入网络。
如果只是想在同一局域网内,从另一台机器打开 DSH Web GUI,dsh-lan-access 把这个切换做成 Settings → General 里的一个开关:打开时绑定 0.0.0.0,关闭时回到 127.0.0.1。
这是什么¶
dsh-lan-access 是一个 DSH web plugin。仓库地址是 nonmean/dsh-lan-access,许可证为 MIT,package.json 的 engines 要求 Node >=20,并已针对 DeepSeek Harness v0.1.1-rc.1 验证可运行。
它的主要价值是:把“是否允许局域网访问”从手工改绑定地址,变成 DSH 设置页里的一个明确开关,并且核心功能不需要对 harness 做改动。
核心功能¶
- 在 DSH
Settings → General中增加“局域网访问 / LAN access”行,带原生 checkbox 开关、LAN URL、复制按钮、中/英文文案,以及重启期间可轮询的状态读取。 - 打开时,Web GUI 绑定
0.0.0.0,同网络设备可以通过http://<LAN-IP>:3080打开。 - 关闭时,Web GUI 绑定回
127.0.0.1,也就是只允许本机回环访问。 - 注册 fenced 的
/lan-accessJSON route:GET读取状态,POST设置状态。 - route fence 接受 loopback 或 trusted authorities,并拒绝 cross-site 请求。
- 打开后更新
/apitrust fence,使 LAN 浏览器可以使用 chat、tools 和 workspace。 - 在 fenced 的
/lan-access/rpcroute 上镜像 settings/credentials domains,用于远程 Settings、Models 和 Plugins 配置页。 - 为 plain-HTTP LAN origins 安装
crypto.randomUUIDpolyfill。 - 暴露
GET /lan-access/diag调试辅助。 - 提供一个可选的
dsh-better-sidebarcompatibility patch。
安装与启用¶
已核实的安装命令如下。README 中的地址使用 <owner>/<repo> 占位符,安装时按实际仓库地址替换:
dsh plugin --profile web add git+https://github.com/<owner>/<repo>.git
安装后重启 GUI:
dsh web
典型用法¶
- 打开 DSH GUI,进入
Settings → General。 - 切换
局域网访问 / LAN access。
- 打开后,设置行会显示可被其他设备打开的地址,通常是拥有默认路由的接口的 IPv4 地址,并附带复制按钮。
- Web server 会重启以重新绑定;设置行会等待重启完成,再重新读取状态。 - 选择会持久化到
~/.dsh/settings.yaml,例如:
lan-access:
enabled: true
- 需要重启 GUI 时使用:
dsh web
如果使用可选的 dsh-better-sidebar compatibility patch,执行:
./scripts/install-patches.sh web
本地开发时,修改 src/ 后可以重新构建,然后重新安装并重启:
pnpm build
也可以使用:
npm run build
适用场景与注意¶
- 默认是关闭的,也就是 loopback only。
- 只建议在 trusted network 中打开。绑定
0.0.0.0会把 DSH 暴露的工具带入网络。 局域网访问 / LAN access开关只通过 fenced route 可达;如果从远程机器上关闭它,那台远程机器会立即失去访问。- 以下能力仍然保持 loopback-only,不能通过该插件从远程补齐:
host.pickDirectory、host.openPath、llm.discoverModels。 - 插件会以当前
dsh进程的权限运行。安装前建议先检查源码与许可证。
链接¶
GitHub:
https://github.com/nonmean/dsh-lan-access
目录页地址(插件线索给出):
https://www.skillhub.cn/plugins/nonmean/dsh-lan-access