前言¶
DeepSeek Harness 的 Web UI 在调用 mintRpcId() 时依赖 crypto.randomUUID()。浏览器仅在该 API 在安全上下文(HTTPS 或 loopback)中时才暴露它。像 http://192.168.1.66:3080 这样的纯 HTTP 局域网地址不属于安全上下文,导致 crypto.randomUUID 为 undefined。一旦缺失,每次单次 RPC 调用(如 host.describe、workspace.list)都会抛出 TypeError: crypto.randomUUID is not a function,连接生成中止,WebSocket 握手中断,UI 无法加载会话/工作区基线。
插件定位¶
dsh-lan-uuid-fix 是一个 DeepSeek Harness 插件包,由 Zenjibad 维护。它通过在非安全上下文中注入兼容层,使 Web UI 能够在纯 HTTP 局域网上运行。
核心功能¶
- 在不安全上下文中 polyfill
crypto.randomUUID。 - 使 Web UI 能够在纯 HTTP 局域网上运行。
- 在
ctx.webServer上注册索引 tap。 - 注入内联 polyfill,定义
crypto.randomUUID。
安装与启用¶
使用官方命令安装:
dsh plugin --profile web add https://github.com/Zenjibad/dsh-lan-uuid-fix
说明:Profile patch 层是实时应用(HMR)的,因此正在运行的 dsh web 会自动捕获,无需重启。需要在远程设备上硬刷新页面。
典型用法¶
验证 polyfill 是否注入成功:
curl -s http://<host>:3080/ | grep randomUUID # polyfill present
适用场景与注意¶
- 许可证:MIT License。
- 冲突处理:如果配置文件之前添加了该行的本地文件路径,请先删除该行以避免重复 ID。
- 生效机制:Profile patch 层实时应用(HMR),无需重启服务。
该插件在当前 dsh 进程权限下运行。安装前请检查源码与许可证。
结尾¶
通过解决 crypto.randomUUID 在非安全上下文中的缺失问题,该插件恢复了局域网内的连接稳定性。更多细节与源码,请参考插件目录或 GitHub 仓库。