@nelsonlongxiang/dsh-open-a2a-net:把 DSH 部署变成去中心化 Agent 网络节点

前言

在 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。

典型用法

  1. 安装并重启 Web:执行上文安装命令,重启后确认侧栏出现网络入口。
  2. 在模型对话中调度:通过 a2a_teams 查看可达团队,用 a2a_route 向指定团队发消息;远程续聊时带上既有 context_id。
  3. 派发前体检:用 a2a_probe 对种子或单一 URL 做可达性检查,根据 unreachable / rejected 决定是否换路。
  4. 对账与重试:用 a2a_tasks 查看本机 owed 账本;遇同步 -32005 时按 task id 查询结清结果,避免重复盲发。
  5. 组网与编排:打开 /__dsh_a2a_nexus/ 规划板,配置种子 peer、加入网络、编排画布团队;需要被外网发现时再将配置中的 announce 设为 true(并确认 web 组合可用)。
  6. 暴露可加入会话:在默认 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 节点,并用十二项模型工具与工作台把发现、路由、回执对账落到可操作流程上。

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

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

小夜