技能架构

在 Agent Registry 中,技能可让您将指令、可选脚本和领域知识打包成模块化功能,从而扩展智能体的推理和工作流。通过在 Agent Registry 中注册独立技能,您可以集中对可重复使用的任务逻辑进行版本控制、治理和共享,供您的各个智能体使用。 智能体注册表还会为智能体卡片上声明的内嵌 A2A 技能编制索引,以便其他智能体发现并调用这些技能。

技能类型

智能体注册表支持两种类型的技能:

  • 独立技能:在 Agent Registry 中注册为顶级 Skill 资源的版本控制软件包。独立技能包含 SKILL.md 指令文件、可选脚本和元数据资产,这些内容独立于任何单个智能体部署进行管理。
  • A2A 技能:在智能体的 agent-card.json 智能体卡片的 skills 字段中以内嵌方式列出的功能说明,用于告知其他智能体何时以及如何向其委托工作。

如需比较这两种模型,请参阅独立技能与 A2A 技能之间的区别。

独立技能

独立技能是 Agent Registry 中的顶级资源,与智能体、MCP 服务器和端点一起管理。与这些组件不同,独立技能不使用单独的 Service 资源。而是直接在三个资源级别注册、版本化和查询独立技能:

  • 发布商:Publisher 资源,用于为一系列技能建立所有权、验证层级和技能标识符语法。
  • 技能容器:Agent Registry 中的顶级 Skill 资源,由使用者在运行时发现和解析,每个容器都维护一个指向技能默认服务修订版本的指针。
  • 技能修订版本:不可变、只读的 SkillRevision 资源,包含特定版本的技能包指令、可选脚本和元数据资源。

Publisher

Agent Registry 中的每项独立技能都属于一个发布者。发布者可为技能确定来源、验证层级和命名前缀:

  • Google 管理的发布者 (FIRST_PARTY):Google 管理的经过验证的发布者,例如 cloud.google.com 和 discoveryengine.googleapis.com。当您设置智能体注册表并使用以下技能标识符格式时,这些发布商提供的 Google 管理的技能可在所有项目中被发现:urn:skill:PUBLISHER_ID:NAMESPACE:SKILL_ID。例如:urn:skill:discoveryengine.googleapis.com:discoveryengine:report-writing。
  • 私有发布商 (PRIVATE):默认的 private 发布商,会自动分配给您在 Google Cloud 治理项目中手动注册的自定义技能。为防止与经过验证的 Google 管理的 skill 发生命名冲突,Agent Registry 会自动在技能标识符前面添加 private- 前缀。您无法注册自定义 Publisher 资源。私有技能使用以下统一资源名称 (URN) 格式作为技能标识符:urn:skill:projects-PROJECT_NUMBER:locations:LOCATION:private-SKILL_ID。例如:urn:skill:projects-PROJECT_NUMBER:locations:global:private-incident-triage。

如需了解如何检查发布商,请参阅查看技能发布商详细信息。

技能容器

技能容器是一种 Skill 资源,表示治理项目和位置中的独立技能。对于手动创建的技能,Agent Registry 会生成一个格式为 projects/PROJECT_NUMBER/locations/LOCATION/skills/private-SKILL_ID 的资源名称。

Skill 资源作为 Agent Registry 中发现的稳定参考点,并维护以下字段:

  • 描述性元数据:人类可读的显示名称 (displayName)、摘要说明 (description)、技能标识符 (skillId) 和发布商归因。
  • 默认修订版本指针:defaultRevision 字段,用于引用在消费者解析或下载技能时(未请求明确的修订版本 ID)提供的特定 SkillRevision 资源。
  • 目标生命周期状态:targetState 字段,用于控制技能是处于有效、已停用、已弃用还是已停用状态。

如需了解如何查看和更新技能,请参阅管理技能。

技能修订版本

技能修订版本 (SkillRevision) 资源表示技能软件包的不可变、带版本的快照。资源名称采用以下格式:projects/PROJECT_NUMBER/locations/LOCATION/skills/SKILL_ID/revisions/REVISION_ID。

更新技能的指令、可选脚本或元数据资源时,您不会就地修改现有软件包。而是上传新的 ZIP 归档文件来创建新的修订版本。当 Agent Registry 验证归档文件符合智能体技能规范和提取载荷限制时,修订版本会进入有效 (ACTIVE) 状态。然后,您可以更新父级技能上的默认修订版本指针,以提供新修订版本。如果您删除设置为技能默认修订版本的修订版本,Agent Registry 会清除 defaultRevision 指针,并将活跃技能转换为已停用 (DISABLED) 状态。

将技能容器与其技能修订版本快照分开具有以下优势:

  • 确定性执行:固定到特定修订版本的智能体可免受意外提示更改或脚本更新的影响。
  • 受控回滚:您可以上传和验证新的技能修订版本,也可以在出现问题时将 defaultRevision 指针还原到更早的修订版本。
  • 可审核性:技能包的历史修订版本会保留并可供检查,直到被明确删除。

如需了解如何上传、下载和删除修订版本,请参阅管理技能修订版本。

软件包规格

独立 Skill 打包为 ZIP 归档文件,符合开放标准智能体 Skill 规范。

归档文件的根目录中必须包含 SKILL.md 文件,以及技能所需的任何脚本或元数据资源。SKILL.md 文件定义了技能的指令。此文件将 YAML front matter 元数据(例如 name 和 description)与由 Agent Runtime 解读的自然语言指令以及对归档中任何可选脚本或支持资源的引用相结合。

当您注册技能或创建修订版本时,Agent Registry 会根据提取载荷限制验证归档,解析 SKILL.md 文件,并将其元数据编入索引,以便进行搜索和发现。

技能生命周期状态

如需控制独立技能在运行时的解析和下载方式,您可以将技能容器的 targetState 转换为以下四种状态:

  • 有效 (ACTIVE):技能已提供、已编入索引以供发现,并且可用于运行时解析和载荷下载。如需将技能设置为有效,其 defaultRevision 指针必须引用有效的 SkillRevision 资源。
  • 已停用 (DISABLED):创建技能时的默认初始状态。该技能在运行时不会提供,并且解析和载荷下载会立即失败。如果技能的 defaultRevision 指针被清除或其默认修订版本被删除,技能也会转换为已停用状态。与已停用状态不同,您可以通过设置有效的 defaultRevision 并将其目标状态更新为有效来启用已停用的技能。
  • 已弃用 (DEPRECATED):技能仍可解析和下载,但会向使用者表明该技能将被停用。
  • 已停用 (DECOMMISSIONED):最终状态,技能会被永久停用,不再提供,并且无法还原为有效或任何其他状态。技能只有在弃用后才能停用。

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Agent Registry API 更新技能的生命周期状态,而无需删除历史修订版本。如需下载修订版本的 ZIP 载荷,父级技能必须处于有效或已弃用状态,并且修订版本本身必须处于有效状态。如需查看分步说明,请参阅管理技能生命周期状态。

独立技能与 A2A 技能之间的区别

Agent Registry 同时支持独立技能和内嵌 A2A 技能。下表比较了它们的特性:

特征 独立技能 内嵌 A2A 技能
资源类型 Agent Registry 中的顶级 Skill 资源,具有子 SkillRevision 资源。 Agent 资源中的嵌套数组。
软件包内容 包含 SKILL.md、可选脚本和支持资源的 ZIP 归档文件。 代理卡片中包含 id、name 和 description 的 JSON 对象。
版本控制模型 具有可配置 defaultRevision 指针的不可变技能修订版本快照。 直接与代理的 agent-card.json 的更新相关联。
执行模型 下载并加载到智能体的上下文或运行时环境中。 通告任务功能,以便在智能体之间委派任务。
指定 智能体技能规范。 Agent2Agent (A2A) 规范。
治理范围 跨项目进行管理,独立于各个代理部署。 与主机代理部署的生命周期相关联。

后续步骤