@dpskh/a2a:DeepSeek Harness 的 Agent2Agent 实时 mesh 插件

前言

在 DSH 中做智能体协作时,常需要让多个 agent 在同一项目里互相发现、发送消息,并保留可查询的项目历史。已有做法通常要自己处理 socket、在线状态、消息幂等和附件预算。@dpskh/a2a 把这些能力做成一个 DSH 插件:挂载后提供 hub、mesh client、a2a 工具和 /a2a 命令面。

下面按能力、配置、用法和限制介绍这个插件。

这是什么

@dpskh/a2a 是用于 DeepSeek Harness 的 Agent2Agent 实时 mesh 插件,维护者为 dpskh,许可证为 MIT。资料中给出的挂载版本是 0.3。

它把以下能力放在一个入口插件里:

  • ctx.a2aHub:项目注册表、不可变消息历史、可选 hub server 与实时 WebSocket
  • ctx.a2aMesh:每个已加入 agent 一个 WebSocket presence,并串行注入 inbound messages
  • a2a_peersa2a_messagea2a_history 工具
  • /a2a hubprojectconnectdisconnectstatuspeershistoryhelp 命令面

它面向的是可信私有网络内的实时协作。

核心功能

Hub 与消息

hub 侧提供项目注册表和不可变消息历史。消息支持基于 messageId 的幂等处理。文本与附件共享 4 MiB decoded-content budget,单条消息最多八条附件。

Mesh client

mesh client 侧为每个已加入 agent 维护一个 WebSocket presence,并把 inbound messages 串行注入。presence 基于 WebSocket 连接状态;仅当前在线接收者可被直发,没有离线投递或持久 roster。

工具

下面三个工具面向模型侧:

  • a2a_peers:查看当前项目内当前存在的 roster names
  • a2a_message:向 target.type=agent/nametarget.type=project 发送消息,可带 replyTo、附件路径和 messageId
  • a2a_history:通过 beforeafterlimitfrom 查看过去项目消息

命令面

/a2a 命令面包括:

  • /a2a hub
  • /a2a project
  • /a2a connect
  • /a2a disconnect
  • /a2a status
  • /a2a peers
  • /a2a history
  • /a2a help

资料中给出的命令示例包括:

  • /a2a connect <project> [--as <name>]
  • /a2a status
  • /a2a peers
  • /a2a history

浏览器协作控制

@dpskh/ui-a2a 提供协作控制。浏览器消费 Host a2a.snapshot,不直接连接 Hub WebSocket。

安装与启用

已核实资料未给出可直接照抄的官方安装命令,因此本文不补充安装命令。

资料中给出的启用方式是:挂载 @dpskh/a2a 0.3,即可获得实时 A2A mesh。启用 hub 和 mesh 前,还需要将 storage backend 路由到 a2a domain。

典型配置

下面是资料中给出的配置示例。hub 配置用于运行可选 hub server;mesh 配置用于声明 mesh client 相关字段。

- id: a2a
  name: '@dpskh/a2a'
  config:
    hub:
      host: 127.0.0.1
      port: 43123
      maxPort: 43223
    mesh:
      project: main
      agentId: main
      name: main
      autoConnect: true
      persistConnections: false
      reconnectMs: 500

其中:

  • hub.hosthub.porthub.maxPort 用于配置可选 hub server
  • mesh.projectmesh.agentIdmesh.namemesh.autoConnectmesh.persistConnectionsmesh.reconnectMs 为资料中列出的 mesh 配置项

如果复制了 0.2 配置,persistBindingsautoRejoinpollIntervalMsheartbeatMscaps 这些 0.2 mesh fields 会被忽略。

典型用法

先连接项目,再查看当前 peer,然后发送消息,最后按需查询历史。

1、连接项目:

/a2a connect <project> [--as <name>]

2、查看当前项目内当前存在的 roster names:

/a2a peers

也可以调用工具:

a2a_peers

3、向当前 peer 或项目发送消息:

a2a_message

可携带 target.type=agent/nametarget.type=projectreplyTo、附件路径和 messageId

4、查看过去项目消息:

/a2a history

也可以调用:

a2a_history

参数可通过 beforeafterlimitfrom 控制范围。

5、查看或断开:

/a2a status
/a2a disconnect
/a2a help

信任模型与限制

这个插件假设运行在完全可信的私有网络中:hub endpoints 不认证调用者,调用方提供的 project 和 member identities 为可信声明。不要把它暴露到公网或不可信网络。

已知限制包括:

  • 仅当前在线接收者可直发,无离线投递或持久 roster
  • mesh client 一次只连接一个 hub
  • deliveredfaileddisconnected 等 delivery outcomes 仅内存保存,不持久化
  • inbound attachments 写入系统临时目录
  • 0.2 mesh fields persistBindingsautoRejoinpollIntervalMsheartbeatMscaps 被忽略以兼容复制的 0.2 配置
  • package.json 标记 private: true

适用场景与注意

适合以下情况:

  • 在 DSH 中让多个 agent 于同一项目内实时通信
  • 需要查看当前在线 roster
  • 需要查询项目内过往消息
  • 需要在浏览器中使用 @dpskh/ui-a2a 协作控制

需要注意:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证
  • 许可证为 MIT
  • 资料未给出官方安装命令,使用时以仓库文档为准
  • DSH 插件生态强调“一切皆插件”,社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系

链接

  • GitHub: https://github.com/dpskh/dsh-a2a
  • 社区目录线索: https://www.skillhub.cn/plugins/dpskh/dsh-a2a
羽毛球分组比赛记分
小程序二维码

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

小夜