前言¶
在 DeepSeek Harness(DSH)裏開多個工作區時,會話通常各自獨立:A 區裏的 agent 不知道 B 區剛討論的結論,也很難把本地文件或結構化 JSON 穩妥地交給另一個會話處理。靠複製粘貼或人工切換窗口,成本低但不可編排,也無法讓 agent 在合適時機「等回信」或羣發協作。
下面介紹社區插件 dsh-cross-workspace(維護者 dream-office,分類:工作流)。它在本機同一個 DSH Host 進程內充當跨工作區信使:不同工作區的會話可以互發消息、傳文件與 JSON,支持手動羣組、收件箱與管理面板,並提供可視化交流圖。消息與附件落在本機信箱,插件不做出站網絡請求。該插件爲非官方實現,與 DeepSeek / DSH 官方無隸屬關係。
這是什麼¶
- 名稱:
dsh-cross-workspace(跨工作區信使) - 當前版本(以倉庫
package.json爲準):0.8.5 - 許可證:MIT
- 倉庫:https://github.com/dream-office/dsh-cross-workspace
- 目錄頁:https://www.skillhub.cn/plugins/dream-office/dsh-cross-workspace
一句話:讓不同工作區裏的 DSH 會話互相發消息、傳文件、傳 JSON;可手動拉羣羣發,也可在 Web 面板裏像收郵件一樣管理未讀與歷史。
三條運行時規則(理解投遞結果時很重要):
- 消息先寫入本機信箱,再決定只投信箱還是喚醒目標會話。
- 喚醒是「盡力而爲 + 確認」:目標運行中會等待,超時則排隊;歸檔、冷卻或啓動失敗會降級,不謊報已成功喚醒。
- 跨工作區來信對收件 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
驗證安裝:
workspace_list工具可用,或側欄出現「跨工作區信使」圖標。- 設置頁出現「跨工作區信使」。
- 側欄
sidebar.panellist、main、settings.section三個槽位爲 active。
升級前建議備份 $DSH_HOME/cross-workspace;數據遷移說明見倉庫 docs/UPGRADING.md。
典型用法¶
面板快速上手¶
- 刷新 DSH 頁面,打開左側「跨工作區信使」。
- 左欄選工作區或會話,中間查看收件箱。
- 「新消息」裏選收件方(工作區 / 會話 / 羣組),填寫主題與正文,可選 JSON 與附件路徑;需立即處理則勾選「喚醒」,否則只投信箱。
- 對方 agent 用工具回信,或在面板直接回復。
- 在「交流圖」查看近期協作關係與時間線。
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。