dsh-ssh:为 DeepSeek Harness 接入 ZCode 风格的 SSH / WSL / Docker 远程工作区

前言

用 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 给出的可复现流程如下。

  1. 添加设备:设置 → 远程设备 → 新建连接,填写地址和账号后测试并保存。
  2. 创建项目:主界面「创建项目」→ 选设备(第一项为「此电脑」,其后为已保存的远程设备,也可直接添加新设备)→ 选文件夹 → 确认信任并创建。首次会在远端安装 dsh,之后复用。
  3. 开始对话:点侧栏里的远程工作区直接聊天,回答在远端流式生成。
  4. 管理:悬停远程行,在 ... 中可编辑名称或删除项目;删除保留远程目录。

说明:左侧「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 中的效果演示章节。

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

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

小夜