跨工作區信使 dsh-cross-workspace:DSH 多工作區會話互通

前言

在 DeepSeek Harness(DSH)裏開多個工作區時,會話通常各自獨立:A 區裏的 agent 不知道 B 區剛討論的結論,也很難把本地文件或結構化 JSON 穩妥地交給另一個會話處理。靠複製粘貼或人工切換窗口,成本低但不可編排,也無法讓 agent 在合適時機「等回信」或羣發協作。

下面介紹社區插件 dsh-cross-workspace(維護者 dream-office,分類:工作流)。它在本機同一個 DSH Host 進程內充當跨工作區信使:不同工作區的會話可以互發消息、傳文件與 JSON,支持手動羣組、收件箱與管理面板,並提供可視化交流圖。消息與附件落在本機信箱,插件不做出站網絡請求。該插件爲非官方實現,與 DeepSeek / DSH 官方無隸屬關係。


這是什麼

一句話:讓不同工作區裏的 DSH 會話互相發消息、傳文件、傳 JSON;可手動拉羣羣發,也可在 Web 面板裏像收郵件一樣管理未讀與歷史。

三條運行時規則(理解投遞結果時很重要):

  1. 消息先寫入本機信箱,再決定只投信箱還是喚醒目標會話。
  2. 喚醒是「盡力而爲 + 確認」:目標運行中會等待,超時則排隊;歸檔、冷卻或啓動失敗會降級,不謊報已成功喚醒。
  3. 跨工作區來信對收件 agent 屬於外部輸入,會標明並非當前用戶或系統指令,不能用來繞過用戶規則。

核心功能

尋址與投遞

收件方通過 to 指定,支持工作區絕對路徑或標題、會話 id、session:<id>、羣組名、group:<名> 等寫法;解析失敗會返回可讀錯誤與候選列表(如 ambiguous)。

mail_send 的 delivery.requested 表示請求模式,delivery.mode 表示實際生效模式。例如請求 wake 時,可能實際爲 wake(已確認進入目標會話日誌)、queued(目標忙,排隊到下一輪)、mailbox(降級信箱)或 none(例如工作區無可喚醒會話)。工具調用成功不等於對方已讀;需結合 delivery.mode 與後續回覆判斷。

羣組

在面板左欄維護羣組:跨工作區勾選會話、改名與增刪成員;刪除羣組不刪歷史消息。Agent 工具只能向已有羣組發信,不能自建羣組。羣發默認 mailbox;顯式 wake=true 才嘗試喚醒成員。可指定 memberSessionIds 只發給部分成員。

附件與 JSON

消息可帶任意 JSON data 與本地 files 路徑列表。附件複製到 $DSH_HOME/cross-workspace/attachments/<messageId>/,默認僅允許發送方工作區內的文件(realpath 校驗);可在設置中開啓 allowExternalAttachments(會放寬邊界,需謹慎)。

面板與交流圖

側欄「跨工作區信使」提供收件箱、發信、羣組管理;「交流圖」展示 Agent 網絡卡片圖與跨 Agent 協作時間線(圖與時間線條數有上限,側重近期協作)。未讀角標直到已讀或「全部已讀」才清除。

Agent 工具(節選)

安裝驗證通過後可使用 workspace_list、mail_send、mail_wait、mail_reply、mail_inbox、mail_read 等;完整參數見倉庫 docs/API.md。


安裝與啓用

前置條件:DSH Desktop(帶 Plugin Manager;README 實測 DSH 0.2.2-rc.1),Node.js >=22.13.0。插件無 npm 依賴、無構建步驟;engines.dsh 聲明 >=0.2.2-rc.1。

本地目錄安裝(將路徑換成你本機已存在的項目目錄):

plugin_manager install_bundle target="<本項目絕對目錄>"

期望:application: "applied",enabled: true(安裝的是本地 link:,非複製)。

從 GitHub 獲取源碼後安裝:倉庫地址 https://github.com/dream-office/dsh-cross-workspace。按 README 將克隆後的目錄作爲 target 執行 plugin_manager install_bundle;升級時在倉庫內更新後重新安裝或重載。2026-11-07 起項目不再以 npm 作爲分發渠道。

若插件已在列表但被禁用:在 Plugin Manager 中打開 include:cross-workspace。

卸載(歷史消息保留在 $DSH_HOME/cross-workspace,卸載不刪):

plugin_manager remove_bundle target=dsh-cross-workspace

驗證安裝:

  1. workspace_list 工具可用,或側欄出現「跨工作區信使」圖標。
  2. 設置頁出現「跨工作區信使」。
  3. 側欄 sidebar.panellist、main、settings.section 三個槽位爲 active。

升級前建議備份 $DSH_HOME/cross-workspace;數據遷移說明見倉庫 docs/UPGRADING.md。


典型用法

面板快速上手

  1. 刷新 DSH 頁面,打開左側「跨工作區信使」。
  2. 左欄選工作區或會話,中間查看收件箱。
  3. 「新消息」裏選收件方(工作區 / 會話 / 羣組),填寫主題與正文,可選 JSON 與附件路徑;需立即處理則勾選「喚醒」,否則只投信箱。
  4. 對方 agent 用工具回信,或在面板直接回復。
  5. 在「交流圖」查看近期協作關係與時間線。

Agent 發信與等待(示例)

路徑與會話 id 須以 workspace_list 返回值爲準,勿照抄示例路徑:

workspace_list
mail_send to="D:\\work\\項目A" subject="接口確認" body="..." wake=true
mail_send to="group:前端組" body="..."
mail_send to="group:前端組" memberSessionIds=["session-..."] body="..."
mail_wait timeoutSeconds=120
mail_reply id="m-..." body="收到"

發信後務必查看返回的 delivery.mode,再決定是否 mail_wait 或繼續對話。


設置要點

在 設置 → 跨工作區信使 中可調整默認值與邊界,例如:

設置 默認 作用(摘要)
defaultDelivery wake 未傳 wake 時的默認投遞方式
allowWake true 關閉後所有喚醒降級信箱
allowWorkspaceBroadcast false 工作區廣播,默認關閉
promptContext true 是否在系統提示注入未讀摘要
retentionDays 30 過期清理(0 表示不按天清理)
maxHops 6 回覆鏈深度上限,防喚醒循環
allowExternalAttachments false 是否允許工作區外附件

更多上限(正文大小、附件數量等)見 lib/store.js 的 DEFAULT_SETTINGS;運行期以 store.json 爲準。


適用場景與注意

適合:同一臺機器上多個 DSH 工作區需要編排式通信——例如後端工作區把接口約定 JSON 發給前端工作區會話、多 agent 拉羣同步狀態、某會話 mail_wait 等另一邊的結論再繼續。

安全與權限:數據僅存本機 $DSH_HOME/cross-workspace;管理 API 需 POST 與約定請求頭,在 Host 已認證頁面上下文中使用。插件按單機單 Owner 設計,不是多租戶隔離。安裝與啓用前,應按慣例自行審閱源碼與 MIT 許可證;插件以當前 DSH 進程權限訪問本機文件與會話。

會話過濾(DSH 0.2.4+):已歸檔、空白「新會話」、失效會話不會出現在可選列表;仍可用顯式 session:<id> 投遞,但喚醒歸檔目標會誠實報告未喚醒。

倉庫文檔(AGENTS.md、docs/API.md、docs/ARCHITECTURE.md)供開發與驗收對照;README 記載測試爲 191 tests / 57 suites(以當前倉庫爲準)。


結尾

dsh-cross-workspace 把多工作區之間的消息、文件與 JSON 交換收攏到本機信箱與一套明確投遞語義裏,並配上收件箱、羣組與交流圖,便於人或 agent 協同。如需安裝說明與最新版本,以 GitHub README 爲準;社區索引見 SkillHub 目錄頁 與 dream-office/dsh-cross-workspace。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜