dsh-remote-web-ui 使用指南
为 dsh web GUI 增加扫码配对的手机端和 PC 远程访问通道、已授权设备管理与一键公网隧道能力,并附带 dsh-web-ui 全家桶的版本自更新按钮。
本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。
本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。
快速上手
dsh-remote-web-ui
— 源: plugin_wiki.wiki_content
安装与验证
dsh plugin --profile web add @linxin666/dsh-remote-web-ui
复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。
— 源: plugins.install
关键要点
- Web 终端:xterm.js 远程终端,实时输出,窗口大小自适应;
- 文件传输:SFTP 上传 / 下载,有进度条,能浏览远程目录;
- 端口转发:本地隧道直连远程内网服务(数据库、API、管理后台),只监听 127.0.0.1;
- 集群执行:一条命令并发跑多台主机,按别名 / 环境 / 标签过滤;
- Agent 直连:Agent 和面板共用同一份主机配置,对话里说一句「连一下 xxx 看看状态」,智能体就去执行远程命令。
— 源: plugin_wiki.readme_zh (fallback readme_raw)
常见问题
这个插件能做什么?
在 dsh web 侧边栏底部新增一个手机图标入口;点开后是一块面板,铸出一枚一次性二维码,分别给出手机(/m/?pair=...)与电脑(/?pair=...)两条配对链接,扫码或打开链接后手机进入专属的 /m/ 移动端界面,电脑则通过门控的 /remote/api 通道运行完整 Web GUI;同时面板展示已配对设备列表(User-Agent 推断的设备名、在线/离线、单台取消配对)、姿态探测警告与 dsh-web-ui 全家桶一键更新按钮。
在家能用吗?需要什么前提?
仅本机回环(127.0.0.1)能直接使用;若手机要与电脑不在同一网络,需要把 dsh web 启动为绑定全部接口(dsh web --host 0.0.0.0),或在设置里手动填一个公网地址(publicBaseUrl),或直接打开"自动公网隧道"由插件自带 cloudflared 二进制生成 Cloudflare quick tunnel URL。source/index.ts:95-102 / README.zh.md:33-36。
安全模型是什么?配对令牌能反复用吗?
同一时刻只有一枚有效的一次性令牌;任何一台设备接受后另一条链接立即失效,再次使用已被接受的令牌会被拒绝;超过 tokenTtlMs(默认 10 分钟)也自动失效。点"停止"会撤销所有已配对设备的会话,下一次请求即被 403。中止/重启 dsh web 后已配对设备的 cookie 仍可恢复,但当前二维码会作废,需要刷新。source/src/pairing.ts:7-18 / source/src/index.ts:73-83、129-141。
手机界面和小屏幕浏览桌面版有什么区别?
手机走的是插件自己实现的 /m/ 独立小屏客户端,不是把桌面 Web GUI 塞进手机——列表分页、消息按需拉取、对话折叠(深度思考/工具调用隐藏为可展开行)、输入框有模型选择、权限选择、显示开关与上下文用量 chip;并能安装为 PWA,但 Service Worker 只缓存静态壳与离线页,运行时仍要求 DSH 在线。
局域网里未配对的电脑直接访问会被挡住吗?
默认情况下会。当 requirePairingForLan 打开(默认),任何从非回环地址(局域网或公网隧道)打开的桌面 Web GUI 会改走门控的 /remote/api,必须携带有有效设备配对 cookie;未配对的电脑直接看到全屏阻断页,无任何工作区数据。"停止"按钮会立即切断已配对设备。source/README.zh.md:14 / source/src/index.ts:85-93。
插件如何发现并提示 dsh-web-ui 全家桶新版本?
侧边栏加载后会静默查询 npm registry,对比 host 进程下安装的 @linxin666/dsh-* 包的版本;发现可更新版本时,更新按钮出现圆点与"发现新版本,检查更新"提示;点开面板确认后执行 pnpm update --latest(在所属 dsh profile 内运行),并核验版本真的发生了变动再报告成功;最后请用户重启 dsh web 让新版本生效。source/src/update.ts / source/src/update-routes.ts:53-65。
自动公网隧道会暴露我的服务吗?需要账号吗?
是的,自动公网隧道确实让任何拿到该 URL 的人可以加载静态页,但所有数据通道(/m/api 与 /remote/api)都以已配对设备 cookie + 方法白名单作为真正的围栏——未配对调用一律 403。配置不需要 Cloudflare 账号或域名;cloudflared 二进制随包发布(依赖 cloudflared ^0.7.3)。source/README.zh.md:88-95 / source/package.json:59-62。
一台手机能同时连吗?上限是多少?
可以,但有上限。maxDevices 配置项(默认 4,最小 1 最大 64)控制同时保留的已配对设备会话数,超过时按最旧淘汰;7 天没有任何心跳或受门控请求的设备会自动失效。source/src/pairing.ts:55-56 / source/src/index.ts:131-133。
把 dsh web 部署在公网要注意什么?
插件会主动探测 SDK 的 /api 信任围栏——一旦发现 --trusted-host 让某主机绕过围栏、配对之外的来源也能读 /api,会在面板用红色横幅加 CRITICAL 日志告警;建议移除对应来源的 --trusted-host 并改用本插件的配对通道。Cloudflare quick tunnel / Tailscale Serve 等不转发 SSE 的隧道会让手机聊天实时消息降级为短间隔轮询,cloudflared named tunnel 或 ssh -L 端口转发能保留 SSE。source/src/index.ts:370-405 / source/README.zh.md:121。
— 源: plugin_wiki.faq_json
兼容性
- DSH: 未声明(package.json 无 dsh.engines;通过 devDependencies 依赖 @deepseek-ai/dsh-client-* ^0.1.0-rc.8 等 SDK rc.8,详见 package.json:70-81)
- Node: ^22.19.0 || >=24.0.0(packages/dsh-remote-web-ui/package.json:7-9)
— 源: plugin_wiki.compatibility_json
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则