HanphoneJan/dsh-a2a0

@hanphone/dsh-a2a

Agent2Agent (A2A) v1.0 dual-end plugin for DeepSeek Harness: governed inbound tasks, durable task store, pluggable executors, multi-agent outbound consumption, GUI management dashboard.

包名
@hanphone/dsh-a2a
版本
0.2.0
许可证
MIT
最近更新
2026年9月6日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:HanphoneJan/dsh-a2a

Configuration

The dashboard covers day-to-day operations. Values the dashboard does not edit (baseUrl, authTokenEnv, skills, executors, toolPrefix) are configured through the profile's user patch layer ($DSH_HOME/profiles//cordis.patch.yml) — the reserve path:

- id: a2a
  config:
    server:
      enabled: true
      name: My DSH Agent
      description: A DeepSeek Harness agent exposed over A2A v1.0
      version: 0.1.0
      baseUrl: http://127.0.0.1:
   # omit to derive from the webServer address
      endpointPath: /a2a
      authTokenEnv: A2A_INBOUND_TOKEN    # optional; an env var NAME, never the token
      skills:
        ids: []                          # explicit tool ids to expose; chat is built-in
        exclude: []
      executors:
        chat: session                    # or subagent (needs the subagent seam)
      subagentProvider: in-process
    client:
      toolPrefix: a2a
      agents: []                         # or declare agents declaratively

Required host services

Base-backed profiles mount them all: webServer (@deepseek-ai/dsh-host-webserver), the storage stack (@deepseek-ai/dsh-storage + @deepseek-ai/dsh-storage-domain), the tools registry (@deepseek-ai/dsh-tools), and an agent loop (@deepseek-ai/dsh-agent + @deepseek-ai/dsh-agent-loop; the subagent executor additionally needs @deepseek-ai/dsh-subagent).

Storage backend

The task store lives in the a2a storage domain. The base composition routes storage through the json backend; to use SQLite, route the domain and add the backend in the same patch layer:

- id: storage-domain
  config:
    backend: json
    routes:
      a2a: sqlite
- insert:
    - id: storage-sqlite
      name: '@deepseek-ai/dsh-storage-sqlite'
      config:
        path: /absolute/path/to/a2a.sqlite

Outbound agents (file-declared, optional — the GUI manages the same list)

- id: a2a
  config:
    client:
      toolPrefix: a2a
      agents:
        - name: my-remote-agent
          agentCardUrl: https://remote.example/.well-known/agent-card.json
          bearerTokenEnv: A2A_REMOTE_TOKEN   # optional; env var NAME
          enabled: true
          timeoutMs: 60000

Each enabled remote agent's skills become model tools named a2a____ (normalized, collision-hashed). The registry persists across restarts.