liveqte/dsh-lan-proxy
DSH 插件:把 dsh 的回环 Web UI 通过 0.0.0.0 反代暴露到局域网,开关/状态/日志嵌入设置页。官方 bundle 插件,安装:dsh plugin --profile web add github:liveqte/dsh-lan-proxy#main
Project Overview项目介绍
dsh-lan-proxy is a DSH plugin that exposes the loopback-only Web UI to the LAN via a 0.0.0.0 reverse proxy. Capabilities: LAN binding, configurable listen/upstream ports, hot toggle, WebSocket bridging, Host rewriting, and a crypto.randomUUID polyfill, plus an in-page workspace directory picker. Use it when you need to reach dsh from phones or other LAN devices, or browse the host filesystem from a remote browser. Caveat: HTTP only, LAN-exposed; do not place on the public internet.
dsh-lan-proxy 是 DSH 插件,把仅监听回环的 Web UI 通过 0.0.0.0 反代暴露到局域网。能力:监听 LAN、可配端口与上游、热开关、WebSocket 桥接、Host 改写与 UUID polyfill,并把工作区目录选择改为内嵌网页浏览器。当需在手机或其他机器访问本地 dsh,或在远程机选取宿主工作区时使用。注意:仅支持 HTTP、暴露于局域网,勿用于公网。
请帮我安装这个 DSH 插件。安装前先完成【兼容性检查 + 安全性检查】,检查通过再动手。
插件:dsh-lan-proxy(liveqte/dsh-lan-proxy)
仓库:https://github.com/liveqte/dsh-lan-proxy
本站详情页:https://www.yhbd.top/plugins/liveqte-dsh-lan-proxy/
本站登记:类型 bundle · 归类 原生 DSH 插件 · 许可证 MIT · ⭐ 2 · 最近提交 2026-09-04 · 主语言 JavaScript
按下面顺序执行,每步先把结论告诉我,再进入下一步:
【1 兼容性检查】
① 我这边:DSH 版本、Node 版本、操作系统、当前 profile(web / desktop)。
② 读它的 README、package.json、插件 manifest,列出它要求的 DSH 版本 / Node 版本 / 操作系统 / 外部依赖 / 需要另外先装的运行时。
③ 逐条比对,结论只写「满足 / 不满足 / 未知」三种;不满足的给出可行替代方案。
④ 检查是否和我已装的插件冲突:命令名重复、skill / tool 重名、端口占用、重复注册的 MCP server。
【2 安全性检查】
① 仓库可信度:和上面「本站登记」是否一致;star / fork 数、创建时间、最近提交,是否归档或长期停更。
② 安装脚本:逐行看 package.json 的 preinstall / install / postinstall,以及 install.sh、setup.ps1 之类脚本。出现 curl|bash、下载后直接执行、混淆代码、访问与插件功能无关的域名,立刻停下来告诉我,不要继续装。
③ 依赖:列出新增依赖,标出无人维护、或与知名包拼写近似的可疑包(typosquatting)。
④ 权限与副作用:它会读写哪些目录、访问哪些域名、需要哪些 DSH 权限(filesystem / network / shell / clipboard 等),以及怎么卸载和回滚。
⑤ 如果它要求 sudo / 管理员权限,或权限明显超出功能所需,先停下来问我。
【3 安装】
上面两步没有「不满足」和「高危项」时才执行;用官方推荐方式安装,不要自行提权。
【4 汇报】
用表格输出:检查项 / 结论 / 依据 / 是否需要我决策。拿不准的一律写「未知」并说明要我怎么确认——不要猜,也不要替我决定。
Send this message to DSH in your current session: it verifies compatibility and security first (answering met / not met / unknown item by item) and only installs once everything checks out — it will stop and ask you if it finds a high-risk item. The box scrolls; the copy is the full prompt. CLI install commands may not be accurate across systems, so DSH is the safer route.把上面这条消息直接发给当前会话里的 DSH:它会先核对兼容性与安全性(逐条给「满足 / 不满足 / 未知」),确认没问题再安装,有高危项会停下来问你。框内可滚动,复制到的是完整提示词;安装命令不一定准确,发给 DSH 更稳。
- Only 2 stars - very few users, little community feedback星标只有 2,几乎没人在用,遇到问题缺少社区反馈
- Desktop client: installation downloads an executable - verify the publisher and checksums桌面客户端:安装会下载可执行文件,请核对发布者与校验和
DSH walks through these 9 checksDSH 会逐条核对这 9 项
Compatibility兼容性
- DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
- External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
- Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册
Security安全性
- Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
- Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
- curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
- Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
- Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
- Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式
Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add "github:liveqte/dsh-lan-proxy#main"
把 liveqte/dsh-lan-proxy 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-lan-proxy
把 dsh 只监听回环地址的 Web UI 通过 0.0.0.0 反代暴露到局域网;
开关、状态与启动日志直接嵌入 dsh 设置页,随 dsh 启停,无需单独进程。
界面预览
设置页「局域网反代」一级菜单面板(监听已开启时):

安装
dsh plugin --profile web add "github:liveqte/dsh-lan-proxy#main"
bundle 层栈在启动时组合,装完重启 dsh web 生效。验证:设置页导航「局域网反代」一级菜单出现,启动日志无 plugin tree failed to load。
功能
| 能力 | 说明 |
|---|---|
| 局域网反代 | 将 dsh Web UI 同时监听 0.0.0.0:<port>,局域网内任何设备经 http://<局域网IP>:<port>/ 访问 |
| 网页端目录选择 | 禁用原生 OS 文件夹对话框,固定为网页内嵌「选择工作区目录」浏览(可在远程机器上选宿主目录) |
| 免配置开关 | 设置页「局域网反代」tab 一键开关,即时热启停,无需重启 dsh |
| 端口配置 | tab 内直接修改监听端口与上游端口,保存即生效 |
| 协议适配 | 自动改写 Host/Origin 为回环、桥接 WebSocket(RFC6455 帧编解码)、注入 crypto.randomUUID polyfill(局域网 HTTP 非安全上下文缺失) |
| 浏览器鉴权适配 | 自动完成 dsh web 的 token↔cookie 交换,局域网首次访问即无感(与本地 localhost 等价),无需手动打开带 token 的链接 |
| 状态与日志 | 2 秒轮询的运行状态、上游可达性探测、局域网地址列表与启动日志,内置「重启反代」按钮 |
使用
- 开关:设置页 →「局域网反代」tab,切换「监听局域网访问」。
页面开关的即时状态写入运行时文件(
$DSH_HOME/profiles/web/lan-proxy.runtime.json, 优先级高于配置默认值),立即生效。 - 局域网访问:
http://<局域网IP>:<监听端口>/。 - 端口:tab 内可直接修改监听端口(所有网卡)与上游端口
(
127.0.0.1,0表示自动取 dsh 实际监听端口)。 - 开关与端口修改接口仅限本机回环地址调用;局域网访问只读状态与日志。
- 选择工作区:装上本插件后,侧边栏 / 会话区的「添加工作区」改为网页内嵌目录浏览器
(宿主文件系统列举 + 新建文件夹),不再在 dsh 进程所在机器上弹出 OS 对话框。
这样局域网/远程浏览器也能选目录;本机
127.0.0.1访问同样走内嵌对话框。 实现方式:bundle 层禁用directory-picker(auto),并挂载官方directory-picker-browse双面(host 列举/创建 + client 对话框)。
配置项
| 键 | 默认值 | 说明 |
|---|---|---|
enabled |
false |
监听局域网访问(配置默认值;页面开关优先级更高并持久化到运行时文件) |
port |
3080 |
反代监听端口(所有网卡) |
upstreamPort |
0 |
上游端口,0 = 自动取 dsh 实际监听端口 |
maxLogLines |
500 |
页面日志缓冲行数 |
bypassRules |
见下 | 前端 JS 改写规则表(屏蔽 dsh 对非回环来源的设置页封锁) |
配置覆盖写在 profile 层的 cordis.patch.yml(id: lan-proxy 行的 config),
不需要修改仓库内文件。
设置页非回环封锁的绕过(bypass 规则)
dsh 0.1.x 的浏览器端只为回环地址加载设置面(connection.isLoopback),从局域网
访问「设置 → 模型」会得到:加载提供方目录失败: settings are unavailable in this browser。反代在转发 /plugins/<id>/client.js 字节流时,按规则表改写其
JS,把封锁判定固定为回环;服务端 /api 信任栅栏按 Host 头判定,反代已把 Host
改回 127.0.0.1,因此服务端天然放行。这是改动浏览器实际执行字节的补丁,与插件
加载顺序无关。
内置规则(dsh 0.1.x):
| id | 改写目标 | 动作 |
|---|---|---|
dsh-client-connection:isLoopback-mirror |
把 dsh-client-connection client 里的 isLoopback: pageLocation… 改为 isLoopback: true |
设置/模型/凭据面视为回环,正常读写 |
官方换一种封锁方式时,在配置里加一条 find/replace 规则即可(或覆盖
bypassRules 表),旧规则 find 不中会自动跳过并在日志面板提示。规则状态
(命中次数/最后错误)出现在「局域网反代」设置页的运行状态里。
插件管理
已装插件用 plugin-registry 的浏览器管理面板(轻量控制台)统一管理:查看、
安装、卸载插件,调整 bundle 层栈与 insert 行,启停插件,全程无需手改配置文件。
安装:
dsh plugin --profile web add <plugin-registry>/packages/plugin/console
Nexus-Aethra/Nexus-Terminal
yannicksong0106/dsh-550c-boot
omdsh-dev/dsh-advisor
shuguang1994/project-blueprint
SummerSec/AI-Inner-Os
wlj521/dsh-ui-tweaks
titanwings/dsh-better-browser