cslht11/dsh-ssh-remote:DSH 的 SSH 远程工作区插件

前言

DSH 的扩展方式强调「一切皆插件」。在需要让 Agent 直接处理远程服务器文件的场景里,常见做法是先在本地终端执行 SSH 命令,再手动查看结果;如果有多台服务器,还要在多个连接和多个工作目录之间来回切换。

cslht11/dsh-ssh-remote 是面向这个场景的 DSH 插件:管理多台服务器、同时保持多个 SSH 连接,并在每台机器上选择远程工作区,让 Agent 通过 rw_* 工具查看、编辑、执行远程文件。

本文只基于已核实资料介绍。相关社区目录页是独立站点,不与 DeepSeek / 幻方构成官方从属关系。

这是什么

cslht11/dsh-ssh-remote 是 DeepSeek Harness(DSH)的 SSH 远程工作区插件,多机并行版。维护者为 cslht11,许可证为 MIT

该项目是 flymysql/dsh-remote 的 fork + 改造,非完全原创。上游版本为 0.5.10,本仓库版本为 0.6.0

插件适配 @deepseek-ai/dsh@0.1.1-rc.2,并增强 standardcodeminimalcordis 现有模式,使这些模式可以直接使用远程工作区工具。

核心功能

多机注册与并行连接

  • 多机 SSH 注册表:支持任意多台服务器,配置 host/port/user,以及密码或私钥 + 口令;注册表保存在 ~/.dsh/remote-workspaces/machines.json
  • 同时连接多台:每台机器独立连接池,互不干扰。
  • 当前机切换:rw_switch 用于切换当前机器,rw_disconnect 用于断开指定机器。

远程工作区与同步

  • 远程工作区:为每台机器选择远程目录,本地镜像位于 ~/.dsh/remote-workspaces/<host>/...
  • 双向 SFTP 同步:
  • rw_sync:远程 → 本地镜像
  • rw_push:本地镜像 → 远程

Agent 工具

rw_* 工具均支持 machineId 指定目标机;不传 machineId 时使用当前机。

工具 作用
rw_info 查看已注册机器、连接状态和当前工作区
rw_connect 注册 / 连接一台机器
rw_switch 切换当前机器
rw_pick_workspace 为指定机器设置远程工作区目录
rw_list_dir 浏览远程目录
rw_read_file 读取远程文件
rw_write_file 写入远程文件
rw_exec 在远程执行 shell 命令
rw_sync 远程 → 本地镜像同步
rw_push 本地镜像 → 远程同步
rw_disconnect 断开指定机器

设置面板

在 DSH Web 中可以通过 Settings → 远程工作区 管理机器,支持多机增删改查、测试连接、切换当前机。

安装与启用

下面是一键安装命令。安装脚本会自动安装依赖、注册 symlink,并复制/追加 standardcodeminimalcordis 的用户 preset。

git clone https://github.com/cslht11/dsh-ssh-remote.git
cd dsh-ssh-remote
bash install.sh
kill $(pgrep -f 'dsh web') 2>/dev/null; dsh web

经过上面的步骤后,打开 DSH Web,新建会话,选择 standardcodeminimalcordis 模式。这些模式已经内置 rw_* 工具,无需切换到额外模式。

安装脚本会创建 ~/.dsh/profiles/web/node_modules/dsh-ssh-remote symlink,并复制/追加各模式用户 preset。

卸载推荐执行:

bash install.sh --uninstall

手动卸载时,需要删除 symlink,并从各模式 agent.cordis.yml 中移除 SSH 插件行。

典型用法

对话方式:注册两台机器

在 DSH 会话中,可以让模型按下面内容调用工具:

rw_connect 添加 192.168.1.10(root,密钥 /Users/me/.ssh/id_rsa)
rw_connect 添加 192.168.1.20(root,密码 xxx)

对话方式:选择工作区并执行命令

rw_pick_workspace (machineId=<第一台id>, path=/srv/app)
rw_exec (machineId=<第一台id>, command='docker compose ps')

对话方式:查看、读写和同步

rw_list_dir (machineId=<第一台id>, path=/srv/app)
rw_read_file (machineId=<第一台id>, path=/srv/app/src/main.py)
rw_write_file (machineId=<第一台id>, path=/srv/app/config.yml, content='...')
rw_sync (machineId=<第一台id>)

rw_sync 会把远程工作区镜像到本地 ~/.dsh/remote-workspaces/;如果要把本地镜像写回远程,使用 rw_push

设置面板方式

打开 DSH Web,进入:

Settings → 远程工作区

在这里可以添加、删除、修改机器,测试连接,并切换当前机。

适用场景与注意

适合的使用者包括:

  • 需要在 DSH 会话中直接查看、编辑、执行远程服务器文件的人。
  • 需要同时维护多台服务器 SSH 连接的人。
  • 希望在 standardcodeminimalcordis 现有模式中加入远程工作区工具的人。

使用前需要注意:

  • 该插件适配 @deepseek-ai/dsh@0.1.1-rc.2。更换 DSH 版本时,应结合版本机制重新安装或适配。
  • 插件会以当前 dsh 进程权限运行,并涉及 SSH 凭据、远程文件读写、远程命令执行和 SFTP 同步;安装前应检查源码、依赖和许可证。
  • 本项目基于 flymysql/dsh-remote 改造,主仓库许可证为 MIT。仓库包含 vendored 组件 @deepseek-ai/dsh-client-ui-aionui-panel@deepseek-ai/dsh-ssh,均为 BSD-3-Clause;其中 dsh-aionui-panel 的面板设计参考 iOfficeAI/AionUiApache-2.0)重新实现。
  • 机器注册表保存在 ~/.dsh/remote-workspaces/machines.json,每台设备独立维护。

链接

  • 目录页:https://www.skillhub.cn/plugins/cslht11/dsh-ssh-remote
  • GitHub:https://github.com/cslht11/dsh-ssh-remote
羽毛球分组比赛记分
小程序二维码

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

Xiaoye