前言¶
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