dsh-remote-desks:在桌面版 DSH 里镜像并切换本机、WSL 与 SSH 远端工作台

前言

用 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

改完配置再完整重启一次。

典型用法

日常流程

  1. 侧栏打开「远端工作台」,或直接用窗口上方下拉框选实例。
  2. 在管理界面点「预检」,确认红项所缺依赖。
  3. 点「启动」(本机吸附项无需启动);主区出现该机器上的完整 DSH,可在镜像区内正常会话、读写与跑命令,实际发生在目标环境。
  4. 用下拉框或多实例并行切换;需要列表与工具栏时点「管理」。
  5. 排障时展开日志;不用时「停止」释放端口。可选「浏览器打开」用系统浏览器访问镜像地址。

虚拟机示例

虚拟机使用 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye