跳到主内容
@wquguru
精选88r/LLMDevs(Reddit)技巧与观点

A2A Agent真实性验证工具:签名报告核验能力声明

We test whether an A2A agent actually does what its Agent Card claims, and sign the result so anyone can verify it

原文
发到 X
推荐理由

Agent生态急需可信验证机制,这套分层检测与签名审计的工程实践极具参考价值,建议Agent开发者参考其设计思路完善自身合规流程。

A2A agents publish an Agent Card that lists their skills, inputs and outputs. Other agents and teams decide whether to trust an agent based on that card. Nobody checks whether the agent actually behaves the way the card says, so we built something that does.

A2A 代理会发布一份代理卡片(Agent Card),列出其技能、输入和输出。其他代理和团队会根据该卡片决定是否信任某个代理。由于无人核查代理的实际行为是否与卡片描述一致,我们构建了相应的验证机制。

How it works:

工作原理:

  • The card is fingerprinted (RFC 8785 canonical JSON + SHA-256). Every result is tied to the exact card version that was tested.
  • Tests are drafted only from the examples the card itself declares. A human approves the criteria before anything runs.
  • A separate runner process is the only part that holds the agent's credentials. It only talks to the approved host and redacts secrets before anything is stored.
  • Layer 1 is deterministic: status, schema, media type, required content. Layer 2 is a pinned model (Claude Haiku 4.5) used only for checks that need meaning, like "is this a correct summary". The model, endpoint and rubric version are recorded with every result.
  • Results go into an append-only store and the report is signed with Ed25519. Change one byte and verification fails.
  • 对卡片进行指纹化处理(采用 RFC 8785 规范 JSON + SHA-256)。每项结果均与所测试的特定卡片版本绑定。
  • 测试用例仅基于卡片自身声明的示例编写。在运行任何测试之前,需由人工批准评估标准。
  • 独立的运行进程是唯一持有代理凭据的部分。它仅与已批准的宿主通信,并在存储前对敏感信息进行脱敏处理。
  • 第一层是确定性的:涵盖状态、模式、媒体类型及必需内容。第二层使用固定版本的模型(Claude Haiku 4.5),仅用于需要语义理解的检查,例如“这是否是一个正确的摘要”。每次结果都会记录所使用的模型、端点及评分标准版本。
  • 结果存入不可变存储库,报告使用 Ed25519 签名。更改任意一个字节都将导致验证失败。

Design choices: no single trust score (pass / fail / inconclusive per skill), inconclusive never counts as pass, every report lists what was NOT tested, and the final decision is always "flag for human review".

设计选择:不设单一信任分数(按技能分别给出通过/未通过/不确定),不确定绝不视为通过,每份报告均列出未测试的项目,最终决定始终为“标记以供人工审查”。

We ran it against 8 of the official A2A sample agents. Several declare "text" as a media type where the spec expects a MIME type like "text/plain". Small, but it's exactly the kind of card-vs-behavior gap we want to surface.

我们针对 8 个官方 A2A 示例代理进行了测试。其中多个代理将“text”声明为媒体类型,而规范期望的是如“text/plain”这样的 MIME 类型。虽然是小问题,但这正是我们希望揭示的卡片描述与实际行为之间的差距。

Caveats:

注意事项:

  • A2A 1.0 only, no 0.3 yet.
  • Coverage is only as good as the card's declared examples. Thin examples mean thin tests, and the report says so.
  • Layer 2 is a model's judgment, not proof. That's why it's pinned, versioned and only runs after Layer 1.
  • 仅支持 A2A 1.0,尚不支持 0.3 版本。
  • 覆盖范围取决于卡片声明的示例质量。示例单薄意味着测试薄弱,报告中会明确说明这一点。
  • 第二层是模型的判断,而非确凿证据。因此它被固定版本、记录版本号,且仅在第二层之后运行。

Next up: adversarial probes (undeclared requests, prompt injection, failure handling).

下一步计划:对抗性探测(未声明的请求、提示注入、故障处理)。

If you're building an A2A agent, we'll test it for free and send you the signed report: https://www.suncly.com

如果您正在构建 A2A 代理,我们将免费为您进行测试并发送签名报告:https://www.suncly.com

What would you want to see in a report like this before trusting someone else's agent?

在信任他人的代理之前,您希望在这类报告中看到什么?

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

关联信息,但可能不是同一事件