21. 外部协议与生态映射
本章把外部协议接入理解为一种可追溯的转换过程:先识别外部对象和版本,再把可核对的字段映射到 OpenAgenet (OAN) 资源元数据或资源包,随后分别验证资源控制权、注册凭证、根平台可信发布证明和治理状态,最后向调用方解释哪些信息可用于发现、哪些信息还需要在调用前复核。适配器应保留外部原文、来源、摘要和转换版本,不能把转换后的摘要直接当作 OAN 的可信发布事实。
| 外部材料 | OAN 承载位置 | 可用于发现的内容 | 必须独立验证的内容 |
|---|---|---|---|
| DID Core / DID文档 | 资源 DID文档及验证方法 | id、验证方法、服务端点 |
控制关系、签名、状态和发布证据 |
| A2A Agent Card | 资源元数据、协议绑定或关联描述 | 能力、技能、用例、输入输出、交互入口 | Card 发布者与 OAN 控制权、注册凭证和根平台可信发布证明 |
| MCP 服务元数据 | MCP 服务资源包及其协议绑定 | 服务器能力、工具清单、传输和认证声明 | 服务端点、版本、资源包哈希和生命周期 |
| OpenAPI 或工具 API 描述 | 工具 API 资源包及其协议绑定 | 操作、参数、schema、错误和端点 | 文档摘要、控制签名、业务授权和实际可用性 |
映射结果回答的是“外部系统如何描述和连接这项资源”,不直接回答“该资源是否已经获得 OAN 网络授权”。后一个判断必须回到 OAN 的 DID、签名、注册凭证、根平台可信发布证明和治理状态。
21.1 W3C DID Core 与 did:oan
适配器应将 DID Core 通用字段和 did:oan 方法字段分层保存。通用字段用于让 DID 工具理解文档,OAN 字段用于表达资源类型、能力、版本、资源包和发布关系。下面的对象只是映射记录示例,不是新的 DID文档:
{
"source": {"type": "did-document", "version": "did-core-compatible"},
"oan": {"method": "did:oan", "resourceDid": "did:oan:SKDM:<identifier>"},
"mapping": {
"preserved": ["id", "verificationMethod", "service"],
"mapped": ["resourceType", "capabilityTags", "protocolBindings"]
}
}
该记录只说明转换过程。did:oan 使用 DID Core 的通用身份和服务表达方式,并通过 OAN 的资源元数据、资源包及关联证明补充资源发现和发布所需的信息。
21.1.1 DID Core 数据结构对应
DID文档中的 id、verificationMethod、控制关系和 service 对应 DID Core 的通用数据模型。OAN 的资源类型、能力标签、用例、版本、资源包引用和发布证明关联属于 OAN 资源模型或方法扩展。适配器应保留原字段和原始路径,不应把 OAN 扩展字段伪装成 DID Core 的标准字段。
| DID Core 字段 | OAN 对应内容 | 核验重点 |
|---|---|---|
id |
资源或节点 DID | 不因名称、URL 或展示格式改写 |
verificationMethod |
控制方或节点验证方法 | 公钥、控制关系和签名对象一致 |
authentication / assertionMethod |
认证与断言用途 | 不将任意公钥加入授权关系 |
service |
资源端点和协议入口 | 可读取不等于可调用 |
21.1.2 did:oan 方法扩展
did:oan 方法扩展用于表达资源主体、资源类型、能力集合、端点、协议绑定、版本引用及发布证据关联。方法扩展必须明确字段类型、必填条件、规范化方式和签名覆盖范围,扩展字段变化应进入 DID 文档或资源包版本管理。
方法扩展的检查顺序为:
- 解析方法名和方法特定标识符。
- 根据主体代码核对资源类型或节点角色。
- 核对元数据、服务、版本和资源包引用。
- 独立验证控制证明、哈希、注册 VC 和根平台可信发布证明。
影响签名覆盖范围、资源类型、版本选择或治理判断的扩展,应按破坏性变更进入第 24 章的变更记录。
21.1.3 解析行为
解析器接收完整 did:oan 后,先校验方法名和方法特定标识符,再读取对应 DID 文档并验证结构、控制关系、状态和版本。未找到、方法不支持、文档无效、证明缺失和状态未知应分别返回,不能以空文档或最近缓存掩盖错误。
| 解析状态 | 含义 | 后续处理 |
|---|---|---|
| resolved | 文档可读取且结构合法 | 继续验证控制、状态和发布证据 |
| not-found | 没有找到对应文档 | 不以同名文件替代 |
| method-unsupported | 解析器不支持该方法 | 停止高风险调用 |
| invalid-document | 结构或绑定不合法 | 拒绝并留存错误证据 |
| status-unknown | 状态来源过期或不可用 | 降级或人工复核 |
21.1.4 互操作边界
DID Core 互操作保证通用身份结构可以被理解,不保证外部解析器理解 OAN 的资源语义、根平台可信发布证明或治理状态。外部系统可读取 DID 文档并获得入口,但在调用前仍需按 OAN 规则验证资源版本、发布证据和端点。
互操作报告应分别记录格式互操作和 OAN 语义互操作:前者证明外部解析器能够读取通用字段,后者证明调用方能够理解资源类型、能力、版本、资源包和发布证据。两者不能合并为单一的“兼容”结论。
21.2 A2A Agent Card 映射
OAN 与 A2A Agent Card 的关系可按“网络级资源发现”和“服务级调用描述”区分:OAN 通过 DID文档、资源元数据和资源包提供稳定身份、来源、版本及治理关联;A2A Agent Card 以服务提供方、支持的交互入口、能力、技能、输入输出模式和安全声明描述智能体服务。二者可以互相引用,但映射不会改变任一方的身份、签名和授权语义。
| 映射方向 | 保留内容 | 不能推导的结论 |
|---|---|---|
| OAN → A2A | 资源 DID、名称、描述、能力标签、用例、服务端点、协议绑定和版本 | 不能由映射自动取得 A2A 会话授权或业务权限 |
| A2A → OAN | 服务提供方、能力、技能、输入输出模式、安全声明和原文摘要 | 不能由 Card 自动取得 OAN 注册资格或根平台可信发布证明 |
OAN 资源档案中的能力描述、用例、端点和协议绑定可以为 A2A Agent Card 提供可信的发现入口;反向接入时,Agent Card 只能作为注册草稿或补充描述的来源,仍需由资源控制方按 OAN 流程生成和签署资源材料。详细调用流程由 A2A、MCP、工具 API 或资源自身协议决定。
21.2.1 能力描述映射
OAN 的 capabilityTags、capabilityDescription 和用例信息可映射到 A2A Agent Card 的 skills、技能名称、描述和示例任务。映射时保留标签树路径、原始文本、资源包版本和来源;OAN 发现节点的语义匹配结果可以帮助定位候选资源,但不能证明资源已获授权或一定具备所声明能力。
建议同时保留规范化标签和原始描述:
{
"tag": "code.repository",
"sourcePath": "skills[0].name",
"sourceVersion": "1.0",
"resourcePackageVersion": "1.0.0"
}
规范化标签服务于筛选和语义治理,原始文本服务于解释和复核。
21.2.2 用例和技能映射
OAN 的用例字段和技能包信息可用于生成 Agent Card 的技能摘要、示例任务和输入输出说明。生成结果应保留资源包版本和字段来源;若外部 Card 只提供摘要,反向登记时只能形成待核对的资源描述,不能补齐 OAN 中没有声明的控制、版本、端点或治理信息。
| 用例字段 | 应表达的事实 | 缺失处理 |
|---|---|---|
| 任务 | 用户希望完成的工作 | 标记描述不完整 |
| 输入 | 类型、来源和前提 | 不凭空补写 |
| 输出 | 结果形态或交付物 | 不把标签当承诺 |
| 限制 | 权限、成本、时效和数据边界 | 调用前复核 |
21.2.3 服务端点映射
OAN DID文档或资源包中的服务端点、协议类型、传输方式和认证要求可映射到 Agent Card 的 supportedInterfaces、协议绑定和安全声明。端点映射只提供连接准备信息,不代表端点可用;调用方仍需执行 TLS、认证、版本、状态和业务授权检查。
端点映射可按“入口、协议、传输、认证、版本、状态”逐项记录;其中任何一项来自外部描述时,都应保留原始路径或摘要,便于在调用前重新核对。
| 端点信息 | 发现阶段用途 | 调用前复核 |
|---|---|---|
| 入口 URL | 定位服务 | TLS、域名和可达性 |
| 协议/传输 | 选择客户端 | 版本和协商结果 |
| 认证要求 | 准备凭据 | 用户授权和权限范围 |
| 版本 | 选择兼容实现 | 是否仍受支持 |
| 状态 | 提示可用性 | 最新状态和治理证据 |
21.2.4 身份、签名和可信证据映射
Agent Card 的 provider、签名或安全声明可以作为外部输入保存,但 OAN 的资源身份以 did:oan 和其控制关系为准。Agent Card 整体签名证明的是 Card 内容及其发布者声明;注册 VC、根平台可信发布证明和治理状态证明的是 OAN 流程中的不同事实,必须分别保留,不能互相替代。
身份和证据映射应分层保存:
- 资源控制关系回答“谁能控制该 DID”。
- Agent Card 或外部声明回答“外部系统如何描述该资源”。
- 注册 VC 回答“注册服务节点声明了什么登记事实”。
- 根平台可信发布证明回答“根平台验证并发布了什么内容”。
21.3 MCP 资源与服务器元数据映射
OAN 将 MCP 服务作为可发现资源。映射时按“服务器、工具、调用”三层记录:服务器层描述身份、协议版本、传输和端点;工具层描述工具或资源清单、名称、说明和输入 schema;调用层描述会话、认证和错误约束。资源包应保存清单原文或稳定引用、版本和哈希,发现索引可以只保存检索摘要。一次 MCP 初始化成功只说明服务能够完成某次协议交互,不等于根平台已经验证并发布该资源。
21.3.1 MCP Server 映射
MCP Server 的名称、说明、协议版本、传输方式、端点和服务器能力映射到 OAN MCP 服务资源的元数据。服务器 DID、控制证明、资源版本、资源包哈希和根平台可信发布证明独立保存,以区分“服务器自我描述”和“网络已验证发布”。每条工具记录还应保存所属服务器和资源包版本,避免仅凭工具名称跨服务去重。
21.3.2 工具定义映射
MCP 工具名称、说明、输入 schema 和可用能力可映射到 OAN 的工具条目、能力描述和标签。工具条目应带有所属服务器、资源包版本、内容摘要和原始清单位置;工具名称相同不等于属于同一控制主体。发现索引可以使用摘要字段,但调用方应能回到完整清单核验工具边界。
21.3.3 输入输出约束映射
MCP 输入 schema、结果结构和错误约束映射到 OAN 的输入输出描述,并保留 schema 原文、媒体类型、版本和哈希。映射失败或字段不完整时,资源可以登记为描述不完整,但不能向调用方宣称约束已经验证。 输入输出映射可用 schema 版本和摘要建立稳定引用;字段类型、必填关系、枚举值或错误结构发生变化时,应把它视为新的描述版本,而不是只更新展示文本。
21.3.4 调用和认证信息映射
MCP 传输、会话建立、认证要求和调用前条件可作为 OAN 服务信息的一部分,用于发现后的连接准备。OAN 的发布证明只证明声明材料及其来源,不能替 MCP 服务器授予用户业务权限或保证会话成功。 调用和认证映射应区分“发现时可见的接入条件”和“运行时由服务端授予的权限”。OAN 只登记和验证声明及其来源,不代替 MCP 服务或工具 API 的业务鉴权。
21.4 工具与 API 描述映射
OpenAPI 映射建议以路径和操作为粒度建立稳定条目:
operationId: searchRepository
source: openapi.yaml#/paths/~1repositories~1search/get
oanResourceDid: did:oan:TLDM:<identifier>
schemaHash: sha256:<value>
规范化摘要可用于发现和去重,原始文档用于调用前复核。
工具 API 应以路径和操作为最小审计单元,至少保留 operationId、原始文档路径、服务器端点、schema 版本、认证要求和摘要。规范化摘要用于发现和去重,原始文档用于调用前复核,文档可读不等于接口可调用。
21.5 VC 与 VP 生态互操作
VC/VP 处理应采用“解析 → 密码学验证 → 状态检查 → 信任策略判断”的顺序。任何一步失败都要产生明确的中间状态,不能将“JSON 可解析”直接显示为“可信”。
| 阶段 | 输出 | 是否足以接受 |
|---|---|---|
| 解析 | 主体、签发者、类型和声明 | 否 |
| 签名验证 | 签名与公钥匹配 | 否,还需检查关系 |
| 状态检查 | 有效期、暂停/撤销状态 | 否,还需检查授权范围 |
| OAN 信任策略 | 结合来源和治理作出决定 | 是/否/需复核 |
适配器可以解析外部 VC/VP 的主体、签发者、凭证类型、有效期、状态和证明材料,并将原始对象及验证结果保留。能够解析只表示格式可读;是否接受还要看签发者授权、控制关系、治理状态和 OAN 的信任策略。对于无法取得状态信息、签名验证失败或签发者关系不明的输入,应保留失败原因并进入拒绝或人工复核路径。
21.6 外部组织与平台身份映射
外部组织、平台账号、域名或其 DID 可以作为资源提供方、运营方、委托方或端点托管方的关联信息保存,但应记录关系类型、证明来源、责任范围和有效期。域名、企业账号、平台认证和资源控制 DID 不是同一字段,外部账号名称不能替代资源 DID 控制权,域名或平台认证也不能直接产生根平台发布资格。
21.7 外部凭证与信任证据映射
外部证据记录建议包含 issuer、subject、credentialType、issuedAt、expiresAt、statusSource、sourceHash、verifiedAt 和 verifier。缺少状态端点时应记录“状态未检查”,而不是默认有效。OAN 将其作为补充证据,但节点授权、资源控制和根平台发布仍按各自的 OAN 证据链判定。
21.8 字段来源、版本与哈希要求
字段来源可用如下审计记录表示。示例中的 agent-card.json、摘要和时间均为占位值:
{
"field": "capabilityTags[0]",
"source": "agent-card.json#/skills/0",
"sourceHash": "sha256:<value>",
"mappingVersion": "oan-a2a-v1",
"verifiedAt": "<timestamp>"
}
每个映射字段应记录来源对象、来源路径、原始版本、规范化版本、签名主体和内容摘要。规范化操作应可重放;排序、大小写、别名或字段裁剪改变摘要时,必须更新摘要和映射版本,并保留旧结果供审计。
21.9 兼容性配置文件与迁移路径
互操作 profile 应明确支持的 DID、A2A Agent Card、MCP、OpenAPI 版本、必选和可选字段、签名算法、传输、错误策略及迁移方式。迁移时先保留原始证据,双读旧、新 profile,核对字段摘要和签名边界,再切换单写;失败时回到旧 profile,不覆盖唯一来源。profile 本身应有名称和版本,便于调用方知道采用的是哪一组映射规则。
21.10 外部协议能力协商
协商结果可分为 compatible、partially-compatible 和 incompatible,并同时给出共同协议、版本、传输和安全能力,以及未满足的能力:
{
"result": "partially-compatible",
"commonProtocols": ["https"],
"missing": ["required-auth-scheme"]
}
客户端或适配器声明支持的协议、版本、传输和安全能力,依据双方交集选择可用 profile;没有共同能力时返回明确的不兼容结果。协商成功只表示格式和交互能力可用,仍须单独验证资源身份、发布证据、治理状态和业务权限。
21.11 外部签名与证据保留
适配器输出应将原文、规范化摘要、外部签名和 OAN 签名分开存储,并为每份材料设置来源标识。重新打包或转发时,不能只保留转换后的对象;至少应能回答“原始对象是什么、谁签署、签署了什么、转换是否改变内容、OAN 哪一方重新签署”。 适配过程中保留外部签名、凭证引用、原始对象、版本、摘要、验证时间、验证器和失败原因。重新编码或生成 OAN 资源包时,不能丢失外部材料与 OAN 控制签名之间的边界;两类签名分别说明覆盖的事实。
适配器输出应分开保存原始对象、规范化对象、外部签名、资源控制签名、注册 VC 和根平台可信发布证明。审计时应能回答:原始对象是什么、谁签署、签署了什么、转换是否改变内容、哪一方重新签署以及验证发生在何时。
参考来源
| 来源 | 类型 | 链接 |
|---|---|---|
oan-protocol-common |
代码仓:资源元数据、协议类型和外部描述绑定 | https://github.com/wolfbrother/oan-protocol-common |
oan-sdk-ts |
代码仓:客户端资源材料和协议映射辅助 | https://github.com/OpenAgenet/oan-sdk-ts |
oan-community-skill |
代码仓:社区接入脚本和外部资源注册流程 | https://github.com/OpenAgenet/oan-community-skill |
| OAN White Paper | arXiv 白皮书:生态互操作和开放基础设施定位 | https://arxiv.org/abs/2606.03161 |
| OAN Yellow Paper | arXiv 黄皮书:资源、信任和验证机制 | https://arxiv.org/abs/2606.03163 |
| Agentic Overlay Network Architecture | IETF 草案:智能体网络架构映射 | https://datatracker.ietf.org/doc/draft-xu-agentic-overlay-network-architecture/ |
| Efficient Agent Discovery Profile | IETF 草案:发现元数据和查询 profile | https://datatracker.ietf.org/doc/draft-xu-efficient-agent-discovery-profile/ |