dsh-ssh-workspace:在 DSH 里用 SSH 打开远程 Linux/macOS 项目

前言

DeepSeek Harness(DSH)默认在本机工作区里跑文件搜索、Bash 和 Agent 工具。实际开发里,代码往往在另一台 Linux 或 macOS 机器上:本机只有客户端,项目、依赖和运行环境都在远端。常见做法是单独开 SSH 终端、再在本地另开 DSH,两边切换,目录选择和权限模型也对不齐。

下面介绍社区插件 dsh-ssh-workspace(维护者 Very12345,GitHub:Very12345/dsh-ssh-workspace)。它在 DSH 客户端侧接入系统 OpenSSH 配置,用同一套「选目录、开项目」界面区分本机与 SSH 电脑;远端负责项目文件、搜索和 Bash,本机仍负责界面与会话。插件分类为客户端,SkillHub 目录页:https://www.skillhub.cn/plugins/Very12345/dsh-ssh-workspace。

这是什么

dsh-ssh-workspace 的定位是:为 DeepSeek Harness 提供 Remote SSH 工作区,支持从 SSH config 发现主机并在 UI 里选远程项目。简介原文为:Remote SSH workspaces for DeepSeek Harness with SSH config discovery and project selection。

本机与远端分工明确:本机负责界面和会话;远端负责项目文件、搜索和 Bash 命令。每个远程项目对应一个本机占位目录,用于 DSH 工作区身份和会话记录,不会把远程文件同步到本机;项目显示名称会包含电脑名称。

核心功能

SSH 主机与工作区选择

  • 在 设置 → 远程工作区 中,可从 SSH config 添加电脑,或手动填写地址、用户名、端口;支持密钥文件路径和跳板机(ProxyJump)。
  • SSH config 由系统 OpenSSH 解释,支持 Host、Include、IdentityFile、ProxyJump;通配符主机不会作为可选电脑;未找到的别名可手动添加。可在设置页指定另一份配置文件。插件只读 SSH config,不写回,不读取私钥内容,不保存密码。
  • 新建项目时,在 选择工作区目录 标题旁的下拉框选 本机电脑 或 SSH 电脑,沿用官方双栏目录浏览器(面包屑、路径编辑、新建文件夹、隐藏文件开关);本机与 SSH 共用同一界面,不再弹出单独选电脑的中间窗口。
  • 侧栏远程工作区文件夹图标右上角有连接状态点:灰(未连接/未知)、黄(连接中)、绿(已连接)、红(断开);悬停可看说明。本机工作区无此标记。

远端环境与 Agent Host

  • 首次连接需点击 初始化环境。插件从微软官方下载固定版本 VS Code CLI 1.140.0,保存到远端 ~/.dsh-ssh-workspace,运行 Agent Host;远端无需安装 VS Code 桌面版或 DSH。下载与运行环境遵循 Microsoft VS Code Server 条款。
  • Agent Host 采用 AHP 0.9 协议(依赖 @microsoft/agent-host-protocol 0.9.0)。从 0.1.11 起,连接优先复用插件目录中已验证的 VS Code Server 1.140.0 缓存,再尝试其他兼容缓存;仅缓存不可用时才在线启动 CLI,单次最多等待 45 秒。
  • 远端初始化支持架构:Linux x64/arm64、macOS Intel/Apple Silicon。远端需要 Bash、curl、tar 和 rg。

会话、工具与权限

  • 远程项目使用 Bash,并沿用 DSH 原生的 只读 / 工作区内修改 / 完全访问 会话权限;超出权限的操作仍走工具层原生审批,单次批准不改变会话默认值。标准/创造/PTC 使用原生 Bash 提权参数;极简模式沿用官方持久终端的会话权限切换。
  • 标准、创造/cordis、PTC 和极简模式均提供远程 Bash;PTC 保持 run_code 工具呈现方式,极简模式保留持久 Shell 状态。
  • 文件读写和原生 glob / grep 在远端执行。本机项目继续用 DSH 原有沙箱执行器;仅对远程会话安装工具覆盖,其他工具、原生审批及本机目录选择保留。
  • Linux 远端探测 Bubblewrap;不可用时使用随包提供、经摘要校验的 DeepSeek 官方 Landlock runner 0.1.2;macOS 使用 Seatbelt。runner 上传到远端插件缓存,不需 sudo。沙箱不可用时受限命令会明确报错,不会自动升权。
  • 远程项目的 AGENTS.md / CLAUDE.md 规则发现以所选远端项目目录为边界,不沿本机占位目录向上找项目根。

数据与边界

  • 连接和映射保存在 DSH home 的 ssh-workspace/catalog.json;占位目录在 ssh-workspace/projects/;独立删除标记在 ssh-workspace/deleted-projects/。
  • 侧栏删除远程工作区会同步移除 SSH 目录映射并保存删除标记;远端项目文件和 DSH 会话日志保留。移除电脑会停止连接并撤销工作区执行路由,之后访问这些项目会明确报错,不会转为本机执行。
  • 不在本版本范围内:远端 Windows、文件实时监听、SSH 密码弹窗、远程桌面。桌面操作和浏览器插件仍控制 DSH 所在的本机。已维护的 Git Bash 开关仅作用于本机项目,远程由本插件接管。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议自行查看仓库源码与许可证(原创代码 MIT;src/provider/ 传输代码基于 Yan-Zero/dsh-remote-ssh 的 Apache-2.0 快照,详见仓库 NOTICE)。

宿主要求:最低 DSH 0.2 系列;Node.js ≥ 22.15。包内已提交可运行 JavaScript,Git URL 安装不需要 prepare、postinstall 或构建脚本。

在 DSH 插件页面用 GitHub 地址安装:

https://github.com/Very12345/dsh-ssh-workspace

或使用官方 CLI 向指定 profile 安装(资料原文):

dsh plugin --profile desktop add github:Very12345/dsh-ssh-workspace

典型用法

经过上面的安装步骤后,可按 README 顺序启用远程工作区。

  1. 在系统终端确认 ssh 你的别名 可以免交互登录,主机密钥已确认;使用加密密钥时需先加入 ssh-agent。
  2. 打开 设置 → 远程工作区,从 SSH config 添加电脑,或手动填写连接信息。
  3. 首次连接点击 初始化环境,等待远端 CLI 与 Agent Host 就绪(依赖网络与微软下载站;已有兼容缓存时不应被 DNS 问题单独阻断)。
  4. 新建项目:在 选择工作区目录 旁的下拉框选目标 SSH 电脑,浏览远端目录并 打开。
  5. 日常开发与普通本机项目一样切换会话权限;远程终端面板在远程会话中启动远端 Bash,本机会话仍用原有 Shell。

设置页「远程项目」可移除单个项目;「清理本机残留」只尝试删除已撤销映射的空占位目录。目录视图和工具输出里的本地占位路径是远端地址映射,不代表文件已复制到本机。

适用场景与注意

适合:本机跑 DSH 桌面客户端,项目在远程 Linux/macOS 服务器或开发机上,且已具备可用的 SSH 密钥登录与 OpenSSH 配置。

使用前注意:

  • 普通 SSH 登录成功不等于 Agent Host 已就绪;新环境初始化依赖远端 DNS 与微软下载站,但不应阻止已验证缓存的复用。
  • 插件不会修改系统 DNS、关闭主机密钥校验或中断其他 SSH 会话。
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;插件星标与版本以你安装时仓库与目录页为准(资料中 package 版本为 0.1.11)。

结尾

dsh-ssh-workspace 把 DSH 的项目选择和工作区权限模型延伸到 SSH 远端,本机界面与远端执行分离,并明确占位目录与删除、断连后的行为边界。需要安装或源码细节时,可看目录页 https://www.skillhub.cn/plugins/Very12345/dsh-ssh-workspace 与 GitHub https://github.com/Very12345/dsh-ssh-workspace。

羽毛球分组比赛记分
小程序二维码

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

小夜