dsh-fleet-mesh:面向 DSH 智能體的會話感知 Mesh 中繼

前言

在 DSH 裏做多智能體協作時,常見的 agent-to-agent 消息往往是「發一條、等一條」的請求/響應模式:適合一次性任務,卻不太適合需要連續對話、知道「誰在問、在回哪件事、要不要答覆」的協同。若每個接收方再單獨掛一個插件、單獨佔一個端口,部署和運維成本也會上去。

下面介紹社區插件 dsh-fleet-mesh(維護者 emiltsoi,目錄分類 admin-security):在 DSH 側提供 Session-aware 的 mesh 中繼——入站信封經 Ed25519 驗籤後按投遞策略變成對目標智能體的 prompt,而不是單純通知;同一套插件配置裏的 agents: 映射與 單一監聽端口,按信封裏的 [to:] 分發,第二個 DSH 智能體不必再裝第二份插件、再開第二個 listener。

這是什麼

dsh-fleet-mesh 的定位是:Session-aware mesh relay for DSH agents——帶 Ed25519 簽名的接收路由與投遞策略,以及出站發送、對等目錄與 registry 客戶端(見 GitHub README 與 package.json 描述)。

與「只轉發 JSON、不保留會話語義」的做法相比,它強調:收件方知道發送方、關聯的會話與 thread,以及 action / reply 所表達的意圖;發送側 mesh_send 在共享的 10 秒投遞預算內完成簽名與 POST,並返回 delivered 或帶原因的錯誤,不在背後靜默排隊。

當前 package 版本爲 0.2.5,許可證 MIT,要求 Node.js >= 20、dsh >= 0.1.5-rc.2。README 寫明接收與發送兩半均已完成測試(四套測試、170 個斷言)。社區目錄頁:skillhub.cn/plugins/emiltsoi/dsh-fleet-mesh。

核心功能

獨立 listener 與 HTTP 路由

插件自行綁定 listener,只暴露 /mesh/*,而不是掛在 harness 默認僅監聽 127.0.0.1 的 Web 服務上——後者會導致對端 POST 無法完成 TCP 連接;若把整個 Web 面改綁 0.0.0.0,又會連帶 GUI、API 與其它插件路由,暴露面過大。

路由 作用
POST /mesh/receive 驗證 Ed25519 簽名信封,再按策略投遞爲 prompt
GET /mesh/health 判斷投遞是否可能成功,而非進程是否 merely alive

源地址 allow 列表(先於一切重邏輯)

Node 不能按子網 bind,因此網絡邊界在請求路徑裏、JSON 解析與驗籤之前檢查 allow(如 192.168.0.0/23 覆蓋 192.168.0. 與 192.168.1.)。迴環地址始終放行;IPv4-mapped IPv6 會先規範化;非迴環 IPv6 直接拒絕。

信封格式與發送流程

Bracket 頭 + 自由正文,例如:

[mesh][v:1][from:<sender>][to:<recipient>][id:<uuid>][session:?][from_session:?][action:do|info][reply:yes|no|end][ref:?]

發送側典型調用(README 示例):

mesh_send(agent="ada", message="Review this plan", action="do", reply="yes")

步驟概括:從 peer 目錄解析 Ada 的身份 → 填充信封 → 用發送方 PKCS8 Ed25519 私鑰對 "{timestamp}\n{body}" 簽名 → 在 10 s 預算內 POST 到 Ada 的 mesh 端點。

接收時 action / reply 可缺省(默認 info / no);發送時必須顯式給出,否則 tolerant 接收端可能把請求降級爲確認。to: '*' 爲廣播,廣播不會 wake 任何人。

投遞矩陣(與 harness 語義對齊)

情況 調用 效果
空閒,或 busy 且新 thread agent.followup(msg) next-turn + wake
busy 且同 thread(ref),或來自 wake 列表對等方的 action: do agent.steer(msg) next-step + wake
不在 wake 列表,或廣播 agent.inject(msg) next-step,不 wake

收件箱是對 session 事件的持久投影,重啓後排隊消息仍可恢復;插件內存裏的 spool 做不到這一點。

五個工具(命名與 hermes-mesh 對齊)

工具 用途
mesh_list 從本地 identity store 列出 peer(只讀、無網絡)
mesh_send 簽名並投遞一封;state 爲 delivered 或 error(如 unreachable、unauthorized、unknown-peer、not-configured)
mesh_sync 從 registry 拉取 peer 身份到本部署緩存
mesh_register 向 registry 發佈本智能體行(名稱、接收 URL、公鑰)
mesh_deregister 從 registry 撤回本智能體行

安全與防重放

  • 認證依賴對原始請求字節的簽名,而非重序列化 JSON;簽名形式爲 "{X-Mesh-Timestamp}\n{body}"(無 timestamp 時回退爲 body alone)。
  • 無 CSRF 守衛(server-to-server webhook 場景)。
  • 默認 300 s replay 窗口 + 進程內 dedupe,避免重複信封觸發第二輪。
  • 另有每輪注入上限、wake 預算、runaway breaker 等防護;breaker 僅由會話事件流中的真實用戶消息釋放,不由 mesh 流量自證。

刻意不做的事(README 明確)

  • 無 outbound spool:發送要麼落地要麼明確失敗,避免「報告成功但對端不在」誤導發送方。
  • 無 session.cancel:中斷工作由人決定,不由 peer 決定。
  • 尚無 thread ledger;無 fleet 級 wake 策略——wake 列表是控制「話癆 peer」與成本的關鍵門。

安裝與啓用

官方安裝命令(來自 README):

pnpm add dsh-fleet-mesh

安裝後將其加入 profile 的 bundles。插件自帶中性默認:無配置時不打開 listener、不服務任何智能體。

在 profile 的 patch 層用 id 覆蓋配置,例如:

- id: dsh-fleet-mesh
  config:
    host: '0.0.0.0'            # 默認僅 loopback
    port: 8760
    allow:                     # 第一道門,先於其它邏輯
      - 192.168.0.0/23
    durableRoute: '...'        # unreachable 時告知發送方應寫入的持久路徑
    agents:
      <agent-name>:
        preset: <preset>       # 會話由 PRESET 解析,非 pinned id
        sessionId: null        # 可選覆蓋
        keyPath: '...'         # 本智能體 Ed25519 私鑰(PKCS8 PEM)
        wake: []               # 誰可以 START 一輪;默認可爲空

插件不內置子網與智能體名稱;誰可以連 listener、誰可以 wake,由部署方決定。

典型用法

  1. 爲每個要參與 mesh 的智能體配置 agents.<name>、keyPath,並按需設置 wake。
  2. 用 mesh_register 把名稱、接收 URL、公鑰發佈到 registry;其它節點用 mesh_sync 更新本地 peer 目錄。
  3. 發送方用 mesh_list 確認本地目錄,再 mesh_send 指定 agent、message、action、reply。
  4. 對端在 allow 與簽名、replay、dedupe 通過後,按投遞矩陣調用 followup / steer / inject。
  5. 發送失敗時根據返回原因處理(例如 unreachable 時 README 提到會指向 durableRoute,避免向空地址重試)。

適用場景與注意

適合:同一 DSH 部署或受控內網中,多個智能體需要保留會話與 thread 語義的互發消息;需要 Ed25519 身份、registry 發現、以及「失敗即報錯、不虛假成功」的出站語義;希望工具命名與 hermes-mesh 接近、便於跨 substrate 遷移習慣。

注意:

  • 插件以當前 dsh 進程權限運行;安裝與啓用前請自行審閱 源碼與 LICENSE,確認 allow、wake、keyPath 與網絡暴露符合你的安全基線。
  • DSH 生態強調「一切皆插件」;SkillHub 目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
  • 若 harness 主 Web 僅監聽本機,不要指望把 mesh receive 掛上去替代獨立 listener——README 用實測說明此路不通。

結尾

dsh-fleet-mesh 把「驗簽入站 + 會話感知投遞 + 顯式成敗的發送 + registry/目錄」收進一個 admin-security 向的 DSH 插件:一個端口、一份 agents 配置服務整份 substrate 上的多智能體 mesh。

  • 目錄頁:https://www.skillhub.cn/plugins/emiltsoi/dsh-fleet-mesh
  • 源碼與文檔:https://github.com/emiltsoi/dsh-fleet-mesh
羽毛球分组比赛记分
小程序二维码

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

小夜