前言¶
DSH 的理念是「一切皆插件」,Web 端能力也可以通过插件接入。dsh-plugin-qr-connect 是一个 DSH Web 插件:它在侧边栏 Settings 按钮上方添加一个 QR-code 按钮,点击后展示本地网络和公共互联网两个二维码,并通过一个认证反向代理让扫描设备打开 DSH Web UI。
它解决的问题比较具体:当手机端或其他设备需要访问运行在本地的 DSH Web UI 时,可以用扫码方式进入,而不需要直接在网络上暴露无鉴权端口。下面介绍它的功能、安装方式和注意事项。
这是什么¶
dsh-plugin-qr-connect 是 mervyn-teo 维护的 DSH Web 插件,许可证为 MIT。
它作为持久 bundle 插件包含 host half 与 browser half,并在每次启动时加载。运行后会启动一个认证反向代理子进程,验证 auth secret、发放 session cookie,并转发到 loopback Web UI;WebSocket 升级也被支持,因此手机端可以看到 live updates。
核心功能¶
下面列出插件提供的能力:
- 在侧边栏
Settings按钮上方添加id为qr-connect的全宽 QR-code 按钮。 - 打开一个包含本地网络和公共互联网两个二维码的面板,链接中包含 auth secret。
- 运行认证反向代理子进程,验证 secret、发放会话 cookie,并转发到 loopback Web UI。
- 支持 secret 自动轮换和 QR 刷新,默认 30 秒;配置为
0可禁用自动刷新。 - 点击二维码可复制链接,公共 QR 带有 info tooltip。
- 在
Settings → Plugins下提供 QR connect 卡片,用于配置代理端口、会话长度和刷新间隔。 - 通过 DSH locale service 提供英文和中文 UI。
安装与启用¶
先安装插件:
dsh plugin --profile web add github:mervyn-teo/dsh-plugin-qr-connect
安装后重启 dsh web,因为 host bundles 在启动时加载。
dsh web
典型用法¶
安装并重启后,可以从界面或配置文件调整行为。
1、从 Settings → Plugins 的 QR connect 卡片调整:
port
sessionDays
refreshSeconds
2、也可以修改 cordis.patch.yml 后重启:
cordis.patch.yml
可修改的配置项包括:
port
sessionDays
refreshSeconds
publicHost
publicHost 可填 host、host:port 或完整 https:// origin;留空则自动检测。
使用前需要确认网络可达性:
- 扫描设备必须能访问代理端口。
- 使用公共 QR 时,还需要 internet reachability,可能需要端口转发。
- 公共 IP 查找需要 DSH 主机可访问
https://api.ipify.org。
适用场景与注意¶
这个插件适合作为可信网络内的便利工具,不适合当作加固的远程访问层。
需要特别注意:反向代理会向可达该端口的任何人暴露完整 agent shell,仅由 30 秒 secret 和 session cookie 保护。因此建议使用较短会话时长,并只在你信任的网络中使用。
运行要求:
- DSH 需要挂载
subprocess、fs、webServer服务。 Settings → Plugins卡片需要settings服务;如果没有该服务,卡片会隐藏,并且编辑仅运行时有效。- host half 支持 Windows、macOS 和 Linux。
安装前,建议检查源码和许可证;该插件以当前 dsh 进程权限运行。许可证为 MIT。
相关链接¶
- 社区目录页:https://www.skillhub.cn/plugins/mervyn-teo/dsh-plugin-qr-connect
- GitHub:https://github.com/mervyn-teo/dsh-plugin-qr-connect
社区目录页是独立站点,与 DeepSeek / 幻方无官方从属关系,不要把它理解为官方应用商店。