把 DSH 智能体接入 A2A 网络并呼叫远端智能体
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zyfgood/dsh-a2a该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
- 发起网络请求client/client.js:115
const response = await window.fetch(url, { ...init, headers }) - 写入剪贴板client/client.js:130
void navigator.clipboard.writeText(text).then(() => { setCopied(what); setTimeout(() => setCopied(''), 1500) }).catch(() => {}) - 读取本地文件lib/persistence.js:31
if (existsSync(path)) { - 读取本地文件lib/persistence.js:32
const raw = JSON.parse(readFileSync(path, 'utf8')); - 写入本地文件lib/persistence.js:55
mkdirSync(join(this.path, '..'), { recursive: true }); - 写入本地文件lib/persistence.js:57
writeFileSync(tmp, JSON.stringify(Object.fromEntries(this.data), null, 2), 'utf8'); - 写入本地文件lib/persistence.js:58
renameSync(tmp, this.path); - 发起网络请求lib/client.js:72
const response = await fetch(this.normalize().rpcUrl, { - 发起网络请求lib/client.js:101
const response = await fetch(attempt.url, { - 发起网络请求lib/client.js:189
const response = await fetch(this.normalize().rpcUrl, {
扫描于 2026/11/1(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 接入A2A网络
- 暴露标准A2A服务端
- 调用远程智能体
README
由 DeepSeek 最新模型翻译生成dsh-a2a
DSH(DeepSeek Harness)的 A2A(Agent2Agent)协议插件。
DSH 内置的互操作走 ACP + MCP,不包含 A2A;本插件补上这块拼图,双向打通 A2A 生态(Google ADK、a2ajava / a2a-python SDK、各类 agent 网关):
- 服务器方向(入站):把 DSH agent 暴露为标准 A2A 服务器
- Agent Card:/.well-known/agent-card.json(0.3.x)与 /.well-known/agent.json(0.2.x 兼容)
- JSON-RPC 2.0:message/send(同步)、message/stream(SSE 流式)、tasks/get、tasks/cancel、tasks/resubscribe(断线续订)、agent/authenticatedExtendedCard
- 任务生命周期 submitted → working → completed/failed/canceled,支持 input-required 暂停与 taskId 多轮续答
- 版本协商(A2A-Version / X-A2A-Version 头)、可选 Bearer 鉴权、CORS、单轮超时、任务 TTL 回收
展开完整文档(README 剩余 1 节)
dsh-a2a
DSH(DeepSeek Harness)的 A2A(Agent2Agent)协议插件。
DSH 内置的互操作走 ACP + MCP,不包含 A2A;本插件补上这块拼图,双向打通 A2A 生态(Google ADK、a2ajava / a2a-python SDK、各类 agent 网关):
- 服务器方向(入站):把 DSH agent 暴露为标准 A2A 服务器
- Agent Card:/.well-known/agent-card.json(0.3.x)与 /.well-known/agent.json(0.2.x 兼容)
- JSON-RPC 2.0:message/send(同步)、message/stream(SSE 流式)、tasks/get、tasks/cancel、tasks/resubscribe(断线续订)、agent/authenticatedExtendedCard
- 任务生命周期 submitted → working → completed/failed/canceled,支持 input-required 暂停与 taskId 多轮续答
- 版本协商(A2A-Version / X-A2A-Version 头)、可选 Bearer 鉴权、CORS、单轮超时、任务 TTL 回收
- 客户端方向(出站):注册 a2a_ 模型工具,让任意 DSH agent 直接呼叫远端 A2A agent
- a2a_discover / a2a_send / a2a_task_status / a2a_cancel
- 地址白名单(clientAllowPatterns)控制 agent 可呼叫的目标
- 可视化运维面板(Web client 半,v0.2.0):Plugins → dsh-a2a 的配置卡与设置 Plugins 分区的 A2A 标签页
- 服务器状态:运行中/模式/地址/协议版本/鉴权 + curl 验证命令一键复制
- 实时任务板:最近任务的状态徽标/上下文/产物数,非终态任务一键取消(5s 自动刷新)
- 远端 agent 目录:保存常用远端地址,浏览器直连拉取其 Agent Card(名称/版本/技能)
- 数据来自 A2A 服务器自带的 /admin/status、/admin/tasks 端点(Bearer 门禁同 JSON-RPC)
零运行时依赖(纯 Node ≥20 stdlib + 全局 fetch),与 dsh-feishu-bot 同一插件体系。
一、安装
官方 CLI 一键安装(bundle patch 自动挂载)
dsh plugin --profile <name> add github:zyfgood/dsh-a2a
或本地路径
dsh plugin --profile <name> add file:D:/DSHProjects/dsh-a2a
重启 profile 后生效。默认监听 127.0.0.1:7310。
lib/ 预构建产物随仓库发布,安装即用,无需构建脚本(无 pnpm ≥10 的 allowBuilds 步骤)。
二、快速验证
1) Agent Card(0.3 路径)
curl http://127.0.0.1:7310/.well-known/agent-card.json
2) 发一条消息(同步)
curl -X POST http://127.0.0.1:7310/ -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"message": {
"kind": "message",
"role": "user",
"parts": [{"kind": "text", "text": "你好,介绍一下你自己"}],
"messageId": "m-1",
"contextId": "ctx-demo"
}
}
}'
返回的 result 是 A2A Task:status.state === "completed",回复文本在 artifacts[0].parts[0].text。同一 contextId 再次调用会复用同一个 DSH agent 会话(多轮记忆)。
流式:
curl -N -X POST http://127.0.0.1:7310/ \
-H "Content-Type: application/json" -H "Accept: text/event-stream" -d '{
"jsonrpc": "2.0", "id": 2, "method": "message/stream",
"params": {"message": {"kind": "message", "role": "user",
"parts": [{"kind": "text", "text": "流式演示"}], "messageId": "m-2", "contextId": "ctx-demo"}}
}'
SSE 依次推送 status-update(working) → artifact-update → status-update(completed, final=true) 后自然收流。
三、配置项
profile 的 cordis.patch.yml(或本包 cordis.patch.yml 默认层):
- id: a2a
name: dsh-a2a
config:
port: 7310
mode: agent
| 配置 | 默认 | 说明 |
| host | 127.0.0.1 | 监听地址;公网暴露改 0.0.0.0 并配合鉴权 |
| port | 7310 | 监听端口(0 = 系统分配) |
| publicUrl | 按监听地址推导 | 写入 Agent Card 的 url;反代/TLS 部署时必须配置为外部可达地址 |
| bearerToken | 无 | Bearer 鉴权令牌,支持 env:VAR;配置后卡片宣告 bearerAuth |
| agentName / agentDescription / agentVersion | DSH Agent / … | Agent Card 元信息 |
| skills | 内置一条 dsh-agent 技能 | Agent Card 技能清单 |
| mode | agent | 入站处理模式:agent / llm / echo(见下) |
| provider / model / systemPrompt / maxHistory | — | llm 模式参数(ctx.llm 直答) |
| agentId | 自动 | agent 模式:固定复用 ctx.agents 中某会话;不配置则按 contextId 自动创建 |
| agentPreset | GUI 默认预设 | 自动创建会话的 preset(决定 agent 可用的工具集) |
| workspace | process.cwd() | 自动创建会话的工作目录 |
| persistSessions | true | contextId → 会话映射落盘($DSH_HOME/a2a/),重启后自动恢复上下文 |
| turnTimeoutMs | 600000 | 单轮执行上限,超时任务置 failed |
| taskTtlMs | 3600000 | 已完结任务内存保留时长(之后 TTL 回收) |
| tools | true | 是否注册 a2a_ 出站工具 |
| clientAllowPatterns | [''] | 出站白名单:''、https://a2a.example.com/、https://.example.com/、':7310' |
| clientTimeoutMs | 120000 | 出站调用超时 |
三种入站模式
- agent(默认):每个 A2A contextId 对应一个持久 DSH agent 会话(完整工具/技能/工作目录),跨任务续答;映射可落盘跨重启恢复。会话忙时新消息走 steer(下一 step 边界消费)。
- llm:ctx.llm 直答(自包含轻量模式,不建 agent 会话,短期记忆按 maxHistory)。
- echo:回显原文,验证链路。
四、出站:agent 调用远端 A2A
插件默认注册 4 个模型工具(tools: false 关闭):
| 工具 | 对应协议方法 | 用途 |
| a2a_discover | GET /.well-known/agent-card.json | 拉取远端 Agent Card(能力/技能/鉴权) |
| a2a_send | message/stream(自动降级 message/send + 轮询) | 发消息并等待远端最终回复 |
| a2a_task_status | tasks/get | 查询远端任务状态 |
| a2a_cancel | tasks/cancel | 取消远端任务 |
对话示例:「用 a2a_send 呼叫 http://其它机器:7310/ 的 agent,问它有哪些技能,把结果汇总给我」。
五、开发
pnpm verify # 本地 typecheck(shims/ 提供 @deepseek-ai 结构类型)
pnpm test # 构建 DSH 无关核心 + 31 项端到端冒烟测试
pnpm build:local # 本地全量构建 lib/(shims 类型校验,产物与宿主构建一致)
pnpm build # 完整构建(需要宿主环境提供 @deepseek-ai/* peer 依赖)
代码结构:
src/
├── index.ts 插件入口:Config schema + apply() ├── protocol.ts A2A 类型 / JSON-RPC / Agent Card(纯函数,零依赖) ├── store.ts 任务存储 + SSE 事件中枢(事件缓冲、订阅、TTL) ├── server.ts HTTP 服务器:card / message/send / message/stream(SSE) / tasks/* / admin/* ├── bridge.ts DSH 桥接:echo / llm / agent 三种 TaskRunner ├── client.ts 出站 A2A 客户端(fetch + SSE 解析) ├── tools.ts a2a_* 模型工具注册 └── persistence.ts contextId → 会话映射落盘 client/ └── client.js 浏览器半:A2A 运维面板(免构建 ModuleLoader 工厂,react 为宿主 external)
设计说明:
- protocol / store / server / client 不依赖任何 DSH 包,可独立构建与测试;DSH 桥接收敛在 bridge.ts / tools.ts / index.ts。
- input-required 事件带 final=true 关闭当轮 SSE,但任务保持非终态,客户端可凭 taskId 续答(续答复用同一任务与 history)。
- tasks/cancel 立即广播 canceled(final=true);agent 模式下正在运行的一轮会在 500ms 轮询粒度感知退出并尽力 interrupt,不会阻塞后续轮次。
- 与 A2A 0.2.x 客户端的兼容:旧 card 路径照常服务;0.2 客户端不发送版本头时按同版本处理。
- 不支持的协议面按规范返回明确错误码:push notification -32003、批量 JSON-RPC -32600。
六、与 DSH 内置能力的关系
| 需求 | 用什么 |
| 程序化驱动 DSH agent(进程外) | 内置 ACP(dsh-acp,pnpm dsh --profile acp) |
| 挂载外部工具/资源 | 内置 MCP 客户端 |
| 跨 agent 生态互操作(Google ADK / A2A SDK) | 本插件 |
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
zyfgood/dsh-a2a
把 DSH 智能体接入 A2A 网络并呼叫远端智能体
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 3,801已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,197已汉化DSH
71.7
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,292已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,800已汉化DSH
71.2