跳过主要内容
C

dsh-ssh-workspace

czp0312/dsh-ssh-workspace

在当前 DSH 窗口的原生侧栏中管理 SSH / WSL / Docker 项目。目录按环境归组,每个项目独立选择全量远程后端或本机 Agent 轻量模式;共享全量连接统一管理,轻量连接独立控制,并可比较、选择性同步本机 Skill。主要面向 Windows 桌面客户端与装有 Python 3、Bash 的 Linux / WSL / Linux 容器远端(macOS / Linux 本机未实机验证);轻量 SSH 需已有 SSHFS 挂载,Docker 尚未在真实守护进程上验收。

安装

dsh plugin --profile web add github:czp0312/dsh-ssh-workspace

README

DSH SSH / WSL / Docker Workspaces

把 SSH 服务器、WSL 和 Docker 容器里的项目,直接放进 DeepSeek Harness 当前窗口的项目侧栏。

不用为每台机器再打开一个 DSH 窗口。在左侧 远程工作区 中添加目录,就能与本机项目一起管理。需要完整的远程开发环境时,让 Agent、终端和任务在远端 DSH 中运行,并按需把本机 Skill 同步过去;希望保留本机 Agent 和模型配置时,可以使用本项目的轻量模式。

npm 安装包 · 使用指南 · 问题反馈 · MIT License

按环境归组的远程项目:同一 WSL 下各项目独立选择模式,共享全量连接统一管理

截图来自真实 DSH 和 WSL 连接,使用独立的公开演示项目。

0.3.3 已调整管理界面布局,当前截图采集自 0.3.2,待重新实机截图。

可以做什么

远程项目,也在原生侧栏里

  • 同一个窗口管理本机、SSH、WSL 和 Docker 项目:使用 DSH 原生工作区和会话列表。
  • 独立的左侧入口:点击「远程工作区」即可添加、浏览和管理连接。
  • 环境下管理项目:同一 WSL、SSH 地址或 Docker 容器的目录放在可折叠的环境父项下。可按名称、设备、路径搜索,也能按模式、连接方式和离线状态筛选;原生侧栏继续使用 DSH 的工作区视图。
  • 同一设备添加多个目录:在环境标题旁点击「添加项目」,复用连接信息并选择另一目录。多个全量项目可共享实际后端,统一连接、断开和补充认证;界面列出操作影响的项目,搜索隐藏的项目也计入。
  • 模式属于项目:环境没有统一运行模式。同一 WSL 中可以同时保留全量的开发项目和轻量的脚本项目;轻量项目独立控制连接。
  • 远程目录浏览:直接输入项目绝对路径,或浏览目录后添加。
  • 可识别的远程标记:项目标题旁显示主机图标,悬停可查看目标、连接状态和运行模式。

图标颜色会随连接状态更新:绿色为已连接,灰色为未连接,黄色为连接中,红色为连接异常。保存过项目,并不代表它当前在线。

轻量、全量两种模式,按项目选择

轻量模式是本项目的特色能力:继续使用本机 Agent、模型配置和 DSH 可见的 Skill,只把文件和项目命令放到远端。全量模式适合把 Agent、终端和任务都放在服务器、WSL 或容器里运行的场景。

能力轻量模式全量模式
远端安装 DSH不需要首次连接自动部署
Agent 和模型配置使用本机 DSH使用远端 DSH
项目文件WSL 共享、SSHFS 或 Docker 的已有共享/挂载远端原生文件访问,无需 SSHFS
本机 Skill沿用本机 DSH 的技能,脚本仍受远程执行环境限制可勾选同步,比较差异后更新
执行命令远程 Bash,每次独立执行远端 DSH 原生工具
原生终端、后台任务、PTC、子代理不支持,使用 Native 工具模式接入远端 DSH,具体能力取决于其配置
WSL 需要 SSH 服务不需要不需要

模式以后也能逐项目切换。 点击项目行中的「项目模式」,在「此项目的运行模式」中重新选择,再点击「以轻量模式连接」或「以全量模式连接」。只为当前项目连接另一模式,同一环境的其他项目保持原模式;切回已有全量入口会复用健康连接,不强制重连其他项目。两种模式使用同一个远程目录,分别保留工作区入口和会话历史;切回原模式后,可以继续原来的对话。

切换模式不会迁移旧对话,也不会停止原模式中正在运行的任务。SSH / Docker 切回轻量模式时,需要有对应的共享或挂载路径。

每个项目独立设置运行模式,其他项目与原有会话保持原样

全量模式沿用 DSH 原生的会话、文件预览与终端体验,远程与本机请求按项目身份分流;连接失败时会明确报错。项目即使没有会话,也会出现在侧栏。轻量模式则专注于沿用本机配置、降低远端负担:适合快速修改、检查日志、运行测试和使用本机规范类 Skill。

选择本机 Skill,同步给远端 Agent

在已连接的全量工作区中点击 同步 Skill,即可查看本机默认 Agent 预设能发现的用户技能和自定义技能:

  • 按需选择:支持搜索、逐项勾选、选择缺失项和清空选择。
  • 先比较再同步:显示「远端缺少」「内容不同」「已一致」或不可同步的原因;默认只选中缺失项。
  • 更新需要明确选择:允许覆盖后,仍需另外勾选内容不同的技能,不会自动选中覆盖。
  • 携带技能资源:同步指令与技能目录内的脚本、参考资料和资产,保留可执行权限;不复制 .env、Git、依赖目录或缓存。
  • 保留远端独有技能:只写入所选条目。两端内容变化或连接变化后,需要刷新列表,避免覆盖刚修改的内容。

同步到远端用户技能目录,同一远端用户的其他项目也可使用;项目级同名技能仍按 DSH 的优先级生效。脚本需要的 Python 包、可执行程序和系统路径需在远端准备。同步不会把 Windows 程序或本机 MCP 一起搬过去。

真实 DSH 界面中的 Skill 选择与差异比较

Docker 也作为远程项目连接

支持三种入口:本机 Docker、已配置的 Docker Context,以及 SSH 服务器上的 Docker。可读取容器列表、指定容器内用户、浏览项目目录;容器无需单独开放 SSH 端口。

  • 全量模式:通过 docker exec 在容器内运行 DSH,使用容器内的文件、终端和任务。
  • 轻量模式:使用已有 bind mount 或其他双向共享路径访问文件,本机 Agent 通过 docker exec 执行项目命令。
  • 稳定的容器身份:首次连接保存完整容器 ID,名称用于展示。同名容器重建后需要重新添加,旧会话不会悄悄连到另一个容器。
  • 明确的生命周期:连接已有的运行中容器;不会代替你启动、停止或重建容器。断开全量连接不会停止容器及其中的 DSH。

真实 DSH 客户端中的 Docker 连接表单

SSH 支持密码、密钥和证书

轻量和全量模式均提供四种登录方式:

登录方式如何使用
自动选择沿用本机 OpenSSH 配置、默认私钥或 ssh-agent,支持 ~/.ssh/config 的 Host 别名
仅密码输入 SSH 登录密码,只尝试密码认证
密钥选择或填写本机 OpenSSH 私钥路径;加密私钥可填写口令
证书使用 OpenSSH 用户证书及配套私钥,需要服务器信任签发 CA

桌面版支持选择密钥文件。密码和私钥口令只保留在本机 DSH 进程内,重启 DSH 后按需重新填写;连接记录只保存密钥和证书的路径,不上传私钥内容。

SSH 登录表单提供登录方式、私钥路径和口令设置

连接、断开、重连都有明确结果

  • 打开项目:进入该项目的原生会话输入页;DSH 会复用可用的空白会话,继续旧对话请从侧栏选择原会话。打开失败会保留项目行并显示原因。
  • 全量连接:在环境内的「共享全量后端」统一连接或断开,显示全部受影响项目。不同用户或连接身份的后端分别显示,不能仅凭主机名称共用连接;「⋯」菜单提供重新连接和连接认证。
  • 轻量连接:每个项目独立连接或断开;「项目模式」用于补充凭据或切换模式。
  • 断开:保留项目入口、文件和历史。手动断开后不会被状态刷新自动连回,重启客户端后也保持断开。
  • ⋯ → 移除登记:确认后从项目列表撤下该模式的入口,保留远端文件和会话历史。
  • 远端登记失效:如果目录已在另一端的 DSH 中移除登记,项目行会显示异常并提供「重新添加目录」。恢复时使用原目录;旧会话不会悄悄关联到新的工作区身份。

全量模式断开的是本机连接隧道,远端 DSH 和任务继续运行。共享这个后端的全量项目会一起离线,轻量项目保持原状态;环境内有在线和离线项目时显示「部分连接」。轻量模式断开会取消插件正在执行的远程命令,不会卸载你管理的 SSHFS 挂载。

断开共享全量连接后,两个全量项目离线,轻量项目保持在线

安装

插件版本 0.3.3,已实机验证 DSH 0.2.2-rc.1。Windows 桌面客户端已验证全量项目侧栏显示;独立 WSL 项目已验证远端文件、终端、附件、断开重连及全量 → 轻量 → 全量后原会话保留。Skill 同步也已通过真实 DSH / WSL 验证。Docker 已完成连接参数、认证、容器身份和界面回归,当前测试环境没有可用的 Docker daemon,尚未完成真实容器验收。0.3.2 进一步实测了环境分组、共享连接、逐项目模式往返、筛选影响范围和窄布局。0.3.3 仅重构管理界面与交互,远程执行、连接存储和路由逻辑未改动,已通过类型检查、构建和客户端回归测试,未重新进行真实客户端验收。DSH 声明的兼容范围不等于所有版本都已测试。

安装到官方桌面客户端的 desktop profile:

dsh plugin --profile desktop add dsh-ssh-workspaces@0.3.3

使用 dsh web 时安装到 web profile:

dsh plugin --profile web add dsh-ssh-workspaces@0.3.3

安装后重启客户端或 dsh web 一次。 后续添加和打开远程项目都在原窗口中完成。自定义启动方式请将 profile 名替换为实际使用的名称。

找不到 dsh 命令时,可在官方客户端的「应用 → 管理 dsh 命令」中配置。也可以在客户端的插件管理界面中,使用 npm 包名 dsh-ssh-workspaces 安装。

第一次使用

添加 WSL 项目

  1. 点击左侧 远程工作区 → 添加项目 → WSL,选择已安装的发行版。没有已保存项目时,会直接显示添加表单。
  2. 选择轻量或全量模式。只需要本机 Agent 配合 WSL 文件和命令,可以先用轻量模式。
  3. 填写 Linux 项目绝对路径,例如 /home/dev/projects/demo,也可以点击「浏览目录」。用户名留空时使用发行版默认用户。
  4. 点击「测试连接」,再点击「添加到工作区」。
  5. 添加成功会返回项目列表。点击「打开项目」进入会话,之后从侧栏选择原会话继续工作。

WSL 中需要 Python 3 和 Bash。全量模式首次连接还需要下载 Node / DSH;已有符合要求的 Node 时会复用。

添加 SSH 项目

  1. 在终端用系统 ssh 登录目标机器,核对首次连接的主机指纹。
  2. 点击 远程工作区 → 添加项目 → SSH,填写主机或 SSH 别名、端口和用户名。
  3. 选择登录方式,并填写密码、私钥或证书信息。
  4. 选择运行模式并填写远程项目目录。轻量模式还需准备 SSHFS 挂载;全量模式无需挂载。
  5. 测试连接,点击「添加到工作区」,然后打开项目。

全量模式使用远端自己的模型配置。 插件不会复制本机 API Key、登录信息或第三方插件。首次使用前,请为远端 DSH 配置可用的模型提供方,详见全量模式准备。

添加 Docker 项目

  1. 点击 远程工作区 → 添加项目 → DOCKER,选择 Docker 所在位置。
  2. 本机 / Context 方式可填写已有 Context 名称;SSH 方式填写宿主机的登录信息。
  3. 点击「读取容器」,选择运行中的容器,或直接填写名称 / ID。
  4. 填写容器内项目目录,按需指定容器内用户。
  5. 选择运行模式。轻量模式填写已与容器目录双向共享的本机路径;全量模式无需挂载。
  6. 测试并添加。连接全量项目后,可从项目行的「同步 Skill」选择本机技能。

使用前了解

  • 当前主要面向 Windows 桌面客户端和 Linux / WSL / Linux 容器远端。 全量后端要求 glibc Linux;自动安装 Node 支持 x64 / arm64。Alpine / musl 容器可考虑有共享路径的轻量模式。macOS / Linux 本机尚未实机验证。
  • 轻量 SSH 的挂载必须真实存在。 普通本机文件夹不是 SSHFS 挂载;指定密码、密钥或证书时,需先用同一凭据建立挂载。
  • 全量部署不需要 root。 DSH 安装在远端用户目录,服务只监听其 127.0.0.1,经 SSH、WSL 或 Docker exec 通道连接。
  • 首次 SSH 指纹核对在终端完成。 插件遵循严格主机密钥校验,不会跳过未知或变更的主机指纹。

详细的认证、Docker 环境、Skill 同步和故障处理见使用指南。与 ZCode 的能力对应关系及当前边界见远程能力对照。

开发与反馈

欢迎通过 GitHub Issues 反馈问题。请说明插件版本、DSH 版本、操作系统、连接方式(SSH / WSL / Docker)、运行模式和复现步骤;日志与截图中请先移除凭据及私人项目内容。

源码构建、验证和实现说明见开发指南。参与维护请阅读 AGENTS.md,功能变更应同步更新使用文档和截图。

同窗远程项目的交互参考了 ZCode。项目基于 DeepSeek Harness 的插件机制开发,轻量 SSH 可搭配 SSHFS-Win 使用。

相关插件