前言¶
用 DSH 做遠程開發時,一種常見做法是先把遠端目錄同步或掛到本地,再把 DSH 的工作目錄指向它。這樣做的問題是:工作區其實是本地的一份鏡像,遠端真實目錄改了什麼需要自己同步;端口轉發要手工開,遠端的操作又散在另一套終端窗口裏。結果是本地會話和遠端會話分成兩條線,上下文對不上。
下面介紹的 dsh-remote-deck 換一種方式:插件直接在 DSH desktop 裏連上 SSH 目標機,把一個遠端目錄註冊成 DSH 的一個普通工作區(workspace stub)。之後 agent 讀、寫、搜索、跑命令、開終端、轉發端口,全部走遠端那臺機器,界面還是 DSH 裏那個窗口。
這是什麼¶
Remote Deck(包名 dsh-remote-deck)是 DeepSeek Harness 的客戶端插件,倉庫在 GitHub 的 dsh-plugins-cn/dsh-remote-deck,README 標題寫的是「SSH workspaces for DeepSeek Harness — one window, local and remote conversations side by side」。社區目錄把它歸在「客戶端」分類,當前 GitHub 星標爲 1(以 2026-11-06 目錄頁與倉庫頁爲準)。
它解決的是:讓一臺遠端 Linux/macOS 機器上的目錄,在 DSH 裏看起來像本地工作區。遠端不需要裝任何 agent,只需要有 sshd。
需要說明的是,DSH 的理念是「一切皆插件」,社區目錄是獨立站點,不是 DeepSeek 的官方應用市場;其上收錄的插件也不是官方應用。安裝前建議自行檢查源碼。
核心功能¶
README 的功能表分六塊,這裏只列出已覈實的內容。
連接管理。支持多臺主機同時連接,認證方式爲密鑰或密碼;可以導入 ~/.ssh/config;連接前會返回操作系統類型和延遲,支持每臺主機的 auto-connect(默認關閉,可在對話框、快速麪板或控制台裏切換)、keepalive 和斷線重連退避。每臺主機有自己的顏色標識。
工作區。可以按麪包屑路徑瀏覽遠端目錄,帶過濾器和鍵盤導航;選定目錄後添加爲 DSH 工作區,可以自定側欄顯示名;從側欄移除工作區只是本地註銷,不碰遠端目錄。
會話標識。遠端會話會帶上頭部膠囊、側欄彩色角標和懸停行,本地會話不受影響。
控制台。Console 提供機器欄、主機概覽、統計、工作區卡片、最近會話、搜索,以及一個遠端文件瀏覽器,支持下載、另存到本地、在系統裏定位。
終端。遠端終端是一個完整 xterm.js 終端(PTY 通道),支持顏色、光標、全屏程序、粘貼和回放緩衝。
端口轉發。自動發現遠端監聽端口,一鍵轉發,配置可持久化並在重連後恢復。
主題跟隨 DSH 的 theme token,亮色和暗色都支持。
插件沒有 npm 依賴:ssh2 及其依賴樹放在 vendor/node_modules,終端資源放在 vendor/xterm,因此安裝過程不會執行 package build scripts。
架構:遠端只需 sshd¶
README 給出的架構圖是這樣的:DSH desktop 側跑會話、側欄和 Remote Deck console,插件在 host 側提供連接池、工作區 stub 和 loopback API;兩邊通過 SSH 通信,具體是 exec channels(跑命令)、SFTP(文件)、PTY(終端)、direct-tcpip(端口轉發)。
這套實現值得說一句,因爲它決定了你能做什麼、不能做什麼。遠端工作區實際上是 <DSH_HOME>/remote-deck/workspaces 下的一個帶標記的 stub 目錄,標記裏記錄連接 id 和遠端 POSIX 路徑。所有在此目錄下的路徑請求都通過 SFTP 解析,命令通過 exec channel 以遠端 cwd 執行,ripgrep 移到目標主機上跑,終端是一個 PTY channel,轉發是每個端口一個本地 listener。
也就是說,遠端不需要部署 agent,也不需要裝包;代價是 SSH 協議本身能提供的能力,纔是插件的能力邊界。
安裝與啓用¶
這一步把插件裝進 DSH。官方 README 給了四條安裝路徑,按你的環境選一條即可。
一、npm 名稱(推薦)¶
插件市場(上架後)或 npm:
dsh plugin add dsh-remote-deck
二、從 GitHub 安裝¶
dsh plugin add git+https://github.com/dsh-plugins-cn/dsh-remote-deck.git
三、國內網絡走代理¶
在中國大陸,README 給出的是 GitHub 代理:
dsh plugin add "git+https://ghproxy.laiyouxi.com/https://github.com/dsh-plugins-cn/dsh-remote-deck.git"
四、從 checkout 安裝¶
如果已經把倉庫拿到本地,README 給的步驟是在 clone 下來的目錄裏跑 install.ps1:
git clone https://github.com/dsh-plugins-cn/dsh-remote-deck.git
cd dsh-remote-deck
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Profile desktop
裝完請重啓 DSH 或按 Ctrl+R。之後側欄底部會出現 SSH 狀態片,側欄導航裏會出現「遠程開發」。
README 裏的截圖來自 docs/design/v2/ 的脫敏設計稿,主機名、地址和路徑都是演示數據(dev-box、203.0.113.10、/srv/demo-app)。
環境要求¶
DSH desktop 0.2.x 或更高;Node 20+;遠端主機需要有 sshd,操作系統爲 Linux 或 macOS,遠端 shell 爲 bash。
從 dsh-remote-ssh 遷移¶
Remote Deck 是 dsh-remote-ssh 的繼任者。README 寫了幾個值得注意的點:
- 首次加載時,它會把
<DSH_HOME>/remote-ssh下的連接複製過來,並且原地複用已有的 workspace stub,所以工作區和會話在側欄裏的位置不變。 - 舊插件在刪除前仍可繼續工作。兩個插件都會 patch
ctx.fs,所以一個 profile 裏只能啓用其中一個。 - 一行命令完成切換,腳本會先備份
package.json,並保留舊插件文件以便回滾:
.\install.ps1 -Profile desktop -RemoveOld
- 任何時候可以回滾:
.\install.ps1 -Rollback # 恢復 package.json.bak-before-deck
數據存放在 <DSH_HOME>/remote-deck,重裝插件不會丟失。
典型用法¶
下面按 README 描述的順序走一遍。
- 裝好插件後重啓 DSH,側欄出現 SSH 芯片,點進去進 Remote Deck console。
- 添加一臺機器。認證支持密鑰和密碼;密碼和密鑰 passphrase 存放在 DSH credential store,而不是
connections.json,這是 README 明確寫明的。連接對話框裏可以測連接,能看到遠端操作系統和延遲。 - 在遠端文件夾瀏覽裏用麪包屑和過濾器找到目標目錄,比如某個服務的倉庫根目錄,add 成工作區,給它起一個側欄顯示名。
- 在這個工作區裏開一個 DSH 會話。agent 的讀寫落到遠端目錄,搜索走遠端 ripgrep,命令按當前目錄執行。會話在側欄裏會有顏色標識。
- 需要交互式操作時打開終端(PTY),常規的全屏程序、顏色輸出都支持。
- 需要訪問遠端監聽的服務端口時,在 Ports 裏看自動發現的結果,一鍵轉發;README 說明轉發配置會持久化,並在重連後恢復。如果自動發現不可用,手動轉發仍然可以。
安全邊界¶
這幾條來自 README 的 Security 一節:
- 密碼和密鑰 passphrase 只進 DSH credential store,
connections.json裏不會出現。 - 瀏覽器側通過 loopback HTTP server 與 host 側通信,由一個每會話 token 保護。
- 終端和端口轉發入口掛在同一個 token 之下。
- 移除工作區只做本地註銷,插件不會刪除遠端文件。
已知限制¶
README 自己列了四條,用之前值得先知道:
- 終端用的 xterm.js 是 vendored 構建。如果 asset loader 被攔截,插件會退化爲純文本行渲染器。
- UI 以中文爲先,英文字符串計劃在 v1.1.0 加入。
~/.ssh/config導入覆蓋 Host / HostName / Port / User / IdentityFile / ProxyJump 這些字段,但 proxy 命令和 host-key pinning 還沒接進連接對話框。- 自動發現端口依賴遠端有
ss或netstat;沒有的話手動轉發仍可用。
適用場景與注意¶
適合誰:DSH desktop 用戶,需要在 Linux/macOS 遠端機上做開發或運維,希望 agent 直接操作遠端文件與命令,同時保留 DSH 會話上下文,並且不希望在遠端部署 agent。從 dsh-remote-ssh 遷過來的用戶也可以直接切過來。
幾點提醒:
- 插件運行在 DSH desktop 進程內,以當前 dsh 進程的權限訪問本地文件系統、loopback HTTP 端口和 SSH 出站連接。安裝前請檢查源碼與許可證——倉庫許可證爲 MIT,版本號 1.2.7(來自倉庫的
package.json)。 - 一個 profile 裏只啓用 Remote Deck 或
dsh-remote-ssh之一,兩者都會 patchctx.fs。 - 星標數與目錄頁分類屬於當前狀態,接入前可以到倉庫頁再看一眼。
- 遠端需要
sshd且 shell 是bash;自動端口發現還需要ss或netstat。
結尾¶
Remote Deck 的價值在於把「本地工作區」和「遠端機器」這兩件事合到 DSH 的同一個窗口裏,不需要在遠端裝 agent,也不用自己維護同步和端口轉發。功能邊界由 SSH 協議決定,README 把已知限制寫清楚了,接入前值得讀一遍。
目錄頁:https://www.skillhub.cn/plugins/dsh-plugins-cn/dsh-remote-deck
倉庫:https://github.com/dsh-plugins-cn/dsh-remote-deck
開發側 README 還提供了 npm run check(語法與 manifest 檢查)、npm test(parser 單測)和 npm run pack:dry(查看發佈文件列表)三條命令,供修改插件的人自測。