@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.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:HanphoneJan/dsh-a2a说明文档
阅读完整 README ↗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.