DeepSeek Harness (DSH) 生态支持插件化扩展。对于需要在远程 Linux 服务器上执行操作的场景,直接编写 Shell 脚本或硬编码 SSH 命令较为繁琐。dsh-ssh-plugin 为此提供了解决方案,它通过系统自带的 SSH 客户端为模型增加了远程执行能力,并支持持久化连接管理。
插件定位¶
该插件由 Azurer0121 维护,开源协议为 MIT。它通过注册 ssh_exec 和 ssh_connections 两个模型工具,解决了智能体与远程服务器交互的痛点:模型可以直接执行远程命令,无需人工介入。
核心功能¶
插件主要包含以下能力:
- ssh_exec 工具:允许模型在远程 Linux 服务器上执行 Bash 命令。
- ssh_connections 工具:管理持久化的 SSH 连接配置,支持保存、绑定工作区和列出可用主机。
- 密钥认证:仅支持基于密钥的身份验证(
BatchMode=yes),不进行密码/私钥短语提示,确保快速失败而非挂起。 - SSH Config 集成:自动识别并使用本地的
~/.ssh/config文件中的主机别名,无需手动保存。 - 双端支持:在宿主端注册设置命名空间,在浏览器端提供设置卡片界面。
- 优雅降级:当缺少
settings或workspaceRegistry等服务时,插件会自动降级,不影响基础功能。
安装与启用¶
通过 npm、GitHub 仓库或本地目录安装。如果是本地检出,需要先构建。
# 从 npm 安装
dsh plugin --profile <name> add dsh-ssh-plugin
# 从 GitHub 安装
dsh plugin --profile <name> add github:Azurer0121/dsh-ssh-plugin
# 从本地目录安装(需先构建)
dsh plugin --profile <name> add ./dsh-ssh-plugin
本地安装前需执行构建命令:
cd dsh-ssh-plugin
pnpm install && pnpm bundle
安装后,通过 dsh --profile <name> 启动 Harness。
典型用法¶
ssh_exec¶
模型获得 ssh_exec 工具,支持自然语言指令或显式参数调用。
显式参数示例:
| 参数 | 是否必需 | 说明 |
|---|---|---|
host |
是 | 远程主机,格式为 [user@]host,或 ~/.ssh/config 中的别名。 |
command |
是 | 在远程执行的 Bash 命令。 |
port |
否 | SSH 端口,默认 22。 |
key_path |
否 | 私钥绝对路径,省略则使用默认路径或 ssh-agent。 |
timeout_ms |
否 | 前台超时时间(毫秒),默认 30000。 |
connection |
否 | 已保存连接的标签,用于填充 host/port/user/keyPath。 |
自然语言示例:
模型可以理解类似“ssh 到 root@10.0.0.5 并显示磁盘使用情况”的指令。
ssh_connections¶
用于管理持久化连接,数据保存在 Harness 的设置中,重启后依然存在。
save: 保存一个新的连接配置(标签、主机、端口、用户、密钥路径)。list: 列出保存的连接,并包含从~/.ssh/config发现的主机(只读)。delete: 删除指定标签的连接(同时解绑相关的工作区)。use: 将当前工作区绑定到某个连接标签。绑定后,ssh_exec可省略host参数,直接使用默认连接。
适用场景与注意¶
- 远程运维:自动化查看服务器状态、日志分析或文件操作。
- 环境隔离:利用工作区绑定功能,不同项目使用不同的 SSH 配置。
注意事项:
- 无密码交互:插件不处理密码或私钥短语提示。如果密钥未配置或无权限,SSH 会立即失败。
- 命令传输方式:远程命令通过 SSH 的 stdin 传输至
bash -s,因此 Shell 转义规则与本地 Bash 一致。 - 配置发现:
~/.ssh/config的读取是尽力而为的,配置文件缺失或不可读不会导致插件报错,只会显示空列表。 - Windows 权限限制:在 Windows 系统上,必须使用
danger-full-access沙盒策略的会话运行,否则ssh.exe可能因权限不足无法启动。 - 密钥安全:插件仅存储密钥文件路径,密钥内容永远不会离开磁盘。
总结¶
dsh-ssh-plugin 为 DeepSeek Harness 提供了标准化的 SSH 远程执行能力。通过对接本地的 SSH 客户端和配置文件,它降低了智能体与远程基础设施交互的门槛。开发者在使用前应确保目标服务器支持基于密钥的 SSH 访问,并在 Windows 环境下配置正确的沙盒策略。
相关链接:
* 插件目录:azurer0121/dsh-ssh-plugin
* GitHub 仓库:Azurer0121/dsh-ssh-plugin