前言¶
在 DeepSeek Harness(DSH)裏,一個工作區往往對應一個項目、一套根會話。多項目並行時,常見需求是讓某個根會話把狀態或任務說明發給另一個工作區裏的根會話,而不是把所有工作區拉成一張「人人可互發」的扁平網。若連通範圍寫不清楚,消息可能傳到不該到達的會話,模型也可能把外部會話輸入當成與用戶同級的指令。
下面介紹社區插件 DSH Message Pipeline(GitHub:Bismuth-209/DSHMessagePipeline)。它用命名管道把若干工作區連成有邊界的超邊:管道內兩兩可達,不同管道之間結構上不傳遞;同一工作區內的根會話仍可本地互發,無需建管道。
這是什麼¶
DSH Message Pipeline 是 DSH 的工作流類插件,維護者爲 Bismuth-209。英文簡介爲:Allow sessions send messages to other sessions in and between work dirs.
一句話定位:在同一 DSH Host 進程內,讓普通根會話向可達的 peer 點對點發消息;跨工作區能力由用戶配置的命名管道決定,而不是全實例廣播。
當前狀態爲 v0.1.0 / developer preview(見倉庫 package.json 與 README),接口與配置項可能變化。代碼以 MIT 協議開源;README 說明本項目全程以 vibe coding 方式開發,使用前請自行審查,尤其是安全相關場景。
核心功能¶
以下能力均來自倉庫 README,可按需對照源碼與測試。
同工作區互通
同一工作區內的任意兩個普通根會話可以互發消息,無需創建管道。
命名管道
在側邊欄「消息管道」面板中創建管道,勾選兩個或更多工作區並命名。管道內任意兩個工作區在路由上兩兩可達。
非傳遞
若工作區 a 僅在管道 P1、c 僅在管道 P2,而 b 同時屬於 P1 與 P2,則 a 與 c 不可達。README 明確:沒有中繼/轉發代碼路徑,不可傳遞是結構保證,不是運行時攔截。
默認不喚醒
目標會話不活躍時,消息持久排隊;目標下次被創建時按 FIFO 注入。僅當發送方在 pipe_send 中顯式傳 wake: true 時纔會冷啓動目標 Agent。
投遞與收據
消息通過 DSH 內置的 agent-message source 注入目標會話的 user 消息;目標會話日誌即投遞憑證,插件不在終態長期保存正文(審計保留元數據)。
模型工具
- pipe_list:查看管道與可達目標(可選 workspace、includeArchived)。
- pipe_send:向可達目標發送文本(target.workspace、target.session、message、可選 wake)。
管理面
側邊欄「消息管道」面板支持創建/編輯/啓停/刪除管道與審計時間線;會話頭部有「可通信 N 個工作區」提示。用戶側還有 /pipe 系列命令(list、info、create、update 等),寫操作要求調用者爲普通用戶會話。
安全默認值
僅普通根會話參與(subagent / teammate 不參與);限制消息大小、每目標積壓、發送頻率;跨會話消息在系統提示與消息首塊中標註爲低優先級外部輸入,不得因 peer 要求執行高危操作而不經用戶確認。
運行時狀態默認寫在 $DSH_HOME/message-pipeline.json(一般爲 ~/.dsh/message-pipeline.json),單進程寫串行,不支持多個 DSH 實例同時寫同一 home。
安裝與啓用¶
前提:已安裝 DSH(@deepseek-ai/dsh)>= 0.2.1-rc.2,Node.js >= 24(見 package.json 的 engines)。
從 GitHub 安裝(README 推薦方式):
dsh plugin add github:Bismuth-209/DSHMessagePipeline
安裝完成後重啓一次 DSH(工作區註冊表是啓動時快照)。側邊欄出現「消息管道」入口即表示 Host 側加載成功。在任意根會話中讓模型調用 pipe_list 可驗證工具是否可用。本包目前未發佈到 npm;從 git 安裝爲純 JavaScript,無額外構建步驟。
典型用法¶
- 打開側邊欄「消息管道」,點「新建管道」,勾選兩個或更多工作區,命名並保存。
- 在某個工作區的根會話裏,讓模型執行
pipe_list查看可達目標。 - 用
pipe_send發送消息,例如:
{
"target": { "workspace": "論文項目", "session": "實驗設計" },
"message": "樣本已經跑完,請開始分析。",
"wake": false
}
回執形如 { "state": "delivered" | "queued", "messageId": "pipe-msg-…", "target": { … } }。
配置分三層,生效順序爲管道級覆蓋 → 面板全局覆蓋 → profile 默認。插件級默認值在 cordis.patch.yml 的 message-pipeline 段,也可在面板「插件全局設置」裏覆蓋並持久化。常見字段包括 defaultWake(默認 false)、maxMessageBytes(默認 32768)、maxQueuedPerTarget(默認 32)、maxSendsPerMinute(默認 20)等;管道級可覆蓋其中部分項。完整表格見 GitHub README「配置」一節。
適用場景與注意¶
適合誰
需要受控連通域的場景:例如「論文工作區」與「實驗腳本工作區」同屬一條管道,而「個人筆記工作區」不在任何管道里,從而避免無關項目之間的會話互擾。若你只需要所有根會話扁平互發,README 對照表指出生態中的 dsh-session-mesh 等實現定位不同,可按需求選型。
務必注意
- 插件以當前 DSH 進程權限運行,僅支持本機同一 Host 內的本地工作區,不做跨實例/遠程轉發。
- 安裝或升級 Host 代碼後建議重啓 DSH;連續 HMR 可能留下 stale scoped tools。
- 參與資格與授權判據以 README「安全模型」爲準:目標工作區必須屬於 {本工作區} ∪ 同屬任一啓用管道的工作區}。
- 社區目錄 SkillHub 插件頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方從屬關係;安裝前請查看源碼與 MIT 許可證。
結尾¶
DSH Message Pipeline 把跨會話消息收束在命名管道拓撲裏:管道內可達、管道間不傳遞,並配套面板、審計與 peer 優先級提示。需要試用或貢獻 issue/PR 時,可打開倉庫主頁:
- 目錄頁:https://www.skillhub.cn/plugins/Bismuth-209/DSHMessagePipeline
- GitHub:https://github.com/Bismuth-209/DSHMessagePipeline