跳到主内容

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

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则

dsh-remote-web-ui 使用指南