dsh-a2a
github.com/HanphoneJan/dsh-a2a
v0.3.5
技能包
发起网络请求写入文件
`@hanphone/dsh-a2a` 是一个独立开源的 A2A 插件,把 DeepSeek Harness profile 变成多面手 A2A 一等公民:能**同时对外发布多个入站 A2A server**,每个绑定一个自己的 agent preset、拥有独立端点 / AgentCard / 派生技能 / 鉴权;也能**同时接入多个出站 A2A server**,每个独立 preset,远端技能映射为模型工具。所有 server 实
作者原文(英文)
Agent2Agent (A2A) v1.0.1 dual-end plugin for DeepSeek Harness: multiple inbound servers (per-instance agent presets; skills derived from each preset's skill directory), multiple outbound connections, GUI-managed instance lifecycle.
中文简介由 DeepSeek 模型翻译,仅供参考。
deepseek-harnessdsha2aagent2agentcordisai-agentplugin
检测报告
有一定能力。命中了若干能力模式,大多是插件正常工作时会用到的。
2需留意3一般19未命中
高关注需留意一般
能力清单
- 发起网络请求
network需留意6 处命中lib/client.js:149const res = await fetch("/a2a/api", { headers: { accept: "application/json" } });lib/client.js:154const res = await fetch("/a2a/api/presets", { headers: { accept: "application/json" } });lib/client.js:159const res = await fetch("/a2a/api", {src/client/index.ts:140const res = await fetch('/a2a/api', { headers: { accept: 'application/json' } })- 看请求发往哪些域名。发往作者自己的后端是常见做法。
- 写入文件
writes-files需留意3 处命中lib/index.js:3132mkdirSync(dir, { recursive: true });lib/types/index.js:315mkdirSync(dir, { recursive: true });src/index.ts:362mkdirSync(dir, { recursive: true })- 看写入位置。写自己的配置目录是正常的,写系统目录不是。
- 接触凭据或密钥
credentials一般111 处命中lib/types/outbound/calls.js:109throw new A2AError(-32040, 'remote agent rejected credentials (401)');lib/client.js:443type: "password",lib/client.js:536type: "password",…types/servers/inbound-manager.js:79* Resolve one inbound instance's bearer token: the credentials service first- 看它读取哪些凭据、发往哪里。用于登录自己的服务是正常的。
- 读取环境变量
reads-env一般9 处命中…types/servers/inbound-manager.js:94const direct = process.env[envName];lib/index.js:1740const direct = process.env[envName];lib/index.js:2898const baseUrl = config.baseUrl ?? `http://127.0.0.1:${webServerPort(webServer) ?? process.env["DSH_A2A_PORT"] ?? "3000"}…lib/index.js:3129const dshHome = process.env["DSH_HOME"] ?? home;- 环境变量里常混有密钥。看它是否把整个 env 都读走。
- 动态加载模块
dynamic-import一般6 处命中lib/types/server/store.d.ts:78tasks: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;lib/types/server/store.d.ts:79contexts: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;lib/types/server/store.d.ts:80agents: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;lib/types/server/store.d.ts:81identity: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;- 动态导入本身无害,但会让依赖关系难以静态审阅。
逐条扫描明细
| 能力 | 标识 | 关注度 | 命中次数 |
|---|---|---|---|
| 发起网络请求 | network | 需留意 | 6 |
| 写入文件 | writes-files | 需留意 | 3 |
| 接触凭据或密钥 | credentials | 一般 | 111 |
| 读取环境变量 | reads-env | 一般 | 9 |
| 动态加载模块 | dynamic-import | 一般 | 6 |
这份报告的口径
扫描读的是包里的源码,全程不执行第三方代码。 本次读了 79 个文件,扫描于 2026-10-14。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。