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