前言¶
DeepSeek Harness(dsh)把模型、工具、會話、循環都做成插件,官方倉庫的口號就是「Everything is a Plugin」。單實例用起來很順:一個進程、一組 session、一套工具。真要同時跑兩臺機器、兩個 web 服務,或者讓一個 agent 把結果交給另一臺機器上的 session,默認能力就不夠了——實例之間沒有現成的消息通道,也沒有探活和事件同步。
dsh-interconnect 就是補這塊的社區插件。它給 host 掛上跨實例的 HTTP / WebSocket 服務,再給模型暴露 interconnect_send、interconnect_ping 兩個工具,讓一個 DSH 實例能向本機、另一臺機器、或另一臺機器上的別的 DSH 實例發消息、探測活性,並雙向推送生命週期事件。
本文按社區插件目錄頁、GitHub 倉庫 README、源碼與 npm 頁面覈對後整理。社區目錄 deepseek-harness-plugin.com 是獨立站點,不是 DeepSeek / 幻方的官方應用商店;插件本身由 GitHub 用戶 Chinesezjc 維護,MIT 許可。
這是什麼¶
dsh-interconnect 是一款工作流與自動化插件,當前 npm 版本爲 0.2.0,主要語言是 TypeScript。倉庫創建於 2026-08-13,最近一次推送是 2026-08-14 的 Release 0.2.0。社區目錄 2026-08-15 收錄時顯示 26 星;2026-08-17 查詢 GitHub 倉庫爲 30 星。
它解決的是跨實例交接,而不是單進程裏的多智能體編排。倉庫把能力拆成兩個 Cordis 插件,一次安裝會作爲 profile bundle 一起掛上:
interconnect:host 級服務,註冊爲ctx.interconnect。對外提供/interconnect/*HTTP 端點和/interconnect/linkWebSocket,對內負責投遞消息、探活、事件 fan-out。tool-interconnect:模型可見工具。interconnect_send向對端指定 session 投遞一條文本;interconnect_ping探測對端是否可達以及它自稱的實例身份。
兩端要用同一把共享密鑰 DSH_INTERCONNECT_TOKEN 做 Bearer 鑑權。token 未配置時入站直接拒絕(fail-closed),比較按 timing-safe 方式進行。
核心功能¶
host 服務:HTTP 投遞與探活¶
interconnect 在 host webserver 上自管路由,不走 Connection RPC 通道。源碼註釋寫明原因:RPC 處理器看不到 Authorization 頭,而這套服務的信任邊界就是 Bearer token。
HTTP 端點都是 POST,Content-Type 必須是 application/json,路徑前綴爲 /interconnect:
| 端點 | 作用 |
|---|---|
/interconnect/ping |
探活,成功則返回 pong: true 和本實例 instanceId |
/interconnect/send |
向本實例一個仍存活的 session 投遞文本 |
/interconnect/event |
接收對端推來的生命週期事件 |
請求體複用 DSH host API 的 client-request 信封:type、rpcId、method、payload。method 必須和路徑最後一段一致,否則返回 bad-request。請求體上限 1MB。
send 只投遞給當前仍在跑的 agent。對端 session 不存在或已經銷燬時,返回 delivered: false,不會憑空創建會話。投遞進 inbox 的消息 source 是:
{ kind: 'plugin', plugin: 'dsh-interconnect' }
不是 { kind: 'user' }。接收方據此區分「跨實例交接」和「本地用戶輸入」。這是 0.2.0 相對 0.1.0 的行爲變更,倉庫用 minor 版本號標出。
投遞方式由配置項 delivery 決定,默認 followup:
followup:喚醒目標 agent,開一輪新 turn 處理這條消息inject:只寫入模型可見上下文,不立刻喚醒;要等下一次 step 邊界纔可能被取到,已經 claimed 的 step 可能錯過
WebSocket 鏈路與事件 fan-out¶
/interconnect/link 是持久 WebSocket。鑑權同樣看 Bearer。鏈路上的應用幀只有兩種:hello(撥號方報上自己的 sender)和 event(推一條通知)。心跳用 WebSocket 協議層 ping/pong,間隔 30 秒,不另做應用層 keepalive。鏈路斷開後按指數退避重連。
本地會監聽一批 host 事件,再 fan-out 給已訂閱的對端。源碼裏序列化的 kind 包括:
agent/created、agent/disposed、agent/status(idle/running)session/created、session/disposedsubagent/end(僅本地 in-process 子智能體)
對端收到後,本實例發出 interconnect/event。HTTP 訂閱和 WebSocket 推流兩條路都有:啓動時可在配置裏寫 peers 列表;運行時也可以 subscribe / unsubscribe,或調用 link(peer) 建立長連接。
模型工具:讓 agent 自己交接¶
tool-interconnect 把服務能力暴露給模型,不自己發 HTTP。工具參數來自源碼註冊表:
interconnect_send
baseUrl:對端 origin,例如http://127.0.0.1:3080或http://peer-host:9001sessionId:對端要投遞的 session idtext:消息正文
成功時返回 { delivered, instance }。
interconnect_ping
baseUrl:對端 origin
可達時返回 { reachable: true, instance };傳輸或鑑權失敗時 { reachable: false }。
兩個插件都掛在 host composition。interconnect 是進程級服務,必須 host 級;tool-interconnect 也放 host,因爲當前沒有做 TypeRT @Remote / Gateway 綁定,放進 agent preset 的 isolate realm 後,工具行注入不到這個服務。
安裝與啓用¶
社區目錄頁給出的安裝命令是(以頁面原文爲準):
dsh plugin add github:Chinesezjc/dsh-interconnect
需要可復現安裝時,把 commit 哈希釘死。當前 main 最新提交是 2026-08-14 的 75488fbc4cbfef180e3f36a24438b42f00f43c5c(Release 0.2.0):
dsh plugin add github:Chinesezjc/dsh-interconnect#75488fbc4cbfef180e3f36a24438b42f00f43c5c
倉庫 README 還寫了從 npm 或本地路徑安裝的方式。包名是 dsh-interconnect,registry 上的 tarball 自帶 lib/*.js 和類型聲明,安裝時不跑構建:
dsh plugin --profile <name> add dsh-interconnect
dsh plugin --profile <name> add file:/path/to/dsh-interconnect
dsh plugin add 會把倉庫識別爲 bundle,按根目錄 cordis.patch.yml 插入兩行插件,並追加進 profile 的 dsh.profile.bundles。補丁裏的默認配置是:
- insert:
- id: interconnect
name: dsh-interconnect/interconnect
config:
instanceId: dsh
requestTimeoutMs: 10000
- id: tool-interconnect
name: dsh-interconnect/tool-interconnect
instanceId 會回顯在 ping / send 結果裏,只作診斷,不參與路由。多實例並存時,應改成能區分彼此的值。requestTimeoutMs 默認 10000,上限 60000。還可以按需加上:
peers:啓動時就要 fan-out 的對端 origin 列表,缺省爲空delivery:followup或inject,缺省followup
裝完需要重啓 web 服務,host 側纔會生效。然後在兩端實例的 .credentials.yaml(或等價憑據源)裏配置相同的 DSH_INTERCONNECT_TOKEN。token 是共享密鑰,誰拿到誰就能往對端活 session 裏塞消息,不要提交進倉庫,也不要在多組互不信任的實例之間複用。
典型用法¶
下面參數與信封格式來自倉庫源碼和單測,可以按原樣理解,不要把示例裏的地址、session id、token 直接抄到生產環境。
1. 先探活,再投遞¶
agent 側先對對端 origin 做 interconnect_ping,再 interconnect_send。單測裏的調用形狀是:
interconnect_ping
baseUrl: http://127.0.0.1:3080
interconnect_send
baseUrl: http://127.0.0.1:3080
sessionId: sess-1
text: 構建已完成,產物在 /tmp/out
對端 session 必須已經存在並且 agent 仍活着。本插件不負責在對端「新建一個對話」。
2. 用 HTTP 直接探活¶
不經過模型工具時,也可以對 host 發 POST。源碼裏出站請求的信封如下(rpcId 換成你自己的 UUID,token 換成憑據裏的值):
curl -X POST http://127.0.0.1:3080/interconnect/ping \
-H 'content-type: application/json' \
-H 'Authorization: Bearer <DSH_INTERCONNECT_TOKEN>' \
-d '{"type":"client-request","rpcId":"00000000-0000-0000-0000-000000000001","method":"ping","payload":{}}'
未配置 token、token 不匹配、或 Content-Type 不是 JSON,請求會被拒絕。這是設計如此,不是安裝失敗。
3. 多機雙向事件¶
兩臺機器都裝同一 bundle、配同一 token 之後,把對端 origin 寫入 peers,或在運行時 link 到對端。本機 agent 狀態變化會推到對端,對端入站事件以 interconnect/event 發出。倉庫 README 寫明:維護者已在兩臺機器之間實測過消息投遞、WebSocket 事件推流,以及 agent 經 interconnect_send 反向回發。這是倉庫自述,不是第三方評測。
README 同時寫明當前 22/22 條單測通過(服務 17 + 工具 5),CI 會 clone 公開的 deepseek-ai/deepseek-harness 作爲 sibling checkout 再跑 pnpm run check。
適用場景與注意事項¶
比較適合這些情況:
- 本機兩個 DSH web 實例要互相交接任務結果
- 開發機與構建機、或兩臺服務器上的 DSH 需要探活和消息投遞
- 希望把 agent / session / 本地 subagent 的生命週期同步給另一側,而不是自己輪詢日誌
它不替代多智能體編排類插件(例如目錄裏的 dsh-agent-teams、dsh_workflow)。那些管的是一個 Harness 裏怎麼組團隊、怎麼跑工作流;dsh-interconnect 管的是實例與實例之間的通道。
使用前注意:
- 權限。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前先看 GitHub 源碼和 MIT 許可證;生產環境優先固定 commit 哈希。
- 密鑰。
DSH_INTERCONNECT_TOKEN未配置則入站 fail-closed;配置了就要當共享密鑰保護。誰持有 token,誰就能向對端活 session 投遞文本。 - 網絡暴露面。服務掛在 host webserver 的
/interconnect上。如果 web 端口對不可信網絡開放,等於把這條通道一起暴露出去。 - 只投遞給活 session。對端 agent 不在,
delivered爲 false,不會自動拉起。 - host 級掛載。不要指望把它丟進 isolate 的 agent preset 就能用;當前架構要求兩個插件都在 host。
- 運行依賴。
ws由宿主node_modules提供(構建時 external),不是這個包單獨再裝一份。 - 版本字段。npm /
package.json爲 0.2.0;倉庫裏的dsh.plugin.json仍寫着0.1.0,以 npm 版本爲準。
小結¶
dsh-interconnect 給 DeepSeek Harness 補上了跨實例的消息、探活和事件通道:host 側是帶共享密鑰的 HTTP / WebSocket 服務,模型側是兩個可調用的工具。它體量不大,邊界清楚,適合已經在多實例或多機器上跑 DSH、需要把結果交出去而不是隻在一個進程裏編排的人。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-interconnect/
GitHub:https://github.com/Chinesezjc/dsh-interconnect
npm:https://www.npmjs.com/package/dsh-interconnect