前言¶
在 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 中的条件:
- Windows 上的 DSH Desktop / Web Profile;
- Windows 自带 OpenSSH Client(
ssh.exe、scp.exe),或通过sshPath/scpPath指定路径; - 可选:WSL 2 与至少一个发行版;
- SSH 目标:Linux +
sshd+ GNU coreutils(bash、stat、find、head、tail、timeout); - 认证: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 级配置和环境预加载降低集群协作成本。