dsh-session-mailbox:讓 DSH 普通會話對等互發消息

前言

在 DeepSeek Harness(DSH)裏,每個會話都是獨立上下文。要把「實施」會話裏的活交給側邊欄里長期維護的「審查」會話,常見做法只有人手複製粘貼、開一次性 subagent,或接入實驗性的 Agent Teams(Lead + 隊員 + 共享任務板)。這些路徑要麼要人工搬運,要麼是父子或團隊層級,並不是兩個普通會話之間的直接協作。

下面介紹維護者 yinying8761 在 GitHub 發佈的 dsh-session-mailbox(會話信箱):裝上之後,在全局工具層註冊三個工具,任意兩個普通會話可以互相列出、讀取、投遞消息,無需改 agent preset,也不需要 Lead/teammate 結構。

這是什麼

dsh-session-mailbox 是面向 DSH Web 或 Desktop profile 的 Host 插件 bundle,當前版本 1.1.0,許可證 MIT。它依賴 Host 側的 sessionController 與 sessionQuery,在 DSH 0.2.2-rc.1 上開發與驗證。

一句話定位:讓一個會話裏的 AI 把消息或任務交給另一個會話,並讀回對方結果;雙方是對等關係,不是 subagent 父子,也不是 Agent Teams。

項目地址:GitHub - yinying8761/dsh-session-mailbox
社區目錄:SkillHub 插件頁

核心功能

安裝後無需額外配置(可選目標策略見後文),所有會話自動擁有下列工具。

工具 作用 是否會喚醒目標會話
session_list 列出會話:標題、最近活動、是否在跑、會話 id;可按標題片段過濾 否
session_read 讀取某會話最近的 user / assistant 消息 否
session_send 向某會話投遞消息或任務 是

session_send 的 target 可填會話 id、完整標題,或唯一的標題片段。mode 可選 queue(默認,作爲下一回合輸入,適合交辦)或 steer(對方正在跑時插入最近一步,適合催辦或糾偏)。

與同類社區實現相比,README 明確:本插件唯一獨有的能力是目標策略(defaultAllow / allow / deny)。投遞不走文件信箱,直接按 id/標題入箱;bundle 零依賴、無構建步驟。

安裝與啓用

需要 DSH 的 Web 或 Desktop profile。從 GitHub 安裝指定標籤:

plugin_manager  install_bundle  git+https://github.com/yinying8761/dsh-session-mailbox.git#v1.1.0

本地開發時可用目錄絕對路徑:

plugin_manager  install_bundle  <本包目錄的絕對路徑>

安裝後三個工具掛在全局工具層。若修改了插件內的 index.js,需要重啓 Harness 纔會加載新的 JS 模塊。

安裝前建議自行查看倉庫源碼與 MIT 許可證。插件在當前 profile 的 DSH 進程權限下運行:session_send 會喚醒目標會話並在其工作目錄(來自目標會話自己的 header.cwd,而非發信人)裏執行;profile 若爲 danger-full-access,跨工作區投遞等價於允許一個會話驅動另一個會話全權執行,插件本身不做工作區隔離。

典型用法

下列表述是你對當前會話說的自然語言,模型會自行調用工具,無需背誦 API。

交辦任務(A → B)

用 session_send 把「跑一遍後端測試並修復失敗項」交給「二號實施者」。寫成完整指令,它看不到我們這個對話。

只讀進度(不打擾)

用 session_read 讀「需求等文檔撰寫者」最後 3 條消息,總結它完成了什麼。

要求回信(B → A)

結論用 session_send 回給發信人。

催正在跑的會話

用 session_send 以 steer 模式告訴「審查者」:先別管風格問題,只報阻塞項。

標題片段匹配到多個會話時會報錯並列出候選,此時改用會話 id,例如:

用 session_send 發給 session-06ed43db-3976-4537-814a-66113d90509d。

目標會話收到的是帶前綴的普通用戶消息,內含來源與會話 id,並提示對方用 session_send 回信,形成雙向交付。只想看進度用 session_read,不要用 session_send,因爲投遞即喚醒。

可選:目標策略

默認所有會話互相可見、可投遞。要在 profile 收緊邊界時,在 cordis.patch.yml 裏爲該 bundle 增加 config:

- id: session-mailbox
  name: dsh-session-mailbox
  config:
    defaultAllow: true     # 默認是否允許(默認 true)
    allow: []              # 非空時,只有名單內的目標可投遞、可讀
    deny: []               # 永遠拒絕,優先級最高

匹配規則爲精確匹配(完整 session id 或完整標題,大小寫不敏感),不做片段匹配。優先級:deny > allow > defaultAllow。策略同時作用於 session_send 與 session_read;session_list 仍列出全部會話,被拒目標標註 blocked by policy。改配置後需重啓 Harness。1.1.0 爲配置式,尚無會話級圖形開關。

示例:僅允許兩個會話互通:

config:
  defaultAllow: false
  allow: ["審查者", "需求等文檔撰寫者"]

適用場景與限制

適合:你在側邊欄長期維護多個職責分明的普通會話(撰寫、實施、審查等),需要對等交接任務、讀進度、回信,又不想上 Agent Teams 或臨時 subagent。

限制(以 README 爲準):

  • 只能投遞給普通會話;subagent 子會話會被拒絕(那種場景用內置 send_message)。
  • 不能投給調用方自己。
  • 尚未有過一輪的空會話不在列表裏,也無法按 id 投遞。
  • 不做去重:模型重試同一 session_send 會投遞兩次。
  • 投遞正文截斷 4000 字符;讀回單條消息截斷 1500 字符。
  • 列表爲 profile 級,跨工作區可見;普通會話超過列表上限時需用標題片段過濾。

與其它做法的對照:內置 subagent 適合一次性子任務;@ 引用會話是單向只讀拉上下文;schedule 是定時投遞;本插件強調任意兩個普通會話對等收發。

結尾

dsh-session-mailbox 用三個全局工具補上了 DSH 多會話協作裏「對等互發」這一形態:列表、只讀、投遞與喚醒分工清晰,並可用 allow/deny 收緊誰能被喚醒。生態上 DSH 奉行「一切皆插件」;SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。

  • 目錄頁:https://www.skillhub.cn/plugins/yinying8761/dsh-session-mailbox
  • 倉庫:https://github.com/yinying8761/dsh-session-mailbox
羽毛球分组比赛记分
小程序二维码

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

小夜