前言¶
在 DeepSeek Harness(DSH)裏做多會話、多團隊協同時,常見做法是自建網關或中心化註冊表:誰先上線、卡片怎麼籤、對端掛了誰來兜底,都要自己接。社區插件 @nelsonlongxiang/dsh-open-a2a-net 走另一條路——不設中心服務器,讓每臺已裝插件的 DSH 成爲開放 A2A(Agent-to-Agent)網絡上的一個節點,用簽名且會過期的 agent card、種子 URL 與引薦發現對端,再經模型工具直連路由。
下面按「這是什麼 → 能做什麼 → 怎麼裝 → 怎麼用 → 注意點」說明,事實以 GitHub README 與包元數據爲準。
這是什麼¶
@nelsonlongiang/dsh-open-a2a-net 是面向 DSH 的工作流類插件,維護者爲 NelsonLongiang。一句話定位:把一次 DSH 部署變成去中心化 agent 網絡中的單節點——無中心服務、無統一註冊表。
節點在開啓 announce 時於 /.well-known/agent-card.json 發佈簽名、可過期的 agent card;通過種子 URL 與引薦(每張 card 列出已知 peer)發現鄰居;借 zone 委託(GNUnet GNS 風格)解析名稱;對可達候選做直連路由與故障轉移。主會話還可暴露爲 session node,供其他主機在 Web 側欄發現並加入。
當前 npm 包版本(package.json):0.8.1-preview.3。
核心功能¶
模型工具(十二項)¶
插件在共享 tool runtime 上註冊模型工具。默認開啓 teamScopeInfo 時,a2a_teams、a2a_status、a2a_probe 按本機「已加入團隊」範圍回答:[this host] 行加上爲本機已聲明團隊提供服務的 peer;a2a_tasks(本機派發賬本)不受該範圍限制。
README 中的代表性工具如下(完整表格見倉庫 README):
| 工具 | 作用概要 |
|---|---|
a2a_whoami |
本機在網絡上的身份 |
a2a_teams |
可見團隊列表(本機行 + 範圍內 peer 團隊) |
a2a_route |
向團隊發消息;可複用 context_id 續聊;對端不可達時故障轉移 |
a2a_tasks |
三層回執契約對賬:未結清任務保留 pending,過期進死信,結清進有界歸檔 |
a2a_probe |
探測已跟蹤機羣的可達性與 RTT,可區分 unreachable 與 rejected |
a2a_route 同步等待:同機會話目標最長約 180s;跨 peer 直連有約 15s 傳輸預算,否則可能返回 -32005(已投遞未結清),應按 task id 對賬而非盲目重發。async: true 可跳過等待。
Web 側欄網絡面板¶
重啓 dsh web 後,在側欄頁腳打開網絡面板,展示本機近期網絡活動:進行中路由、待結清回執、路由活動環等;同主機會話行可跳進 GUI。入網/離網、畫布團隊與成員編排已移至工作臺,不再在側欄完成。Session 團隊命名爲 <team>/<id8>(Web 會話取 id 去掉 session- 前綴後的前 8 字符;import-<uuid> 會話保留 import- 前綴規則,避免 id 坍縮)。
A2A 工作臺(Nexus)¶
全頁工作臺路徑:/__dsh_a2a_nexus/(0.6.0 起取代 Three.js 3D 視圖;規劃板爲默認主舞臺)。側邊欄含 Directory、Hosts、Ledger、Activity、Plan 等;規劃板用於建畫布團隊、排成員、加入/離開網絡,佈局可持久化。
狀態路由與 agent card¶
默認 sessionNodes 開啓時,在共享監聽器上註冊 /__dsh_a2a/* 等狀態與控制路由;僅當 announce: true(默認 false,且組合中需有 web server)時註冊 /.well-known/agent-card.json。對已鏈接調用方暴露更多 peer / session 信息;未加入的 session node 不會對外公佈。
歸檔與會話生命週期¶
歸檔會話會從節點網絡摘除:卸載 node、撤回 roster、從列表與 card 隱藏且不再喚醒;加入意圖仍保留在 joined.json,避免冷會話無法恢復。
安裝與啓用¶
在 web profile 下從 npm 安裝(官方 README 命令):
dsh plugin --profile web add @nelsonlongxiang/dsh-open-a2a-net
然後重啓 dsh web,在側欄頁腳打開網絡面板。
說明(摘自 README):
- 參數會原樣交給 pnpm;可從包名、本地路徑或 Git URL 安裝。
- 從 registry 安裝時包已帶構建產物,無需本地 build。
- 若用 Git URL 安裝,需滿足
pnpm >=11.24且 <12,且 pnpm 11 可能阻止 Git 包的 build script;dsh plugin會打印需在 profile 的pnpm-workspace.yaml里加入allowBuilds的鍵。 - 本地路徑安裝前需在該目錄自行執行
pnpm build。 - 插件與自帶 webserver 行並列組合:共用監聽器與 tool runtime。
典型用法¶
- 安裝並重啓 Web:執行上文安裝命令,重啓後確認側欄出現網絡入口。
- 在模型對話中調度:通過
a2a_teams查看可達團隊,用a2a_route向指定團隊發消息;遠程續聊時帶上既有context_id。 - 派發前體檢:用
a2a_probe對種子或單一 URL 做可達性檢查,根據unreachable/rejected決定是否換路。 - 對賬與重試:用
a2a_tasks查看本機 owed 賬本;遇同步-32005時按 task id 查詢結清結果,避免重複盲發。 - 組網與編排:打開
/__dsh_a2a_nexus/規劃板,配置種子 peer、加入網絡、編排畫布團隊;需要被外網發現時再將配置中的announce設爲true(並確認 web 組合可用)。 - 暴露可加入會話:在默認
sessionNodes下,將主會話作爲 session node 供他人在側欄發現並加入(未 join 的 session node 不會出現在對外 card)。
包還提供 CLI 入口 a2a-net(cli/a2a.mjs),以及子路徑導出如 ./client、./card、./a2a-client 等,供集成方按需引用(見 package.json exports)。
適用場景與注意¶
更適合誰:需要在多臺 DSH 之間做無中心目錄的 agent 互聯、希望用簽名 card + 種子發現 + 直連路由的團隊;已在用 DSH Web 並希望從側欄觀察路由/回執狀態的工作流場景。
務必注意:
- 插件在當前
dsh進程權限下運行;安裝前請閱讀源碼與許可證(倉庫含LICENSE、THIRD_PARTY_NOTICES.md)。 - 默認不 announce,外網無法通過 well-known 發現你;開啓 announce 即對外發布簽名 card,請結合信任邊界配置種子與鏈接關係。
- 社區目錄 SkillHub 插件頁 與 GitHub 倉庫由社區維護,並非 DeepSeek / 幻方官方應用商店;DSH 生態理念是「一切皆插件」,選型與審計由部署方自行負責。
- 構建與安裝方式不同(registry / 本地 / Git)對 pnpm 與
allowBuilds的要求不同,按 README 報錯提示處理即可。
結尾¶
@nelsonlongxiang/dsh-open-a2a-net 把 DSH 從單機 harness 擴展爲可互信發現、可直連路由、可側欄觀測的去中心化 A2A 節點,並用十二項模型工具與工作臺把發現、路由、回執對賬落到可操作流程上。