前言¶
在 DeepSeek Harness(DSH)裏做子智能體委派時,官方 out-of-process ACP 後端刻意是 local-only:session/new.cwd 只能是本機目錄,也沒有把遠端工作區映射進來的機制。實際開發裏常遇到另一類需求:父會話留在筆記本或桌面端,卻把一段自包含任務放到另一臺已裝 DSH 的機器上跑——用那臺機器的工具、工作區、模型和憑據,只把 closing message 帶回本地對話。這和官方正在做的「從別的設備訪問同一個本地會話」不是同一條路;後者是續聊同一會話,前者是跨機算力委派。
下面介紹社區插件 dsh-subagent-remote(維護者 endlass,分類爲工作流):它在本地 DSH 與遠端 DSH 的 acp profile 之間補一段 SSH 傳輸,並提供插件頁配置 UI。
這是什麼¶
dsh-subagent-remote 是 DSH 上的 Cordis 插件(npm 包名同爲 dsh-subagent-remote,當前發佈版本 0.9.2-rc.8,MIT 許可證)。本地會話發起委派後,插件經 SSH 在遠端啓動 DSH acp,在遠端絕對路徑上執行一次性子任務,遠端 agent 結束後只把 closing message 返回父會話;本地會話內容不由該插件遷移或對外暴露。
兼容窗口爲 DSH >=0.2.0-rc.2 <0.3.0、Node >=22。包體爲 index.js 與 lib/*,無第三方運行時依賴;SSH 憑據不寫入插件,走本機 ssh 配置與 agent。
核心功能¶
跨機一次性委派¶
模型側推薦使用統一工具 remote_subagent,通過 host 參數選擇目標機器;新增主機是改配置,而不是在工具列表裏再佔一行。也支持 legacy 模式:每臺主機註冊一行官方 @deepseek-ai/dsh-tool-subagent。
遠端鏈路在 README 中概括爲:本機通過 ssh 在遠端執行 dsh --profile acp,再經 ACP 完成 initialize、session/new、session/prompt 與權限協商,最後取回 closing message。
多主機與配置 UI¶
Web/桌面端的插件頁可列出主機、測試 SSH 連通性、編輯字段覆蓋、設置或清除默認主機。頁面寫入落到 $DSH_HOME/subagent-remote.json(相對 profile patch 的 JSON overlay),熱加載生效,一般無需因改配置而重啓 DSH。會話內可用 /remote-host 列出主機並切換當前會話的默認目標。
省略 host 時的解析順序爲:會話選擇(/remote-host)→ overlay 的 defaultHost → profile 的 defaultHost → 若僅配置一臺主機則使用該主機。
權限與失敗策略¶
每臺主機可設 permission:read-only(默認)、ask、deny、auto。需要審批的遠端工具調用在無人應答時拒絕,不默認放行。文檔強調 read-only 是啓發式分類,不是硬安全邊界;對不可信遠端應使用 deny 或遠端沙箱,並把 closing message 當作不可信輸入。
失敗時提供結構化診斷(stage=、category= 等);本地 Host 重啓時仍在進行的運行會記爲 orphaned 並在插件頁與會話頭部可見,便於人工覈對,不自動重試或續跑。
其他已文檔化能力¶
- Windows 遠端:遠端
cwd爲盤符路徑時自動使用cmd.exe載體,不要求目標機安裝 Git Bash。 - 會話頭部運行指示器(Web/桌面):派發後顯示遠端主機、狀態與耗時。
- 可向新會話注入「自動委託提示」系統提示詞段落,便於模型自行選擇
remote_subagent;可在插件頁關閉注入,工具仍可用。 - 支持
local: true在本機再啓一個acpprofile,用於不走 SSH 的同鏈路演練。
安裝與啓用¶
DSH 生態習慣「一切皆插件」;社區目錄 SkillHub 是獨立站點,與 DeepSeek / 幻方無官方從屬關係,安裝前請自行查閱 GitHub 倉庫 源碼與許可證。插件在 當前 DSH Host 進程權限 下加載,並會在你配置的遠端機器上啓動 DSH,僅應指向你信任的主機。
CLI(npm registry)¶
dsh plugin 會把參數轉發給 profile 目錄內的 pnpm,因此可使用任意 pnpm 包 spec:
dsh plugin --profile <profile> add dsh-subagent-remote # latest = 0.9.2-rc.8
# 或釘住版本
dsh plugin --profile <profile> add dsh-subagent-remote@0.9.2-rc.8
插件頁(桌面/Web,文檔推薦)¶
打開 插件 → 添加插件,輸入 dsh-subagent-remote 並確認。安裝後於 已安裝插件 中打開 打開配置,添加遠端主機。全新 bundle 安裝默認零主機,在配置完成前不會派發任務。
安裝、升級或修改 index.js / lib/** 後需重啓 DSH Host;僅改 client 側配置頁資源時刷新頁面即可。配置頁僅對 bundle 安裝提供;headless / ACP profile 無 UI 時仍可派發,只是沒有圖形配置與頭部指示器。
典型用法¶
1. 在配置頁或 patch 中定義主機¶
最小 SSH 主機需要 ssh 目標與遠端絕對路徑 cwd,例如文檔中的 POSIX 示例結構(字段名須與官方 README 一致):
hosts:
- name: host-a
provider: remote-host-a
ssh: example-host
cwd: /srv/work
permission: read-only
Windows 遠端示例:
- name: win
ssh: win-host
cwd: C:/Users/me/work
permission: read-only
常用主機字段還包括:timeoutMs(默認 600000)、remoteCommand / remoteArgs(默認 dsh 與 ['--profile','acp'])、remoteSession(close 或 keep)、sshArgs、scrubEnv 等;完整表格見倉庫中文 README「配置」一節。
2. 在對話中委派¶
配置完成後,父會話中的模型可調用 remote_subagent(或 legacy 模式下各主機對應的官方 subagent 工具),在任務描述中說明要在哪臺 host 上執行什麼。插件頁開啓「自動委託提示」時,新會話系統提示詞會列出已啓用主機及使用時機,用戶不必每次點名工具名。
會話內切換默認主機:
/remote-host
/remote-host mac
/remote-host reset
3. 連通性自檢¶
在插件頁對主機執行 測試連接:真實發起 ssh -T -o BatchMode=yes -o ConnectTimeout=10 探測(文檔寫明單次 25 秒超時、自動重試一次),避免把瞬時握手失敗誤判爲不可達。
前置條件與適用場景¶
| 一側 | 要求 |
|---|---|
| 本地 | DSH >=0.2.0-rc.2 <0.3.0,Node >=22;可選 Web/桌面 UI |
| 遠端 | 已裝 DSH 且暴露 acp profile;本機 SSH 可連;cwd 爲遠端已存在絕對路徑 |
適合:需要把構建、平臺相關命令或特定工作區操作放到遠端 Linux/macOS/Windows DSH 上跑,同時本地 Lead 會話保持在當前設備。不適合:期望共享或遷移整個本地會話到其他客戶端——那應關注官方遠程/移動端訪問能力。
注意:遠端機器視爲信任域;read-only 不能替代沙箱。調試時 DSH_SUBAGENT_REMOTE_DEBUG=1 會把遠端原始輸出帶入父會話,僅應在受控環境短時開啓。
結尾¶
dsh-subagent-remote 填補的是 DSH 官方 local-only ACP 子智能體與跨機一次性委派之間的空隙:一條 SSH、一個帶 host 的 remote_subagent 工具,加上可熱加載的多主機配置頁。若你要在 DSH 工作流裏把子任務安全地「丟」到另一臺 DSH 上,可從社區目錄與倉庫文檔對照安裝與主機字段。