dsh-remote-workspace:在远程机器上管理仓库与终端

DSH 的插件化生态允许用户根据需求扩展功能。在本地开发之外,直接操作远程机器通常需要手动配置 SSH 连接、管理 Worktree,且本地工具无法直接作用于远程文件系统。dsh-remote-workspace 插件解决了这个问题,它接管了 Harness 的文件、Shell 和终端工具,将它们路由到远程目录,并在侧边栏提供终端管理入口。

插件介绍

插件名称:@lengmoxxl/dsh-remote-workspace
维护者:lengmoXXL
开源协议:MIT

这个插件通过 SSH 协议连接远程机器,并在目标机器上运行一个自安装的代理。它不仅管理远程仓库和工作树,还允许你在 Harness 界面中像操作本地项目一样操作远程项目,包括执行命令、读写文件和打开终端。

核心功能

该插件提供了以下能力:

  1. SSH 连接管理:通过 SSH 目标地址和令牌添加机器,无需在目标机器上手动安装软件。代理会自动下载、校验并更新自己。
  2. 仓库与工作树管理:可以注册任意目录作为仓库(无需 Git),创建、切换或删除工作树。
  3. 工具路由:将 Harness 的文件系统 (ctx.fs)、子进程 (ctx.subprocess)、Shell (ctx.shell) 和终端 (ctx.tty) 工具路由到远程机器。
  4. 侧边栏终端:在右侧侧边栏添加终端标签页,并支持列出或重新连接到远程机器上正在运行的 Shell。
  5. PTC 程序执行:支持在远程机器上运行 PTC 程序 (run_code),程序通过插件提供的 V8 引擎运行,不依赖目标机器的 Node.js 环境。
  6. 网络限制:出站网络访问仅限于 GitHub Releases 下载和 SSH 连接。

安装与启用

在安装前,请确保你的环境满足要求:Node.js 版本为 22.19+ 或 24+,DSH 版本为 0.1.6-alpha.2(兼容 0.1.7-rc.1 和 0.1.7-rc.2)。

1. 安装插件

使用以下命令安装插件:

dsh plugin --profile web add @lengmoxxl/dsh-remote-workspace

2. 配置兼容性

安装后,插件需要接管基础配置文件中的服务提供者。你需要修改配置文件 $DSH_HOME/profiles/web/cordis.patch.yml,禁用以下四个默认提供者:

- id: subprocess
  disabled: true
- id: fs-sandbox
  disabled: true
- id: bash-sandbox
  disabled: true
- id: pwsh-sandbox
  disabled: true

禁用这些提供者后,启动 Profile:dsh --profile web。此时插件会接管文件、Shell 和终端的路由逻辑。

典型用法

1. 添加远程机器

进入 Settings → Remote workspaces。添加一台机器,需要填写 SSH 目标地址和一个 Token(任意字符串,作为 daemon 的共享密钥)。

2. 管理仓库与工作树

注册一个仓库后,在列表中右键点击该仓库,可以使用菜单打开、关闭或移除工作树。

3. 管理终端

  • 查看与连接:在右侧侧边栏的终端按钮中,可以列出当前 Session 的所有活动 Shell,包括刷新页面后断开的 Shell。
  • 创建新 Shell:点击终端按钮可以选择创建新的 Shell,或使用状态栏的 “Manage terminals” 打开第二个标签页,在那里可以快速选择并打开一个新的 Shell。
  • 结束 Shell:只有在 “Manage terminals” 面板中点击关闭控制,才能真正结束一个 Shell 进程;关闭标签页只是将其隐藏或标记为 detached。

适用场景与注意

该插件采用高权限设计,它会以注册机器的 SSH 账户身份运行命令、打开终端并读写文件。这意味着任何持有机器 Token 且能访问回环端口 (127.0.0.1) 的人都可以模拟该账户。

环境依赖:
* 操作系统:插件代理和 PTC 主机仅支持 Linux 和 macOS 的 x86_64 架构。
* 网络:目标机器需要允许 SSH 端口转发 (-L),且仅允许访问 GitHub Releases 和 SSH 连接。

安全提示:
由于插件会禁用默认的沙箱提供者 (subprocess, fs-sandbox, bash-sandbox, pwsh-sandbox),请务必在安装前检查源码与许可证,确认其安全性。

总结

dsh-remote-workspace 为 DSH 用户提供了统一的远程开发入口。它通过 SSH 代理和工具路由,将本地开发体验延伸到了远程机器,适合需要集中管理多台服务器或进行分布式开发的场景。

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

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

小夜