dsh-remote-suite:在 Windows 上讓 DSH 直連 WSL 與 SSH 服務器

前言

在 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 級配置和環境預加載降低集羣協作成本。

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

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

小夜