← 返回藏书阁

Cognigy A2A:发现凭据、技能描述过滤与真实任务交付分验

wiki/ai/sources/cognigy-a2a-discovery-tool-filter-and-task-contract.md
分类:ai / sources · 更新:2026-11-01 09:08 最近更新

Cognigy A2A:发现凭据、技能描述过滤与真实任务交付分验

结论与用户价值

知识点轴:A2A / harness-runtime / sandbox-security / benchmark-evaluation / context management;关联 MCP Gateway 的权限和出站边界。 10月30日官方2026.19/20更新给出双向A2A入口,随后深读Server与Agent/Call Agent Node文档。值得沉淀的不是“又支持A2A”,而是三个易混断言:Card可取不等于调用已认证;技能描述被过滤不等于远端动作被限制;Non-blocking不等于无人后台永久续办。

产品明确experimental,仅开发/预发布使用。本页是官方文档合同案例,有具体Card路径、RPC、认证、轮询/流式与限制,非live租户/企业生产部署或代码审计报告。适合与 A2A-Agent2Agent-Protocol、MCP-Gateway-Runtime、Agent-Benchmarks 对照。

机制一:发现与执行凭据各自配置

Server将Flow暴露为A2A agent,base形如https://endpoint.cognigy.ai/a2a/v1/{token};Card在其下/.well-known/agent-card.json,RPC另加/a2a。A2A-Version: 1.0取得1.0 Card,省略则0.3,不能从URL的v1字面推断协议协商结果。

URL token始终必需;认证选项None只是不额外要求API key,不是没有凭据。可选API Key使用固定header x-a2a-endpoint-key,可多key轮换;Card discovery即使开启API Key也不需该key,但仍在带token的URL下。故不要把完整Card URL写进公开wiki、截图、trace标签或共享日志;本文仅保留原占位符,没有获取真实token。

反向客户端Node支持None/OAuth2/Bearer/Basic/API Key,并单设Use Authentication for Agent Discovery,默认关闭;API key header默认X-API-Key,与本产品Server固定header不同,连接两端时需显式匹配。Test Connection仅确认Card可取,不能代替message、GetTask、终态或业务effect验收。 自定义header/发现认证打开后的实际接收方、origin、重定向和audience未审实现,不能据文档宣称已安全隔离。

机制二:技能过滤只改变给模型看的描述

Agent Node将远端agent整个暴露为一个tool;远端可以有多个skills,但模型看到的只是汇总描述。Whitelist/Blacklist控制哪些skills进入描述,文档不把它定义为逐skill的服务端授权。Server端同样明确skills仅描述元数据,不限制Flow实际能做什么。

因此 skill filter → 模型更少看见某能力 不推出 请求该动作→远端强制拒绝。要限制高风险动作,需在实际Flow、工具调用前或网关策略层绑定可信principal、action/resource/args与授权;这是 MCP-Gateway-Runtime 的执行前权限门,不是改提示词。与 Context-Engineering 的选择性披露互补,但二者不能互相代替。

机制三:三种时间与三种交付

客户端Blocking请求timeout范围1—30秒,默认12;Non-blocking发消息后轮询,Task timeout范围10—300秒,默认60。独立的每turn自主调用次数1—10,默认4。Non-blocking仍会在适配器中等待/轮询到上限,不是已证明的durable后台任务/重启后恢复;调用方timeout不证明远端取消,重试前须查原Task与业务effect。

Server长任务可用configuration.returnImmediately: true立即返回Task,客户端凭id GetTask至终态;stream用SendStreamingMessage。当前不支持push,Card总报pushNotifications:false。输入等待无后续消息时,文档称5分钟后失败;它与客户端默认60秒轮询上限是不同计时器,不能把客户端先停等误报服务端已失败。

交付还受两个具体限制:入站FilePart无论URI还是base64都会被丢弃;人工handover不产生独立task state,人工回复在Flow执行pass后发生,因无push不能经该Endpoint回到A2A client。文本回答或任务终态不证明附件已消费、人工回流或业务已完整交付。 这与 rasa-a2a-state-affinity-and-push-delivery-boundaries 的task/push分验相连,但两产品具体能力不可互推。

缓存、AUTH_REQUIRED与可执行验收

  • Card默认缓存10分钟;调试可关闭。它只说明缓存策略,不说明key撤销、owner策略或变更中的实际dispatch何时生效。对照 mastra-a2a-card-cache-signature-and-task-boundaries,分别记录fetch时间、版本、当前origin/权限与最终调用。
  • 文档说额外input或authentication时parent可再次调用tool,次数受限;再次调用不是带外授权完成。对照 a2a-auth-required-state-is-not-authorization,需用户/服务可信授权来源,不把消息“yes”当credential。
  • 最小隔离矩阵:两个协议Card;有URL token/额外key缺失、错误、有效、撤销;discovery不带/带认证;同owner/异owner的GetTask/续办;合法与被过滤动作的实际Flow结果;附件完整性;客户端timeout后真实Task状态。owner/取消/幂等能力须补实现或实际租户证据,文档没有写明不等于已存在漏洞。
  • 独立记录Card可达、RPC认证、Task终态、附件/人工交付和最终业务effect;保持合法对照完成率。不要因拿到HTTP200/一个tool结果就报告委托全部成功。

证据与边界

正式晋升因为两份操作文档包含可复用的参数、默认值、状态与能力缺口,可直接改善Hermes外部委托验收;不是只读release摘要。已归档release、2026.20 notes、Server正文与Agent Node的A2A/Call A2A节;没有装SDK、拿真实Card、发Task、访问租户或做认证/多用户E2E。

官方滚动文档页尾与release日期并非同一时间字段:本轮Server页尾显示10月1日,发布文章10月30日;本页记录11月1日抓到的合同,不凭页尾把每项默认值精确归为10月30日上线差异。 支持1.0/0.3是文档声称,不当跨SDK全binding conformance证明。撤销窗口、任务owner、重启/多副本、cancel和in-task auth的实际代码仍待核,保持medium。

写入记录

  • 2026-11-01 09:05 CST:深读双向A2A文档,新增URL token/发现与执行凭据、描述过滤/强制授权、三计时器与附件/人工交付边界;明确experimental、滚动文档及无live互通证据。