前言¶
在 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 节点,并用十二项模型工具与工作台把发现、路由、回执对账落到可操作流程上。