dsh-a2a: DeepSeek Harness 的 Agent2Agent v1.0.1 雙向連接插件

前言

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 的完整協議表面,並在此基礎上構建了完整的生命週期管理:

  1. A2A v1.0.1 協議支持

    • 實現了 SendMessage、SendStreamingMessage、GetTask、ListTasks、CancelTask、GetExtendedAgentCard 和 SubscribeToTask。
    • 基於 JSON-RPC 2.0 傳輸,支持 SSE 流式傳輸。
    • 完整使用官方的 TASK_STATE_* 和 ROLE_* 枚舉。
  2. 多入站服務器

    • 支持爲每個 Persona 創建獨立的入站服務器。
    • 每個入站實例綁定一個具體的 Agent Preset(如 ptc、standard 等)。
    • 技能聲明自動衍生: AgentCard 的 skills 直接取自綁定 Preset 的 skill 目錄,無需手動定義 typed skill。
  3. 多出站連接

    • 每個連接可獨立配置遠程 URL、認證環境變量、超時時間和綁定的 Preset。
    • 遠程調用的 skills 會被映射爲模型工具(如 a2a__<name>__<skill>)。
  4. 持久化與執行

    • 任務存儲: 任務存儲在 a2a 域中(默認 JSON 後端,可選 SQLite)。
    • 執行器: 提供 session(基於 contextId)和 subagent(代理調用子智能體)兩種執行模式。
    • 入站治理: 每個入站任務經過 a2a/inbound-task 水瀑布流程,支持策略插件干預。
  5. 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 連接。

  1. 創建入站服務器
    在“入站 Servers”標籤頁中創建新實例。選擇一個已存在的 Agent Preset,其技能聲明將自動填充到 AgentCard 中。可選設置認證環境變量。創建後該實例會立即啓用,監聽配置的端口。

  2. 發送 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
羽毛球分组比赛记分
小程序二维码

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

小夜