前言¶
DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在构建多智能体系统时,接入 Agent2Agent (A2A) 协议是常见需求。dsh-a2a 是一个独立的开源插件,它将 DSH 的一个 Profile 变身为一个多面孔的 Agent-to-Agent 实体:它既能同时对外提供多个入站 A2A 服务器,又能建立多个出站连接。所有服务器实例的生命周期(创建、启动、停止、编辑)均通过 GUI 管理,无需手动编辑配置文件。
插件定位¶
- 名称:
dsh-a2a(NPM 包:@hanphone/dsh-a2a) - 维护者: HanphoneJan
- 核心价值: 将 DSH 转变为支持 A2A v1.0.1 双向协议的网关,支持多预设、多技能、持久化任务存储。
- 许可: MIT
核心功能¶
插件实现了 A2A v1.0.1 的完整协议表面,并在此基础上构建了完整的生命周期管理:
-
A2A v1.0.1 协议支持
- 实现了
SendMessage、SendStreamingMessage、GetTask、ListTasks、CancelTask、GetExtendedAgentCard和SubscribeToTask。 - 基于 JSON-RPC 2.0 传输,支持 SSE 流式传输。
- 完整使用官方的
TASK_STATE_*和ROLE_*枚举。
- 实现了
-
多入站服务器
- 支持为每个 Persona 创建独立的入站服务器。
- 每个入站实例绑定一个具体的 Agent Preset(如
ptc、standard等)。 - 技能声明自动衍生: AgentCard 的 skills 直接取自绑定 Preset 的 skill 目录,无需手动定义 typed skill。
-
多出站连接
- 每个连接可独立配置远程 URL、认证环境变量、超时时间和绑定的 Preset。
- 远程调用的 skills 会被映射为模型工具(如
a2a__<name>__<skill>)。
-
持久化与执行
- 任务存储: 任务存储在
a2a域中(默认 JSON 后端,可选 SQLite)。 - 执行器: 提供
session(基于contextId)和subagent(代理调用子智能体)两种执行模式。 - 入站治理: 每个入站任务经过
a2a/inbound-task水瀑布流程,支持策略插件干预。
- 任务存储: 任务存储在
-
GUI 全生命周期管理
- 入站管理: 创建服务器(选择 Preset,可选设置 Auth Env,Bearer Token 通过 Harness 凭证服务管理),查看实时 AgentCard。
- 出站管理: 导入远程 AgentCard,预览技能,建立连接。
- 监控面板: 查看 Inbound Peer 状态、Context Session 状态(支持取消活跃任务或关闭会话)。
安装与启用¶
安装过程依赖 npm registry。
dsh plugin --profile web add @hanphone/dsh-a2a
安装后需要重启 GUI 以扫描并加载新插件。重启命令根据 Profile 不同而异(例如 pnpm dsh web)。
典型用法¶
启用插件后,进入 DeepSeek Harness 的浏览器界面,路径为 Settings → A2A 连接。
-
创建入站服务器
在“入站 Servers”标签页中创建新实例。选择一个已存在的 Agent Preset,其技能声明将自动填充到 AgentCard 中。可选设置认证环境变量。创建后该实例会立即启用,监听配置的端口。 -
发送 A2A 任务
假设入站服务器 ID 为my-agent,监听地址为http://127.0.0.1:3080,使用chat技能发送消息:
curl -X POST http://127.0.0.1:3080/a2a/my-agent \
-H "content-type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "SendMessage",
"params": {
"message": {
"role": "user",
"parts": [{"text": "hello"}],
"metadata": {"skill": "chat"}
}
}
}'
配置与注意事项¶
- 配置方式: 插件仅提供宿主机级别的默认配置(如
baseUrl、subagentProvider、defaultTimeoutMs),这些通过 Profile 的cordis.patch.yml设置。实例的具体配置(如名称、Preset、Token)均通过 GUI 创建并持久化到a2a域,不支持通过补丁文件配置实例。 - 依赖服务: 运行此插件需要宿主机挂载以下服务:
webServer、storage stack、tools registry、agent loop、presets以及subagent(如果使用 subagent 执行器)。 - 认证管理: Bearer Token 不会直接保存在插件数据域,而是写入 Harness 的凭证服务(管理
.env或凭证存储),插件运行时通过凭证服务解析。 - 存储后端: 默认使用 JSON 存储任务和实例数据,可通过配置切换为 SQLite。
结语¶
dsh-a2a 提供了一个从协议实现到运维管理的完整闭环。它解决了在 DSH 生态中构建多智能体网关的痛点,适合需要同时作为 A2A 服务器接收请求,又作为客户端调用其他服务的场景。更多实现细节与架构设计,可参考项目文档。
- GitHub: https://github.com/HanphoneJan/dsh-a2a
- 目录: https://www.skillhub.cn/plugins/HanphoneJan/dsh-a2a