前言¶
DeepSeek Harness (DSH) 的插件化架构允许开发者通过插件扩展功能。在本地文件处理或单机 SSH 操作之外,管理多台服务器通常需要频繁切换连接。dsh-ssh-remote 插件解决了这个问题,它支持同时保持多个 SSH 连接,并为 Agent 提供直接查看、编辑和执行远程文件的能力。
这是一个基于 flymysql/dsh-remote 的 fork 项目,将传统的单连接池模型改造为多池并行连接模型。
维护状态与适配版本¶
本项目已于 2026 年 9 月 10 日停止维护。
- 适配基准版本:
@deepseek-ai/dsh@0.1.2-rc.1 - 未验证版本:
0.1.5-rc.1及以后 - 许可证:MIT
代码保持现状可用(仍为 MIT),但在 DSH 0.1.5+ 版本上不保证工作。
安装¶
安装过程建议在已安装 DSH 的环境进行。只需三步:
# 1) 克隆本项目
git clone https://github.com/chai1110/dsh-ssh-remote.git
cd dsh-ssh-remote
# 2) 一键安装(自动装依赖 + 注册 symlink + 创建 SSH 增强预设)
bash install.sh
# 3) 重启 DSH
kill $(pgrep -f 'dsh web') 2>/dev/null; dsh web
安装脚本会自动完成以下操作:
1. 安装依赖(如 ssh2)。
2. 创建 symlink 到 profile 的 node_modules。
3. 为官方模式(standard、code、minimal、cordis)增强同名用户 preset,使 SSH 工具直接出现在现有模式中。
功能特性¶
- 多机 SSH 注册表:管理多台服务器配置(host、port、user、密码或私钥),存储于
~/.dsh/remote-workspaces/machines.json。 - 同时连接多台:每台机器拥有独立的连接池,互不干扰。
- 远程工作区:为每台机器指定远程目录,本地镜像存储于
~/.dsh/remote-workspaces/<host>/...。 - 双向 SFTP 同步:支持
rw_sync(远程→镜像)和rw_push(镜像→远程)。 - Agent 远程操作工具:提供
rw_*系列工具,支持文件浏览、读写、命令执行。 - 设置面板:DSH Web 的设置页面中提供远程工作区管理界面,支持增删改查机器及测试连接。
工具用法¶
所有工具支持 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 |
断开指定机器的连接。 |
使用示例¶
Agent 可以直接通过对话驱动这些工具。例如:
- 注册并连接两台服务器:
rw_connect (host=192.168.1.10, user=root, privateKeyPath=/Users/me/.ssh/id_rsa)
rw_connect (host=192.168.1.20, user=root, password=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_sync (machineId=<第一台id>)
注意事项¶
- 本项目 fork 自
flymysql/dsh-remote,底层 SSH 引擎、SFTP 同步等组件来自该上游项目(BSD-3-Clause)。 - 由于维护已暂停,若 DSH 官方版本升级至
0.1.5-rc.1或更高,插件可能无法正常工作。 - 插件以同名用户 preset 覆盖机制挂载,升级 DSH 后通常需要重新运行安装脚本。