mervyn-teo/dsh-plugin-qr-connect ↗★ 0
dsh-plugin-qr-connect
DeepSeek Harness (DSH) dynamic Cordis plugin: a small sidebar button above Settings that shows a QR code of the web UI's LAN address so phones on the same network can connect.
AI 分析
核心用途是简化移动端连接。适合需要通过扫码快速在手机上安全打开 DSH Web UI 的用户,插件内置了小型的鉴权反向代理以确保连接安全。
インストール
検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗
ドキュメント
README 全文を読む ↗dsh-plugin-qr-connect
English | 中文
A DeepSeek Harness (DSH) dynamic Cordis plugin that adds a QR-code button above the Settings button in the sidebar footer. It runs a small auth-gated reverse proxy so a phone on the same network (or the internet) can scan a QR code and open the web UI securely.
What it does
- Adds a full-width button (
sidebar.footer.action, idqr-connect) stacked above the shipped Plugins button. - Opens a fading panel with two QR codes:
- Local network —
http://: /?auth=. - Public internet —
http:// : /?auth=(blue).
- Local network —
- The reverse proxy (a child
nodeprocess on0.0.0.0:) validates the secret, issues a session cookie (default 30 days), and forwards to the loopback web UI. - The secret rotates every 30s by default and the QR refreshes to match
(configurable;
0disables auto-refresh). - Click a QR to copy its link; the public QR has an info tooltip.
- A QR connect card under Settings → Plugins configures the proxy port, session length, and refresh interval.
- English and Chinese UI via DSH's locale service.
Files
| File | Purpose |
|---|---|
host.js | Host half — value for code.host in cordis_define. |
client.js | Client half — value for code.client in cordis_define. |
package.json | Package metadata (dsh-plugin keyword + dsh manifest). |
Loading it
This is a dynamic Cordis plugin: it runs inside a live DSH session and does
not survive a process restart. Load it from the DSH web GUI (or your agent) with
the cordis_define / cordis_run flow:
- Define a new plugin with
code.host= the full contents ofhost.jsandcode.client= the full contents ofclient.js(anidPrefixsuch asqrconnis enough — the host allocates the final ID). - Run the returned package and approve the client half in the UI.
The two .js files are the function bodies the dynamic runner expects (they
are not standalone Node/browser modules), so pass their contents as-is — do not
import them.
Requirements
- DSH with the
shell,subprocess,fs, andwebServerservices mounted. nodeon the DSH host'sPATH, andcurlfor the public-IP lookup.- The scanning device must be able to reach the proxy port (a host firewall may need an allow rule); the public QR also needs internet reachability (port-forwarding).
Security
The proxy exposes the full agent shell to anyone who can reach the port, gated only by the 30s secret and the session cookie. Use a short session length and treat this as a trusted-network convenience, not a hardened remote-access layer.