前言¶
在 DeepSeek Harness(DSH)裏開多個會話窗口時,各窗口彼此獨立:模型只能看到當前會話的上下文,無法直接詢問「另一個窗口在做什麼」,也難以把新事實交給對方繼續處理。常見做法是人工複製粘貼 session id 和消息,或在外部腳本里再編排一遍,既打斷工作流,也容易漏掉回覆路徑。
下面介紹社區插件 dsh-tool-session-message(維護者 BigBugy,分類:工作流)。它在同一 DSH 宿主進程內註冊工具 session_send,把一條 user 消息投遞到指定 session id 的目標會話,並在消息信封裏附帶發送方 Session ID,便於多窗口互相認身份並按同樣方式回傳。
這是什麼¶
dsh-tool-session-message 面向 DeepSeek Harness 的跨會話消息能力:通過 session_send(session_id, message, mode?) 向同一 DSH host 上的任意會話發送用戶消息,讓對方開始新一輪對話,或在運行中的輪次裏插話(steer 模式)。每條投遞消息會自動加上身份頭,說明來源 session 以及如何用 session_send 回覆。
插件基於 Cordis 注入 sessionController 服務,不發佈到 npm,需通過 github: 規格或本地 link 安裝。當前 package 版本爲 0.2.0,許可證 MIT;要求 DSH 0.2.1-rc.5 或兼容版本(依賴 sessionController)。
核心功能¶
session_send 工具¶
- 參數:
session_id(須保留session-前綴)、message、可選mode。 mode:默認"followup",作爲目標會話的下一條 user 輪次排隊;"steer"則注入到正在執行的輪次中。- 返回值:宿主確認的結構化 JSON,字段包括
ok、from、to、mode、requestId、result。
身份信封¶
接收方看到的文本會自動前綴如下信息(便於知道誰發的、如何回傳):
【跨會話消息 · session_send】
from: session-xxxxxxxx-...
reply: session_send(session_id="session-xxxxxxxx-...", message="...")
運行邊界¶
- 目標會話必須與發送方處於同一 DSH 宿主進程(例如桌面應用的多窗口場景滿足此條件)。
- 工具僅調用宿主的
sessionController.prompt,無網絡、無寫文件、無 shell;消息會以普通 user 消息形式寫入目標會話 transcript。
安裝與啓用¶
桌面應用(推薦)¶
在 DSH 中打開 Settings → Plugins → Add plugin,粘貼:
github:BigBugy/dsh-tool-session-message
插件管理器支持 npm 包名、GitHub 倉庫與本地目錄;本包未發佈到 npm,請使用上述 github: 規格。
CLI 部署¶
僅 CLI 部署時使用:
dsh plugin --profile <profile> add github:BigBugy/dsh-tool-session-message
桌面版不自帶 dsh 命令,桌面用戶應通過 Settings → Plugins 安裝。
本地開發(手動)¶
- 將包放到
<profile>/node_modules/dsh-tool-session-message(<profile>例如~/.dsh/profiles/desktop)。 - 在 profile 的
package.json中聲明依賴與 bundle,例如:
{
"dependencies": { "dsh-tool-session-message": "link:<path-to-this-package>" },
"dsh": { "profile": { "bundles": [ "...", "dsh-tool-session-message" ] } }
}
- 包自帶
cordis.patch.yml與dsh.bundle.patch,工具在進程級注入。 - 重啓 DSH(宿主插件在啓動時加載;代碼變更後需重啓)。
典型用法¶
讓模型調用工具,或直接寫出調用形式。README 示例:
session_send(session_id="session-0e8596c3-...", message="What are you working on? Reply briefly.")
接收方根據信封中的 from: 行,用 session_send 回傳:
session_send(session_id="<the id in from:>", message="...")
實現上每次調用需生成獨立的 requestId(如 crypto.randomUUID()),否則宿主會拒絕 prompt(prompt rejected)。
適用場景與注意¶
適合:在同一 DSH 桌面實例裏並行多個會話,需要模型或工作流在窗口之間傳遞簡短指令、狀態詢問或事實補充,且希望回覆路徑明確(信封 + 對稱的 session_send)。
權限與安全:該工具允許模型向其他會話注入 user 提示,可能觸發目標會話的新輪次。應僅在您可控的 profile 中啓用,安裝前建議閱讀源碼與 MIT 許可證。社區目錄頁與 GitHub 倉庫由維護者與社區維護,與 DeepSeek / 幻方無官方從屬關係。
兼容性:README 標明在 DSH 0.2.1-rc.5 上測試;更早版本是否具備 sessionController 未說明。