@ryubyte/dsh-a2a:DeepSeek Harness 的 Agent2Agent 协议双端插件

前言

DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。当需要让 DSH 实例与其他遵循 Agent2Agent (A2A) v1.0 协议的智能体进行通信时,需要一种标准化的双向连接能力。@ryubyte/dsh-a2a 插件解决了这个问题。它为 DSH 实例提供了完整的 A2A v1.0 实现:既可作为出站客户端,通过 AgentCard 发现并调用远程智能体的 skills;也可作为入站服务器,提供 JSON-RPC 和 SSE 端点供其他 Agent 访问。

核心功能

该插件主要包含以下能力:

  1. A2A v1.0 双端支持:同时实现客户端(发现与调用)和服务器(暴露服务)两种模式。
  2. 客户端模式:通过远程 Agent 的 AgentCard 发现技能,将其映射为 DSH 本地工具(命名格式为 a2a__<name>__<skill>)。
  3. 服务器模式:提供 /.well-known/agent-card.json 端点以及 SendMessage、GetTask、ListTasks、CancelTask 等 JSON-RPC/SSE 接口。
  4. 可视化设置面板:无需手动修改配置文件,通过 Web UI 的“设置 → A2A 连接”即可管理远程 Agent 连接或配置对外服务。
  5. 鉴权支持:支持 Bearer Token 鉴权(出站按 Agent 配置,入站保护端点)。
  6. 任务生命周期管理:完整支持 SUBMITTED → WORKING → COMPLETED/FAILED/CANCELED 的任务状态流转。

安装与启用

安装插件只需一条命令,将其加入指定 profile 后重启 DSH 即可生效。

dsh plugin --profile web add @ryubyte/dsh-a2a
dsh --profile web

典型用法

1. 配置远程 Agent(出站)

在 profile 目录下的 a2a.json 中声明要连接的 Agent。

{
  "agents": [
    {
      "name": "research",
      "agentCardUrl": "https://research.example.com/.well-known/agent-card.json",
      "bearerToken": "...",
      "timeoutMs": 8000
    }
  ]
}

连接成功后,远程 Agent 的 skills 会在模型工具中注册。同一本地会话对同一远程 Agent 的多次工具调用会复用同一个 A2A contextId,从而实现跨轮记忆。

2. 对外提供 A2A 服务(入站)

通过配置启用 server 模式。

{
  "mode": "server",
  "server": {
    "enabled": true,
    "agentName": "My DSH Agent",
    "skills": [
      { "id": "coding", "name": "Coding", "description": "Execute coding tasks." }
    ]
  }
}

或者直接在 Web UI 的“设置 → A2A 连接 → ‘对外服务’”中,通过可视化表单创建并上线服务,系统会自动生成对应的配置。

注意事项

  • 安全性:入站服务默认无鉴权。生产环境建议配置 authToken 或使用 TLS 反向代理进行保护。
  • 面板 API:/a2a/api 仅监听 loopback/same-origin,不承载机密信息。
  • 权限运行:插件以当前 DSH 进程的权限运行,安装前请检查源码与许可证。
  • 许可证:MIT 许可证。

结尾

该插件为 DSH 提供了标准化的 Agent2Agent 协议接入能力,适合需要构建多智能体协作系统的开发者。更多细节可查看插件目录页或 GitHub 仓库。

GitHub 仓库

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

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

小夜