前言¶
DeepSeek Harness (dsh) 提供了 subagents 和 Web UI 中的 @session 提及作爲內置的跨會話機制。前者是父子關係,後者是單向只讀的。在許多場景下,需要兩個獨立的 dsh 會話(例如,分別運行在不同機器上的數據庫助手和前端助手)進行雙向通信。此插件通過在獨立進程之間建立點對點、無中心的消息通道來解決這個問題。
插件定位¶
這是一個無中心、點對點、跨進程(可選跨機器)的消息通道。
* 模型驅動:模型通過調用 cross_session_list_agents 發現對等會話,並通過 cross_session_send_message 發送文本。
* 安全注入:消息以 form: 'relay' 形式注入,無需對工具調用進行授權;接收方工具調用仍需用戶批准(默認拒絕)。
* 可靠傳遞:支持發送端投遞、指數退避和死信處理,確保消息最終送達。
安裝¶
先決條件:Node.js >= 24.11 和工作的 dsh 環境。
- 安裝依賴並構建:
npm install
npm run build
- 添加插件到配置文件:
dsh plugin --profile demo add ./cross-session-messaging
dsh --profile demo --dump-config
典型用法¶
- 在 DSH 中打開兩個獨立會話。
- 在其中一個會話中,使用自然語言提示:
“List the other sessions currently running, then send one of them a message: hello.” - 模型調用
cross_session_list_agents進行發現,調用cross_session_send_message進行發送。 - 另一個會話接收
form: 'relay'文本。
配置¶
配置在插件的 cordis.patch.yml 下的 config: 中。本地使用通常只需要 name 和 inbound 策略:
- insert:
- id: cross-session-messaging
name: '@wy/dsh-cross-session-messaging'
config:
dirs:
baseDir: ~/.dsh/cross-session # 數據根目錄,默認值
inbound:
rules: [] # 匹配規則,空列表表示允許所有
defaultDecision: auto # 默認決策,auto 會根據 DSH_PERMISSION_MODE 判斷
name: '' # 會話名稱,默認使用 shortId
跨機器通信:
需要配置 remote 字段:
remote:
listen: { host, port, identity, secret }
tls: { key, cert }
peers:
- { name, host, port, secret, tls, tlsCa/tlsFingerprint }
remote.listen: 本機的 TCP 監聽配置。remote.tls: 監聽器證書配置。remote.peers: 發送端使用的靜態對等節點列表。- 注意:跨機器 TLS 需要配置
tlsCa或tlsFingerprint,否則連接將被拒絕。
工具¶
cross_session_list_agents: 列出可達的 peer 會話。cross_session_send_message: 向會話發送文本。cross_session_inbox_review: 審查待接受/拒絕的消息。cross_session_inbox_resolve: 解決待處理消息。
注意事項¶
- 需要 Node.js >= 24.11。
- 消息作爲“relay”文本注入,不自動批准工具調用。
- 接收工具調用仍需用戶批准(默認拒絕)。
- 跨機器通信需要配置遠程監聽器和 TLS 設置。
- 跨機器 TLS 需要配置
tlsCa或tlsFingerprint。
生態¶
DSH 理念是“一切皆插件”。此插件由 Weiyang742 維護,許可證爲 MIT。