dsh-remote-suite: Enabling DSH to Directly Connect to WSL and SSH Servers on Windows

前言

在 DeepSeek Harness(DSH)里做科研或运维类任务时,模型往往需要登录集群、读日志、改脚本、拉结果。常见做法是另开终端手工 SSH,或在对话里粘贴大段输出,上下文容易断,环境说明(module、Conda、Slurm 分区)也要反复交代。

dsh-remote-suite 把远端 shell、文件读写和传输做成 DSH 插件工具,连接由 Windows 本机的 ssh.exe、scp.exe 或 wsl.exe 发起;服务器侧不需要安装 Agent,也不需要主动连外网。下面介绍它是什么、怎么装、怎么用,以及权限与安全上的注意点。

这是什么

  • 仓库: Char0nChengg/dsh-remote-suite
  • 维护者: Char0nChengg
  • 分类:联网工具(社区目录 SkillHub 条目)
  • 当前包版本(package.json):0.2.0,MIT 许可证
  • DSH 兼容声明:已在 0.2.1-rc.3 上验证为 compatible

插件简介(与目录一致):通过 OpenSSH 或 WSL 为 DSH 提供远程 shell、文件与传输能力,并可为每个服务器预置环境说明;服务器无需 Agent。

安装后在 设置 → 插件 中显示为 远程终端与文件 / Remote Shell & Files。bundle 默认带 WSL 目标 wsl-ubuntu;没有 WSL 时可删掉,仅用 SSH 或临时目标。

环境要求

使用前需满足 README 中的条件:

  1. Windows 上的 DSH Desktop / Web Profile;
  2. Windows 自带 OpenSSH Client(ssh.exe、scp.exe),或通过 sshPath / scpPath 指定路径;
  3. 可选:WSL 2 与至少一个发行版;
  4. SSH 目标:Linux + sshd + GNU coreutils(bash、stat、find、head、tail、timeout);
  5. 认证:SSH 密钥或 ssh-agent;插件不保存密码,BatchMode=yes 禁止交互式密码提示。

核心功能

工具一览

工具 作用
remote_targets 列出已配置目标、SSH config 别名、环境提示,可选连通性检查
remote_exec 在目标上以 bash -lc 执行命令,返回退出码与有界 stdout/stderr
remote_read 读远端文本;返回大小、mtime、权限等;大文件支持 head/tail/range
remote_list 列目录
remote_write 原子写入 UTF-8 文件(临时文件 + rename),可设 mode=755
remote_transfer Windows 与目标间上传/下载;SSH 支持目录递归,WSL 仅文件
remote_config 在聊天中查看/修改目标、环境说明与全局 prompt,写入 profile patch 并热生效

临时目标无需事先写入配置,例如 ssh:myserver(复用 ~/.ssh/config)、ssh://User@host:2222、wsl:Ubuntu。

可视化与配置

安装后重启一次 DSH,在 设置 → 远程服务器 可管理服务器:列表、认证方式、ForwardAgent 状态、测试连接、增删改目标,以及编辑各机 environment 与全局远程提示。密码不会写入插件、浏览器或 YAML;当前仅支持 SSH key / ssh-agent。

配置方式二选一:聊天里用 remote_config(推荐),或手动编辑 profile 的 cordis.patch.yml 中 dsh-remote-suite 段。当存在 prompt 或 targets[].environment 时,插件会把 dsh-remote-suite:targets 注入 system prompt,供模型在请求前看到 module/Conda/Slurm 等说明——不会自动执行这些命令,变更后仍应通过 remote_exec 验证。

安装与启用

npm 包名预留为 @char0nchengg/dsh-remote-suite;README 写明发布到 npm 后可用 DSH 插件安装器安装,目前推荐从 GitHub 取得 bundle 后本地安装。

先把仓库内容放到本机目录(README 示例路径 D:\dsh-remote-suite),再在 DSH 中让 Agent 执行:

plugin_manager install_bundle({ target: "D:\\dsh-remote-suite" })

路径需与实际目录一致。首次安装或更新插件 Client 半侧后需重启 DSH(启动时扫描客户端插件;仅刷新页面可能看不到新的设置页)。Host 侧 remote_config 工具通常不需重启。

典型用法

自然语言

不必记工具名,直接在聊天中描述意图,例如:

列出 myserver 上 ~/project 的文件
读一下 myserver 上 ~/project/run.log 最后 100 行
把 myserver 上的 submit.sh 下载到 D:\results
在 myserver 的 ~/project 下提交 sbatch submit.sh
在 WSL Ubuntu 里看一下当前目录

若 ~/.ssh/config 已有 Host 别名,可直接用 ssh:别名,无需改插件配置。

显式调用

remote_targets({ "check": true })
remote_exec({ "target": "ssh:myserver", "command": "hostname; pwd" })

remote_targets 会列出已配置目标与 config 中的 Host 别名,且不会主动连接它们。

改环境与全局提示(聊天示例)

看看远程插件的配置
把 wsl-ubuntu 的环境说明改成:默认用户,已装 conda
给 myserver 加上环境:module load intel/2022;conda activate example-env
把全局远程提示改成:登录节点不要跑重计算,优先 sbatch

对应动作为 remote_config 的 show、set_environment、upsert_target、remove_target、set_prompt 等;详见 README 表格。

手动 YAML 的完整字段示例见仓库 targets.example.yml。

适用场景与注意

适合谁:主要在 Windows 上使用 DSH,需要操作 WSL 发行版或 Linux SSH 服务器(含 HPC 登录节点),并希望把 module/Conda/作业提交习惯写进可编辑的环境说明,减少重复提示。

权限与信任:这是高权限插件——remote_exec 等价于远端 SSH 用户的 shell 权限,remote_write / remote_transfer 可改远端文件,remote_config 会写当前 profile 的 cordis.patch.yml。安装前应阅读源码与 MIT 许可证,使用专用、最小权限的 SSH 密钥;不要把密码、token、私钥写进 environment 或 prompt(会进入模型上下文与会话记录)。插件以当前 DSH 进程及所配置密钥的权限运行,仅在可信会话中启用 remote_config,改动前先 action: "show"。

限制(README 摘要):

  • 远端适配 Linux + GNU 工具链;macOS/BSD、Windows OpenSSH 服务端未适配。
  • WSL 目录级上传/下载未实现;大文件或二进制优先 remote_transfer,remote_read 的 auto 对超过 2 MiB 仅元数据与预览。
  • 无持久 shell、端口转发或远端 Agent;长任务应用 Slurm/PBS 或 nohup。
  • 服务器须能被 Windows 主动访问(VPN 或端口映射)。

DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-remote-suite 把 Windows 侧已有的 OpenSSH/WSL 能力接到 DSH Agent 上,在不部署服务端 Agent 的前提下完成远程命令、文件与传输,并用 profile 级配置和环境预加载降低集群协作成本。

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

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

Xiaoye