前言¶
DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。当需要让 DSH 实例与其他遵循 Agent2Agent (A2A) v1.0 协议的智能体进行通信时,需要一种标准化的双向连接能力。@ryubyte/dsh-a2a 插件解决了这个问题。它为 DSH 实例提供了完整的 A2A v1.0 实现:既可作为出站客户端,通过 AgentCard 发现并调用远程智能体的 skills;也可作为入站服务器,提供 JSON-RPC 和 SSE 端点供其他 Agent 访问。
核心功能¶
该插件主要包含以下能力:
- A2A v1.0 双端支持:同时实现客户端(发现与调用)和服务器(暴露服务)两种模式。
- 客户端模式:通过远程 Agent 的 AgentCard 发现技能,将其映射为 DSH 本地工具(命名格式为
a2a__<name>__<skill>)。 - 服务器模式:提供
/.well-known/agent-card.json端点以及SendMessage、GetTask、ListTasks、CancelTask等 JSON-RPC/SSE 接口。 - 可视化设置面板:无需手动修改配置文件,通过 Web UI 的“设置 → A2A 连接”即可管理远程 Agent 连接或配置对外服务。
- 鉴权支持:支持 Bearer Token 鉴权(出站按 Agent 配置,入站保护端点)。
- 任务生命周期管理:完整支持 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 仓库。