dsh-ssh:DeepSeek Harness 的 SSH 遠程執行插件

前言

DSH 把工具能力拆成插件。做智能體開發時,如果本地 harness 需要操作另一臺機器上的 shell、文件、終端和 LSP,常見做法是把命令逐條轉發到遠端執行。dsh-ssh 是 UynajGI 維護的 DeepSeek Harness SSH remote-execution plugin,用一條 SSH 連接把 Bash、文件工具、PTY 終端和 LSP 放到遠端主機執行。

這是什麼

dsh-ssh 是 DSH 的 SSH 遠程執行插件。它基於 ssh2,爲 ctx.subprocessctx.fs 提供遠程 provider,讓本地 DSH 保留進程,命令執行、文件訪問和 PTY 落到遠端。它支持 multi-hop ProxyJump chains、SFTP upload/download,以及 full auth coverage。

核心功能

下面列出的能力來自已覈實的插件描述:

  • SSH remote-execution plugin for DeepSeek Harness
  • Moves Bash, file tools, PTY terminals, and LSP onto a remote host over a single SSH connection
  • Multi-hop ProxyJump chains
  • SFTP upload/download
  • Full auth coverage
  • Built on ssh2
  • Remote providers for ctx.subprocess and ctx.fs
  • Web Add-workspace flow with connection sidebar and directory browser
  • ~/.ssh/config host alias resolution and registration
  • Local native folder picker via local.pickNative
  • Connection management and remote directory browsing over the /dsh-ssh RPC channel

安裝與啓用

安裝命令:

npm i dsh-ssh

啓用時,可以先在 cordis.yml 裏掛載聚合行。hostusernamecwd 是必填項;cwd 必須是 absolute POSIX path。

- id: ssh-remote
  name: dsh-ssh
  config:
    host: server.example.com
    port: 22
    username: root
    privateKey: ~/.ssh/id_ed25519
    cwd: /root/workspace

如果目標需要經過跳板機,可以加 jump 數組。數組的第一跳來自本地,最後一跳指向目標主機。

    jump:
      - host: bastion.example.com

如果部署中需要單獨組合 provider,也可以分別掛載 subpath rows:

- id: ssh
  name: dsh-ssh/ssh

- id: subprocess-ssh
  name: dsh-ssh/subprocess

- id: fs-ssh
  name: dsh-ssh/fs

strictHostKeyCheckingtrue 時,需要配置 knownHosts

Web Add-workspace 用法

Web 端啓用 dsh-ssh 的 Add-workspace 流程時,需要先禁用動態目錄 picker 行,再插入 SSH backend。這裏的 name 用作匹配條件,所以按 id 禁用更合適。

- id: directory-picker
  name: '@deepseek-ai/dsh-host-directory-picker-auto'
  disabled: true

- insert:
    - id: ssh-remote
      name: dsh-ssh
      config: { ...same config as the quick start... }

    - id: directory-picker-ssh
      name: dsh-ssh/picker

    - id: ssh-web-channel
      name: dsh-ssh/web

選擇遠端目錄時,先調用 session.route 獲取一個本地 placeholder cwd,再創建 session。

const { cwd } = await rpc('session.route', { id: connectionId, path: remotePath })
ctx.sessions.create({ cwd })

適用場景與注意

適合本地 DSH 需要驅動遠端主機的 shell、文件工具、PTY 終端和 LSP 的情況。已覈實資料明確說明,harness 不需要安裝在遠端。

使用前建議檢查源碼與 MIT 許可證。插件以當前 dsh 進程權限運行,安裝前應確認本地進程可訪問的憑據、文件和權限是否符合預期。

另外,remote sessions 不會進入 DSH local workspace registry。抓取到的 README 與 package.json 末尾均被截斷,後續 scripts 和完整 limitations 沒有完整顯示,因此不要依賴未顯示的限制說明做完整安全判斷。

鏈接

  • GitHub: https://github.com/UynajGI/dsh-ssh
  • 目錄頁(插件線索給出的獨立目錄站點): https://www.skillhub.cn/plugins/UynajGI/dsh-ssh
羽毛球分组比赛记分
小程序二维码

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

小夜