前言¶
用 DeepSeek Harness(DSH)做智能体开发时,工具链往往不只在当前窗口所在的那台机器上:Linux 侧习惯放在 WSL,构建或测试可能在虚拟机或 SSH 可达的远程主机,本机桌面版里还有一套内置运行时。若每台机器各开浏览器 Tab 或各起一个 WebUI,界面、快捷键和侧栏体验会分散;要在几套 DSH 之间来回切,也缺少一个和桌面壳一致的入口。
下面介绍社区插件 dsh-remote-desks(维护者 TBChaos,MIT)。它把本机、WSL、虚拟机或 SSH 远端上另一套 DSH 的 WebUI 镜像进桌面版 DSH,用同一套界面和体验管理它们:窗口上方下拉框切换目标机器,主区显示那台机器上的完整 DSH;启动、停止、预检、更新也在插件面板里完成。镜像区域是 DSH 自己的前端(随远端版本走),桌面窗口的外壳、主题、侧栏与快捷键复用当前应用,不另造一套 UI。
这是什么¶
dsh-remote-desks 是 DSH 的客户端类插件,仓库:github.com/TBChaos/dsh-remote-desks。目录页:skillhub.cn/plugins/TBChaos/dsh-remote-desks。
一句话定位:在桌面版 DSH 内并发管理多种「远端工作台」实例(local / wsl / ssh),把选中实例的 WebUI 嵌进主区,并通过统一控制条切换机器与布局。虚拟机不单独增加 kind,走 SSH(虚拟机内 sshd)或 WSL2 发行版即可。
README 标明当前实现状态为 M0–M8 完成:本机、WSL、SSH 三类实例可并发启动、镜像、停止;面板、设置、日志、预检与容器降级链已接入,并在真实浏览器中做过界面验证(pnpm verify:ui)。插件以当前 DSH 进程权限运行;安装前应自行查看源码与 MIT 许可证。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
统一界面与管理界面¶
默认是统一界面(layout.mode: immersive):选中机器的 DSH 铺满主区,实例列表、工具栏、日志收在控制条上的「管理」里。管理界面适合配置、排障与版本更新。控制条还提供「全窗口」(官方侧栏收成窄条,远程 UI 占满整窗)与「重载」镜像载体。
三种实例类型¶
| 类型 | 含义 |
|---|---|
local |
本机 DSH;桌面版默认吸附宿主内置运行时,打开应用即「运行中」,不另起进程 |
wsl |
在指定 WSL 发行版中启动隔离 profile 下的 DSH |
ssh |
经 SSH 在远程主机(含虚拟机)上启动 DSH,支持私钥等认证配置 |
切换实例时,前一台不卸载,切回可保持连接(README 中 pnpm verify:ui 对 WS 保持有验证说明)。
窗口上方切换器¶
switcher 配置启用后,下拉框列出已配置实例的短标签与状态(运行中 / 已连接 / 未启动 / 出错)。桌面版切换器可进入标题栏区域,避免挡住远端界面输入区;镜像 iframe 内检测到嵌套时不再绘制插件浮层,避免出现第二个「本机」控件。
预检、启停与日志¶
管理界面可预检(不启动进程):检查 WSL 发行版与 node/dsh、SSH 连通与凭据、本机吸附条件等。启动后状态点变绿并显示远端端口;停止先收镜像端点再终止进程,吸附的本机实例停止镜像但不会关闭桌面应用。日志抽屉展示该实例 stdout/stderr。
更新与回滚¶
实例已停止时可用工具栏「更新」:默认目标版本与桌面版同版本(非 npm latest 标签)。wsl / ssh 默认命令为 npm i -g @deepseek-ai/dsh@{version};吸附的内置本机运行时拒绝插件内「更新」,需走桌面应用自身更新。运行中实例拒绝更新,需先停止。
安装与启用¶
插件面向桌面版 profile。安装方式以 README 为准:
# 本地目录 / npm 包 / git 地址均可;示例为本地路径
dsh plugin --profile desktop add D:\code\dsh-remote-desks
# 从 GitHub 安装:
# dsh plugin --profile desktop add github:TBChaos/dsh-remote-desks
# 也可在桌面版设置里的 Plugins 页安装
安装后需完整重启桌面应用。README 说明:宿主在启动时读入各插件客户端 bundle,仅刷新窗口拿不到新 bundle 或配置;改插件或改配置后都要重启。
重启后侧栏「插件」下会出现 「远端工作台」。实例尚未配置时,将需要的段落写入桌面 profile 的补丁配置(Windows 示例如下;路径中的用户名按本机替换):
# 文件:C:\Users\<你>\.dsh\profiles\desktop\cordis.patch.yml
- id: remote-desks
config:
instances:
- id: wsl-ubuntu
kind: wsl
label: WSL · Ubuntu-24.04
distro: Ubuntu-24.04
cwd: /home/you/project
- id: local-dev
kind: local
label: 本机
- id: build-server
kind: ssh
label: 构建机
host: 10.0.0.8
username: deploy
cwd: /srv/app
auth: { method: privateKey, privateKeyPath: C:\Users\you\.ssh\id_ed25519 }
switcher:
enabled: true
corner: top-center
offsetX: 56
layout:
mode: immersive
collapseSidebar: false
改完配置再完整重启一次。
典型用法¶
日常流程¶
- 侧栏打开「远端工作台」,或直接用窗口上方下拉框选实例。
- 在管理界面点「预检」,确认红项所缺依赖。
- 点「启动」(本机吸附项无需启动);主区出现该机器上的完整 DSH,可在镜像区内正常会话、读写与跑命令,实际发生在目标环境。
- 用下拉框或多实例并行切换;需要列表与工具栏时点「管理」。
- 排障时展开日志;不用时「停止」释放端口。可选「浏览器打开」用系统浏览器访问镜像地址。
虚拟机示例¶
虚拟机使用 kind: ssh,与远程主机相同字段:
- id: vm-ubuntu
kind: ssh
label: 虚拟机 Ubuntu
host: 192.168.64.7
username: dev
cwd: /srv/app
auth: { method: privateKey, privateKeyPath: C:\Users\you\.ssh\id_ed25519 }
下拉框显示形如「SSH · 虚拟机 Ubuntu」。
本机独立进程(不吸附)¶
若需在本机另起一份独立 DSH 进程而非吸附桌面内置运行时,在 local 实例上设置 attach: false;attach: true 则强制吸附宿主 web 端口与进程令牌。
适用场景与注意¶
适合谁:经常在桌面 DSH 与 WSL / 远程 Linux / 虚拟机之间切换、又希望主区始终是「那一台机器上的真 DSH 界面」的开发者;需要在一处预检、启停、看日志和按桌面版对齐远端 DSH 版本时。
权限与安全:SSH 与 WSL 操作依赖本机配置的凭据与 DSH 进程权限;cwd、host、私钥路径等请按环境填写,勿提交敏感信息到仓库。
平台与路径:README 示例以 Windows 桌面版路径为主(cordis.patch.yml、privateKeyPath);Linux 桌面用户需按本机 DSH profile 目录与路径习惯调整,字段语义与 README 一致。
开发与验证:源码仓库提供 pnpm verify(类型检查、构建与冒烟)、pnpm verify:ui 等脚本;改插件代码后同样需完整重启桌面应用后再测客户端行为。
结尾¶
dsh-remote-desks 把「多机多套 DSH」收成桌面版里的一个面板:同一套壳与快捷键,主区镜像远端 WebUI,上方一条控制条完成切换与全窗口。若你在 DSH 插件生态里找客户端侧的远端工作台能力,可从目录页了解摘要,并在 GitHub README 按流程安装与配置。
- 目录页:https://www.skillhub.cn/plugins/TBChaos/dsh-remote-desks
- GitHub:https://github.com/TBChaos/dsh-remote-desks