dsh-remote-desks
把本机 / WSL / 远端 DSH 的 WebUI 镜像进桌面版 DSH,并在同一界面里启动、停止这些实例。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:TBChaos/dsh-remote-desks配置
- id: remote-desks
name: dsh-remote-desks
config:
instances:
- id: wsl-ubuntu
kind: wsl
distro: Ubuntu-24.04
user: you
cwd: /home/you/project
# 慢速远端可以调大等就绪行的上限(毫秒,默认 90000)
# readyTimeoutMs: 180000
- id: local-dev
kind: local
label: 本机
# 吸附(默认,桌面版内置运行时):不拉进程,打开应用就是运行中。
# attach: true # 任何宿主都吸附
# attach: false # 永不吸附,用下面这份 profile 自己拉一个独立进程
profile: mirror-local-dev
cwd: D:\work\demo
- id: build-server
kind: ssh
host: 10.0.0.8
username: deploy
auth:
method: privateKey
privateKeyPath: C:\Users\you\.ssh\id_ed25519
switcher:
enabled: true
corner: top-center
offsetX: 56
layout:
mode: immersive # immersive 统一界面(默认)| manage 管理界面
collapseSidebar: false # true = 进统一界面时顺手把官方侧栏收成窄条
密码与口令不写进配置,只写凭据名(passwordCredential / passphraseCredential),
值放在 DSH 凭据库里。
形态与吸附有关的几个字段
| 字段 | 默认 | 说明 |
|---|---|---|
layout.mode | immersive | 面板默认形态:统一界面(镜像铺满)/ 管理界面。用户在面板上点过之后以用户为准(记在本地) |
layout.collapseSidebar | false | 进统一界面时是否顺手把官方侧栏收成窄条(浮条上的「全窗口」随时可以手动切) |
switcher.* | 见上 | 窗口角上下拉框的开关、贴角与偏移;offsetY 留空 = 跟官方 --dsh-frame-overlay-top |
实例字段里与吸附有关的两个
| 字段 | 默认 | 说明 |
|---|---|---|
attach | 留空 = 自动 | local 实例是否吸附宿主自身:留空时桌面版内置运行时自动吸附,其它宿主照旧拉进程;true 强制吸附;false 强制不吸附 |
kind | 必填 | 只有 local 参与吸附(wsl / ssh 上的 DSH 不可能"就是宿主自己");虚拟机走 ssh / wsl,不需要新 kind |
label | 同 id | 下拉框里的关键字:括注会被去掉(本机(内置运行时) → 本机),没写类型词就补一个(虚拟机 Ubuntu → SSH · 虚拟机 Ubuntu) |
两个镜像相关的配置项
mirror:
host: 127.0.0.1 # 只允许回环
portRange: [19500, 19510] # 端点在这个范围内找空位;全占满则退回系统分配
openMode: auto # 容器偏好,见下表
openMode 决定镜像用哪种容器承载,四种取值都真的生效(不是解析完就放着):
| 取值 | 行为 | 真机验证 |
|---|---|---|
auto(默认) | 直接内嵌框架,不再先试桌面原生视图(那条路要申请租约、等放行,失败还要等看门狗超时——用户实测就是"渲染时间过长") | ✅ 浏览器里实测走 iframe,且第一屏立刻开始加载 |
webview | 强制桌面原生视图(官方 webview lease,独立分区、不与应用共享 DOM);挂不上 / 没导航 / 渲染不出来都会自动降级成内嵌框架并写明原因 | ✅ 实测按预期降级并给出说明 |
iframe | 同 auto 的内嵌框架(显式写法) | ✅ 实测 iframe + 镜像 UI 渲染 |
browser | 不做内嵌,交给系统浏览器打开 | ✅ 实测面板不再内嵌、给出说明 |
rightbar | 实验性:先把主区切回对话(右栏是会话作用域的,本面板占着主区时工作面根本没挂载),再尝试把镜像开进官方右栏浏览器标签;失败会退回内嵌框架并说明原因 | ⚠️ 标签能建起来,但右栏不一定真的打开;且 ui-sidebar-browser 在 Web profile 默认禁用。故不承诺 |
面板上会写明当前用的是哪种容器,方便对着现象排查。