DeepSeek Harness SSH Toolkit: Running DSH Sessions on Remote Machines via SSH

前言

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,顺序如下:

  1. Settings → SSH Connections → Import from ~/.ssh/config(或 Add host)。
  2. 测试连接一次;首次连接确认主机密钥指纹。
  3. New session → 选择主机 → 浏览并选定远程文件夹 → 该目录成为 workspace。
  4. 此后 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 不受影响,按需安装即可。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye