DeepSeek Harness 插件:通过 SSH 运行远程工作空间

DSH (DeepSeek Harness) 的核心设计理念之一是插件化。当需要在远程服务器进行开发,但又希望保持本地会话、Web GUI 和 $DSH_HOME 不变时,传统的 SSH 工具链往往无法满足这种“本地控制、远程执行”的集成需求。

dsh-remote-ssh 正是为了解决这个问题。它是一个 DSH 插件,允许你将工作空间的文件 I/O 和命令执行转移到 SSH 目标主机上,同时保持会话管理、Web GUI 和本地配置在当前机器运行。

核心能力

该插件提供以下功能:

  • SSH 连接管理器:在 Web GUI 中添加、测试或移除连接。支持密码、私钥、SSH Agent 以及 ProxyJump 链式跳转。
  • 远程目录浏览器:在 GUI 中浏览目标主机的目录树,并将任意目录“收养”为工作空间。
  • 按会话路由:会话的工作目录决定其运行的主机。ssh://<id>/<path> 与其本地占位符等价,允许多个远程主机并行运行。
  • 远程文件系统与子进程(全模式):在运行时上下文中,ctx.fs 和 ctx.subprocess 指向远程主机。Git 操作、测试、构建、读写文件均在远程执行。
  • 智能代理引导:内置代理引导,运行时会话会在上下文中声明当前所在机器。提供 ssh_exec / ssh_route_status 等接口以及 DSH_SSH_* 环境变量,避免路径误判或“空项目镜像”。
  • 凭证本地化:密码和身份密钥仅保存在本地机器的 DSH Home 中。

安装与启用

环境要求

  • 本地环境:Node.js >= 22.0.0
  • 目标主机:已安装 python3 和 bash

安装命令

注意:不要直接运行 dsh plugin add dsh-remote-ssh,该名称会解析到不同的作者,并非此插件。

请使用以下命令从 GitHub 仓库安装:

dsh plugin --profile web add github:aijunjiang/dsh-remote-ssh

首次安装注意事项(pnpm 11)

ssh2 和 cpu-features 是原生模块,pnpm 11 默认会阻止其构建脚本。首次安装时可能会遇到构建错误。

  1. 进入 Web 配置目录:
    cd ~/.dsh/profiles/web
  1. 编辑 pnpm-workspace.yaml,在 allowBuilds 下添加:
    allowBuilds:
      cpu-features: true
      ssh2: true
  1. 运行 pnpm install 重新构建:
    pnpm install
  1. 重新运行安装命令以完成注册。

使用方法

  1. 添加远程连接:打开 Web GUI 的侧边栏“工作空间”面板,点击“添加工作空间”。在目录选择器中点击“+”按钮,填写目标主机信息(主机/别名、端口、用户、认证方式、ProxyJump 等)。
  2. 浏览与收养:保存连接后,GUI 会直接展示远程目录树。选择一个目录并打开,将其设为当前工作空间。
  3. 启动会话:在工作空间中启动会话。会话将路由至该远程主机,文件和命令将在远程执行。
  4. 运行时接口:在会话的运行时上下文中,可以直接使用 ssh_exec 或 ssh_route_status 来与远程主机交互。
  5. 启动 GUI:使用 pnpm dsh web 启动插件提供的 Web 用户层。

补充说明

  • UI 增强补丁:插件目录下包含 harness-patches/,这是一组可选的 UI 增强补丁(如工作区标题后缀 home · root@… 和任务列表的 Stop 按钮)。这些补丁通过 git apply 应用到 harness 源码中,不影响核心路由功能,但依赖 DSH 基线版本兼容。
  • 兼容性:当前版本(v0.3.3)要求 DSH 基线版本为 0.1.5-rc.1。

总结

dsh-remote-ssh 解决了 DeepSeek Harness 环境下远程开发路径过长、凭证管理分散的问题。它通过 SSH 协议将执行上下文“搬运”到远程,同时保留了本地开发工具链的便利性,适合需要在远程服务器上运行 CI/CD、测试或构建任务的场景。

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

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

小夜