前言¶
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,并增强 standard、code、minimal、cordis 现有模式,使这些模式可以直接使用远程工作区工具。
核心功能¶
多机注册与并行连接¶
- 多机 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,并复制/追加 standard、code、minimal、cordis 的用户 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,新建会话,选择 standard、code、minimal 或 cordis 模式。这些模式已经内置 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 连接的人。
- 希望在
standard、code、minimal、cordis现有模式中加入远程工作区工具的人。
使用前需要注意:
- 该插件适配
@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/AionUi(Apache-2.0)重新实现。 - 机器注册表保存在
~/.dsh/remote-workspaces/machines.json,每台设备独立维护。
链接¶
- 目录页:
https://www.skillhub.cn/plugins/cslht11/dsh-ssh-remote - GitHub:
https://github.com/cslht11/dsh-ssh-remote