前言¶
DSH 的插件方式让客户端能力可以按需安装。对于需要远程机器上的文件、Shell 和终端操作的智能体工作流,常见问题是:远程 Host 配置分散在 OpenSSH 中,认证、代理、密钥策略不想复制进插件,同时 DSH 原生工具又需要稳定的远端执行边界。dsh-ssh-remote 就是为这个场景准备的 DeepSeek Harness 插件。它由 CrazyShout 维护,定位是 Codex 风格 SSH 远程工作区:从本机 OpenSSH 配置发现具体 Host,通过标准「添加工作区」选择远端目录,并把 DSH 原生文件、Shell 和终端操作路由到远端版本化 helper。
这是什么¶
dsh-ssh-remote 是 DSH 的插件。它把远端工作区的连接事实交给本机 OpenSSH,插件侧处理文件、Shell、终端和状态展示。许可证为 MIT,GitHub 仓库为 https://github.com/CrazyShout/dsh-ssh-remote。
核心功能¶
下面按能力分列。
- 从本机 OpenSSH 配置发现具体 Host,并保留原始 Host alias。
- 使用标准「添加工作区」选择远端目录。
- 将 DSH 原生文件、Shell 和终端操作路由到远端版本化 helper。
- 自动安装并校验版本化 helper,不使用
sudo、curl | sh、postinstall或远端包管理器。 - 远端文件读取/写入使用稳定 token、临时 inode、
fsync、版本复核和原子发布。 - 远端 Shell 与真实远端 PTY 支持有界输出和断线重连继续读取。
- Linux 上
read-only/workspace-write进程和 PTY 使用 bubblewrap 隔离。 - 设置页展示安装中、连接中、已连接、能力受限、重连中、错误等状态。
- 旧 DSH host 设置仍可使用加固后的 ssh2/SFTP 兼容路径。
环境要求¶
安装和启用前,先确认下面这些条件:
- 本机 Node.js 22 或更高版本。
- DSH
0.1.1-rc.2或兼容的更新0.1.x版本。 ~/.ssh/config中存在具体 Host alias,且ssh <alias>的 batch 连接可用。- 远端是 POSIX 系统,并提供 Python 3.9 或更高版本。
- Linux 上如启用
read-only/workspace-write进程和 PTY 隔离,需要 bubblewrap(bwrap)。
helper 连接固定使用 BatchMode=yes。Web 后台连接无法回答交互式密码、PIN、passphrase 或 MFA 提示。
安装与启用¶
从 GitHub 安装:
dsh plugin --profile web add 'github:CrazyShout/dsh-ssh-remote'
安装后重启 dsh web。打开「设置 → SSH Remote」,可以先连接,也可以直接在「添加工作区」中选择主机。首次连接会自动安装匹配版本的 helper。
典型用法¶
1、把 User、Port、代理和认证信息写在 OpenSSH 配置里,不要编码为 ssh://user@host:port。保留一个具体 Host alias,例如你在本机已经能执行的 ssh devbox。
2、在 Web 使用前先运行一次:
ssh devbox
按你的 OpenSSH 策略核对新主机指纹。
3、在 DSH 的「添加工作区」中选择该 Host 和远端目录。
4、使用 DSH 的文件、Shell 和终端能力;设置页会展示当前连接与能力状态。
适用场景与注意¶
适合已经在 OpenSSH 中维护远程 Host、密钥、证书、agent 或代理策略,并希望把 DSH 的文件、Shell 和终端操作放到远端执行的团队或个人。
需要注意:
- 插件以当前
dsh进程权限运行,安装前应检查源码与许可证,并确认 MIT 许可证是否符合你的使用要求。 - 插件不会修改
~/.ssh/config、私钥或known_hosts。 - DSH 上游限制:Harness Workspace 必须是真实本地目录,插件会创建很小的本地 anchor。
- DSH 上游限制:
SubprocessRuntime.spawn()是同步接口,必须立即返回本机 PID。 - DSH 上游限制:当前 terminal tool 没有 resize verb。
- DSH 上游限制:DSH 历史、配置、插件和 agent loop 仍运行在本机。
- DSH 上游限制:
listDir()暂无分页契约,超过 1000 项的目录会诚实失败。 - 任意不合作的外部 writer 仍可能卡入最后一次检查到 rename 的极短窗口,能力报告
externalWriterRaceFree: false。
短结尾¶
dsh-ssh-remote 的价值在于让 DSH 的远程工作区继续使用本机 OpenSSH 的 Host 配置,并把远端文件、Shell 和终端操作交给版本化 helper 处理。可确认的仓库地址是:
https://github.com/CrazyShout/dsh-ssh-remote
目录页 URL 未在已核实资料中出现,本文不给出未确认地址。