前言¶
用 DeepSeek Harness(DSH)做开发时,常见做法是本机起一个 dsh 进程,agent 和工具调用都在当前环境里跑。代码在远端 Linux、WSL 或容器里时,要么在 SSH 里手动敲命令,要么把仓库同步到本机再开工作区——和「聊天里直接让 agent 改远端目录」的体验不一致。
dsh-ssh(包名 dsh-ssh-remote)由维护者 longguanhong0755 发布,分类为客户端插件。它在远程主机上部署并监管常驻的 dsh 运行时,把远程目录投影到 DSH 原生侧栏;本机负责选目录、聊天和看状态,关掉本地 dsh 后,远程 agent 与正在生成的回答仍可继续。README 写明适用版本为 DeepSeek Harness Desktop 0.2.1-rc.5,并已在 AlmaLinux 9.5 的 SSH 主机上做过端到端验证。
这是什么¶
一句话:给 DSH 加上与 ZCode 相近的远程工作区能力,覆盖 SSH(密码 / 私钥 / agent)、Windows 上的 WSL 发行版、Docker 容器三类目标。
社区目录页:https://www.skillhub.cn/plugins/longguanhong0755/dsh-ssh(与 GitHub 仓库相互独立,并非 DeepSeek / 幻方官方应用商店)。源码仓库:https://github.com/longguanhong0755/dsh-ssh,许可证 MIT;package.json 中版本为 0.3.1,要求 Node ≥ 22。安装与使用前,建议自行查阅源码与许可证,并牢记插件随当前 dsh 进程权限运行。
核心功能¶
下面按 README 已列能力归纳,不超出文档表述。
设备与连接
- 新建连接向导与 ZCode 一致,支持从
~/.ssh/config导入;SSH / WSL / Docker 统一入口(macOS 上不出现 WSL 入口)。 - 远程设备列表:状态、
root@host:22形式地址、最近在线时间、项目数;可搜索设备名、地址或项目。 - 设备行菜单:编辑、断开、重装 / 重启 / 停止远端服务、移除设备;「断开」仅断本机连接,远程任务照常。
项目与工作区
- 创建项目:项目名 + 设备 + 文件夹;本机用系统对话框选路径,远程用内嵌 SFTP 文件夹浏览器(可输入路径、显示隐藏目录、逐级进入)。
- 远程工作区出现在 DSH 原生侧栏:云朵(在线 / 启动中 / 离线 / 异常)+ 项目名 + 设备名;
...菜单支持新建任务、查看文件、编辑项目、置顶、删除。删除只清本机投影和远端服务,远程项目文件夹保留。
会话与部署
- 回答在远端生成、本地流式显示;支持思考、工具调用、取消;agent 进程、工具调用和文件读写发生在远程主机。
- 状态包括:运行中 / 启动中 / 已停止 / 异常 / 不可达,以及 PID、运行时长、内存、CPU、HTTP 状态。
- 首次连接会在远端自动安装 Node 与 dsh、同步模型凭证、注册 systemd(或 setsid)服务,之后复用。
数据与安全(文档原文)
- 设备与设置保存在本机
$DSH_HOME/ssh-remote/state.json(POSIX 上权限 0600)。 - 远程 dsh 只监听
127.0.0.1,不向局域网暴露端口。 - 首次连接记录主机指纹,指纹变化会拒绝连接。
- 可选将本机模型凭证以 0600 同步到远程工作区。
安装与启用¶
在 DeepSeek Harness 至少启动过一次之后,于插件目录执行安装(<插件目录> 替换为你本地的 dsh-ssh 解压或检出路径,勿自行拼接未在文档出现的 dsh plugin add 命令)。
macOS / Linux / WSL:
node <插件目录>/bin/install.mjs --profile desktop
Windows:
node <插件目录>\bin\install.mjs --profile desktop
然后完全退出并重新启动 DeepSeek Harness;侧边栏出现「SSH 远程」即表示安装成功。
卸载(只移除本地插件;远程服务需在界面上删除项目):
node <插件目录>\bin\uninstall.mjs --profile desktop
POSIX 上路径分隔符与 Windows 示例相同,换用 /bin/uninstall.mjs 即可。
典型用法¶
README 给出的可复现流程如下。
- 添加设备:设置 → 远程设备 → 新建连接,填写地址和账号后测试并保存。
- 创建项目:主界面「创建项目」→ 选设备(第一项为「此电脑」,其后为已保存的远程设备,也可直接添加新设备)→ 选文件夹 → 确认信任并创建。首次会在远端安装 dsh,之后复用。
- 开始对话:点侧栏里的远程工作区直接聊天,回答在远端流式生成。
- 管理:悬停远程行,在
...中可编辑名称或删除项目;删除保留远程目录。
说明:左侧「SSH 远程」面板只管理设备;工作区统一在主界面创建。
适用场景与注意¶
较适合
- 代码与构建环境在远端 Linux、本机 WSL 或 Docker 容器,希望与本地 DSH 侧栏、流式会话同一套交互的开发者。
- 需要关掉本地客户端后仍让远端 agent 继续跑长任务的场景。
限制(来自 README)
- 远程目标需要 Linux 环境,Node ≥ 22 或能下载便携运行时,且能访问 npm 镜像。
- 每个会话首轮有约 3 秒的远端进程启动开销,之后追问即时。
- 本地不镜像远程文件,agent 与工具都在目标环境执行。
- WSL 需要 Windows + 已安装 WSL;Docker 需要运行中的容器;不支持 Windows 远程主机。
- macOS 上不提供 WSL,与 ZCode 一致。
生态上 DSH 奉行「一切皆插件」;本插件通过 Cordis patch 与客户端 UI 注入集成(见 package.json 中 dsh.bundle.patch 与 dsh.client 字段)。GitHub 上该仓库公开星标为 6、2 forks(以仓库页面为准,会变动)。
结尾¶
dsh-ssh 把「远端常驻 dsh + 本机投影工作区」落到 SSH、WSL、Docker 三条连接路径上,并强调本机关闭不中断远程生成。若要查看截图级交互说明,可看仓库 README 中的效果演示章节。