Skip to content
English

Agent Card 与发现

Agent Card 是 A2A 的发现入口。别的 agent 拿到这张卡,就知道草料是谁、能做什么、往哪调、返回什么格式——不需要额外的对接文档。

三个发现地址

地址用途
https://a2a.objqr.com/.well-known/agent-card.json服务本身的标准发现地址
https://qr61.cn/.well-known/agent-card.json码域名上的同一张卡
https://qr71.cn/.well-known/agent-card.json码域名上的同一张卡

三个地址返回的是同一张卡。

放在码域名上是有意的:agent 扫到一张草料码,得到的是 https://qr71.cn/... 这样的链接,此时它可以直接从这个域名的 .well-known 路径发现草料的 A2A 服务,不需要事先知道 a2a.objqr.com 的存在。

提示:如果你的客户端还在用 A2A 0.2.x,探测的是旧路径 /.well-known/agent.json。这个路径也保留着,返回同一张卡。

卡上有什么

json
{
  "protocolVersion": "0.3.0",
  "name": "草料二维码实体查询 Agent",
  "description": "...",
  "url": "https://a2a.objqr.com/a2a/jsonrpc",
  "preferredTransport": "JSONRPC",
  "version": "0.1.0",
  "documentationUrl": "https://a2a.objqr.com/ext/caoliao-entity/v2",
  "iconUrl": "https://static.clewm.net/cli/images/cli_logo_new.png",
  "provider": {
    "organization": "草料二维码 (cli.im)",
    "url": "https://cli.im"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [ "..." ]
  },
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["application/json", "text/plain"],
  "skills": [ "..." ]
}
字段说明
protocolVersion目标 A2A 协议版本,当前为 0.3.0
description本 agent 的能力描述,中英双语,供调用方 agent 判断是否选用
url客户端发起 JSON-RPC 请求的单一端点
preferredTransport传输方式,JSONRPC
version本 agent 自身的版本,与协议版本无关
documentationUrl指向只读契约扩展的规范文档
capabilities支持哪些协议能力,以及声明了哪些扩展
defaultInputModes接受的输入类型,纯文本或 JSON
defaultOutputModes返回的输出类型,JSON 或纯文本
skills3 个只读 skill,详见 Skill 列表

卡上没有 securitysecuritySchemes,这是刻意的:本服务不需要鉴权,按 A2A 规范省略这两个字段即表示无鉴权要求。

三个 capabilities 布尔值都是 false,含义分别是:不支持流式返回、不支持推送通知、不保留状态变更历史。

每个 skill 的输入输出模态与顶层 defaultInputModes / defaultOutputModes 相同,按规范省略不重复声明。

只读契约扩展

卡上声明了一个扩展,用来把「返回什么结构、守什么边界」讲清楚:

json
{
  "uri": "https://a2a.objqr.com/ext/caoliao-entity/v2",
  "required": false,
  "params": {
    "profile": "read-only",
    "schemaUrl": "https://a2a.objqr.com/ext/caoliao-entity/v2/schema.json",
    "appliesTo": ["get_entity", "get_records", "list_actions"],
    "invocation": "explicit-datapart-only",
    "rules": {
      "readOnly": true,
      "publicOnly": true,
      "singleOrgView": true,
      "actionsExecutable": false
    }
  }
}

A2A 目前没有 per-skill 的输出 schema 字段,所以草料用官方的扩展机制补上这块。扩展提供两样东西:

  • 规范文档(人读):https://a2a.objqr.com/ext/caoliao-entity/v2
  • JSON Schema(机读):https://a2a.objqr.com/ext/caoliao-entity/v2/schema.json

Schema 由后端的类型定义直接生成,和实际返回同源,不会出现文档与实现不一致的情况。

requiredfalse,意思是不认识这个扩展的客户端可以直接忽略它,正常调用不受影响。

关于 GB/Z 185—2026

卡上还有第二个扩展声明:

json
{
  "uri": "urn:gb-z-185:aip",
  "required": false,
  "params": {
    "standard": "GB/Z 185(所有部分)—2026",
    "alignment": "field-level",
    "descriptionUrl": "https://a2a.objqr.com/.well-known/aip-agent.json"
  }
}

草料同时提供了一份符合 GB/Z 185—2026《人工智能 智能体互联》的描述文件,放在 /.well-known/aip-agent.json

这是一条指针,不是格式转换:A2A 卡本身的结构完全按 A2A 规范来,一个字段都没有为国标改动;需要国标描述的一方到 descriptionUrl 单独取。同样是 required: false,不识别的客户端忽略即可。

下一步