bluecobaltum/dsh-lan-proxy ↗★ 1
dsh-lan-proxy
LAN access for DeepSeek Harness Web UI: loopback-preserving reverse proxy with Host/Origin rewrite, in-app browse directory picker, and a secure-context UUID polyfill. For trusted LANs only — the harness web control plane has no authentication.
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗dsh-lan-proxy
DeepSeek Harness(DSH)Web UI 的局域网访问插件 —— 一个插件解决三件事:
- 局域网反向代理:在
0.0.0.0:提供完整 Web UI,转发到回环后端并重写 Host/Origin, 使 /api 信任围栏(含特权方法)放行局域网客户端;WebSocket(events.mux / events.host)同样支持。 - 应用内目录选择器:把默认的 native 系统对话框(弹在宿主机桌面、局域网设备看不到)换成 网页内目录浏览器,任何设备都能选工作区。
- UUID polyfill:向页面注入基于
crypto.getRandomValues的crypto.randomUUID兜底, 修复局域网明文 HTTP(非安全上下文)下页面崩溃(如「新建文件夹」报crypto.randomUUID is not a function)。
⚠️ 安全警告:DSH Web 控制面没有任何认证,且 Agent 可执行代码。本插件有意把这一点暴露给网络—— 任何能连到代理端口的人都等于拿到该机器的远程代码执行能力。只建议在可信局域网使用, 并建议配合鉴权层(如 deepseek-harness-auth) 或防火墙白名单。后端本身仍只监听
127.0.0.1,未触碰上游的 loopback 安全边界设计。
安装
把插件目录放入 DSH 可解析的位置(例如仓库 checkout 下的 plugins/dsh-lan-proxy),
在 ~/.dsh/profiles/web/cordis.patch.yml 中挂载:
- id: dsh-lan-proxy
name: 'C:/absolute/path/to/dsh-lan-proxy/src/index.ts'
(发布到 npm 后可用 dsh plugin add dsh-lan-proxy 安装,行名改为包名。)
使用
- 局域网设备访问 http://:8080(默认端口)。
- 点「选择工作区」→ 网页内目录浏览器。
- 无需任何
--host 0.0.0.0、--trusted-host参数;后端保持 loopback。
配置
- id: dsh-lan-proxy
name: '.../src/index.ts'
config:
lanHost: 0.0.0.0 # 代理监听地址
lanPort: 8080 # 代理端口
polyfill: true # UUID polyfill
browsePicker: true # 应用内目录选择器
proxy: true # 局域网反向代理
实现说明
- 代理:
node:http+node:net,纯标准库;请求头重写 Host/Origin 为127.0.0.1:。 - 选择器:
ctx.loader.remove('directory-picker')(触发 auto 清理其创建的 native 行)+loader.create挂 browse 后端与浏览器端 surface。 - polyfill:
ctx.webServer.tapIndex注册页面变换,注入同步脚本(幂等,重复挂载不重复注入)。
许可证
MIT