dsh-lan-uuid-fix
在终端中运行以下命令:
dsh plugin install Zenjibad/dsh-lan-uuid-fix
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 终端执行 dsh plugin install Zenjibad/dsh-lan-uuid-fix 即可安装本插件,插件源码位于 https://github.com/Zenjibad/dsh-lan-uuid-fix
插件介绍
在内网用局域网 IP 访问 DeepSeek Harness 的 Web 界面时,很多人会撞上一个隐蔽的坑:浏览器只在安全上下文(HTTPS 或回环地址)下才暴露 crypto.randomUUID。一旦 origin 变成 http://192.168.1.66:3080 这样的纯 HTTP 地址,这个 API 就是 undefined,Web 客户端的 mintRpcId 随即抛出 TypeError,所有 unary RPC 全部失败,WebSocket 流在半握手阶段被掐断,控制台开始无限循环 connection lost, retry #N,工作区浏览器永远只显示 No sessions yet。
dsh-lan-uuid-fix 的思路很直接:既然 crypto.getRandomValues 在非安全上下文里依然可用,那就用它在 index.html 加载早期补一段内联 polyfill,把 crypto.randomUUID 用 v4 逻辑兜住。插件通过 host plugin 注册在 ctx.webServer 的 html-transform 钩子上,对每一个被服务的 index.html 做一次注入。回环地址和 HTTPS 页面完全不受影响,polyfill 只在检测到 API 缺失时才生效,不会覆盖原生实现。补丁通过 HMR 热加载,运行中的 dsh web 无需重启即可拾取,远程设备强制刷新一次页面即可看到效果。
如果你习惯在办公室或家里通过局域网 IP 直连 dsh web,又不想为了一个 UUID 去折腾 TLS 证书或 Nginx 反代,这个插件就是最省事的解法。装上之后,工作区浏览器正常列出已有 session,控制台不再刷重试日志,局域网体验跟本地 127.0.0.1 完全一致。
使用场景
- 通过 http://192.168.x.x:3080 等局域网 IP 直连 dsh web 时界面卡在 No sessions yet
- 办公室内网环境下不想为单个浏览器 API 配置 TLS 证书或 Nginx 反代
- 家庭局域网多台设备同时访问 dsh web 时出现 connection lost 重试循环
适合人员
- 习惯用局域网 IP 直连 dsh web 的开发者和运维人员
- 在内网部署 dsh 并希望免证书即可使用的团队
- 遇到 Web UI 连接失败且不想改架构的 DeepSeek Harness 用户