前言¶
DeepSeek Harness(DSH)默认在本地目录上执行 shell、读写文件和搜索代码。若项目只在服务器或开发机上、本机只有客户端,常见做法是手动 SSH 进机器再操作,或把代码同步到本地再开会话——步骤多,且 agent 用的工具链与本地 workspace 不一致。
下面介绍社区插件 DeepSeek Harness SSH Toolkit(npm 包名 dsh-ssh-toolkit):在 DSH 0.2 上把会话绑定到远程主机上的任意目录,工具名与官方一致(bash、read、write 等),调用按会话工作目录路由到 SSH 远端执行。维护者为 MaiwulanjiangMaiming;仓库见 GitHub,社区目录页见 SkillHub。分类为客户端;它是 dsh-ssh/dsh-ssh 在 DSH 0.2 上的独立延续,并非上游提交的镜像。
这是什么¶
一句话:SSH remote workspaces for DeepSeek Harness——在远程 Linux/macOS 上选文件夹作为 workspace,每次 shell / 文件 / 搜索类工具调用都在该机器上完成,而不是笔记本本地。
插件是增量的:未选远程 workspace 时,本地 workspace 行为与未安装前相同;卸载后 DSH 本体不受影响。
核心功能¶
主机与跳板¶
在 Settings → SSH Connections 中新增、编辑、测试(经跳板链)、删除主机;可选跳板(Jump host)。UI 中密码为只写不回显。支持通过 ProxyJump 主机引用链式跳转(含环检测),或在本地执行 OpenSSH 风格的 ProxyCommand;终端侧与 ssh -J / -o ProxyCommand 一致。
从现有 SSH 配置导入¶
扫描 ~/.ssh/config、~/.ssh/config.d/* 及 Include 链(与 VS Code Remote-SSH 同源),一键批量导入 user、port、密钥路径;缺少 User 的条目会标记,避免静默错误。
七类路由工具¶
bash、read、write、edit、read_image、glob、grep 保持官方名称与参数 schema;是否走远程仅取决于会话 cwd,无需改 prompt 或改工具名。
远程 workspace 与 UI¶
浏览远程目录并选定后,本地得到占位 workspace;删除 workspace 会清理占位。Files 侧栏经 SFTP 列出/预览远程树;Terminal 面板用 ssh -tt 打开远程 shell,复用官方终端的 resize/scrollback。在远程 workspace 中附加文件会上传到远程目录(重名安全命名),消息里仍保留附件卡片。
后台任务与沙箱¶
run_in_background 以及 job_list / job_output / job_kill 在远程主机执行。三种 sandbox 模式对远程工具调用的约束与本地一致。
连接与传输¶
未知主机密钥首次连接会弹出指纹确认,之后校验 known_hosts。连接池支持重连;远程写入原子化;SFTP 失败时可回退到 exec + base64。
版本提示¶
Settings → SSH 显示已安装版本;若仓库有更新 tag,页脚提示「Update available」(至多每 6 小时检查一次,带 Release 链接)。DSH 仅对官方插件提供内置 Update 按钮,本插件需手动拉取/重装并完全重启 DSH。
环境要求¶
| 项 | 要求 |
|---|---|
| DSH | 0.2.1-rc.4 – 0.2.x(README 写明 rc.5 已测、rc.4 已审计) |
| Node | ≥ 22 |
| 远程系统 | Linux 或 macOS(仅需 sshd,无需在远端装 agent) |
| 认证 | 密钥(路径或 ssh-agent)或密码 |
| 拓扑 | 多跳 via ProxyJump 或 ProxyCommand |
远程 grep 使用 GNU grep,忽略规则与本地 rg 略有差异。不支持 Windows 作为远程 OS。
安装与启用¶
插件随 DSH 进程与当前 profile 运行;安装前建议自行查看仓库源码与 MIT 许可证。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
桌面 profile 直接从 GitHub 安装:
dsh plugin --profile desktop add github:MaiwulanjiangMaiming/Deepseek-harness-SSH-toolkit
无头 Web 环境将 --profile desktop 换成 --profile web。若 pnpm 报 ERR_PNPM_ADDING_TO_ROOT,在命令末尾加 -w。安装后完全重启 DSH,再打开 Settings → SSH Connections。
指定 tag 或 Release 附带的 .tgz(该页自动生成的 Source code 压缩包不可作为可安装包):
dsh plugin --profile desktop add github:MaiwulanjiangMaiming/Deepseek-harness-SSH-toolkit#v1.4.4
dsh plugin --profile desktop add ~/Downloads/dsh-ssh-toolkit-1.4.4.tgz
若 profile 拒绝覆盖已装副本,先移除再装:
dsh plugin --profile desktop remove dsh-ssh-toolkit
pnpm 若因 ERR_PNPM_IGNORED_BUILDS(cpu-features、ssh2)停止,可在 profile 的 pnpm-workspace.yaml 中显式声明(ssh2 可不编译可选 native addon):
allowBuilds:
cpu-features: false
ssh2: false
卸载:
dsh plugin --profile desktop remove dsh-ssh-toolkit
典型用法¶
按 README Quick start,顺序如下:
- Settings → SSH Connections → Import from ~/.ssh/config(或 Add host)。
- 测试连接一次;首次连接确认主机密钥指纹。
- New session → 选择主机 → 浏览并选定远程文件夹 → 该目录成为 workspace。
- 此后 agent 执行的命令与文件操作均发生在该远程机器上。
主机记录保存在 storage 域 dsh_ssh_hosts(文件路径约为 ~/.dsh/storages/dsh_ssh_hosts.json)。设置页通过 Typert 远程 RPC(如 ssh/listHosts、saveHost、testConnection、scanSshConfig 等)与 host 通信,不把 settings 命名空间暴露到 wire。
适用场景与注意¶
适合:代码与构建环境在远程 Linux/macOS;已用 OpenSSH config 管理多台主机或跳板;希望在 DSH 0.2 里用与本地相同的工具名做远程开发。
务必知晓的限制与 trade-off(来自 README Notes):
- 密码以明文写入
dsh_ssh_hosts.json(与上游相同取舍);更推荐密钥,私钥文件本身不会被复制。 - 终端跳板链走本地
ssh -J,中间跳 credentials 来自系统 ssh config/agent;存储的密码仅用于目标主机。 ProxyCommand在本地/bin/sh执行配置中的命令,信任模型同 OpenSSH;仅对你已配置的主机会执行。- Files 标题仍显示本地占位路径,实际读写指向远程路径;终端使用本机
ssh客户端。 - 上传写入远程 workspace;附件卡片仍引用本地暂存副本供模型侧展示。
连接测试失败时,README 建议先核对 host、port、user(后续 Troubleshooting 章节在抓取资料中已截断,细节以仓库 README 为准)。
结尾¶
DeepSeek Harness SSH Toolkit 把 DSH 0.2 会话落到 SSH 远程目录:导入现有 ~/.ssh/config、管理跳板、七类官方工具远程路由,以及 Files/Terminal 的远程 parity。本地 workspace 不受影响,按需安装即可。