Registro de habilidades de Vertex AI
El Registro de habilidades es el servicio del pilar Build de Gemini Enterprise Agent Platform que almacena paquetes SKILL.md versionados como archivos zip en
aiplatform.googleapis.com. ADK-Rust se integra con él únicamente para consumir:
los agentes descubren, descargan y cargan habilidades administradas de forma centralizada, mientras que el aprovisionamiento (crear, actualizar, eliminar, publicar) permanece en las herramientas de la plataforma.
Nota: API del Registro de habilidades es v1beta1 (Preview) y se ofrece únicamente desde extremos regionales de
https://{location}-aiplatform.googleapis.comenus-central1,europe-west4yus-east5. Es distinto del Registro de agentes, un servicio independiente del pilar Govern para catalogar agentes.
Configuración
Habilita la función en adk-skill (y en adk-cli para los comandos):
[dependencies]
adk-skill = { version = "2.1.0", features = ["vertex-skill-registry"] }
La autenticación utiliza Application Default Credentials
(gcloud auth application-default login). La configuración proviene de
GOOGLE_CLOUD_PROJECT y GOOGLE_CLOUD_LOCATION, o de valores explícitos.
Lo que hace el cliente — y lo que no hace
| Operación | Superficie |
|---|---|
| Obtener una habilidad (con carga útil) | SkillRegistryClient::get_skill |
| Enumerar habilidades | SkillRegistryClient::list_skills |
| Búsqueda semántica | SkillRegistryClient::search_skills |
| Listar / obtener revisiones | list_skill_revisions, get_skill_revision |
| Descargar, verificar, extraer | fetch_skill_content, fetch_skill_revision_content |
| Crear / actualizar / eliminar | No implementado — las herramientas de la plataforma gestionan el ciclo de vida |
Cada payload descargado se verifica mediante SHA-256 contra el resumen del registro y se extrae con una validación de archivos zip en profundidad de defensa (recuento de entradas, recorrido de rutas, enlaces simbólicos, nombres duplicados, tamaño, proporción de compresión y límites de profundidad) antes de utilizar cualquier byte.
Cargar las habilidades del registro en un agente
load_skill_index_from_registry produce un SkillIndex estándar, por lo que la
inyección, la selección y la coordinación funcionan exactamente igual que con
las habilidades del sistema de archivos:
use adk_skill::registry::{
RegistrySkillFilter, SkillRegistryClient, SkillRegistryConfig,
load_skill_index_from_registry, merge_skill_indexes,
};
use adk_skill::load_skill_index;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = SkillRegistryClient::new_with_adc(SkillRegistryConfig::from_env()?)?;
// Select by semantic search…
let remote = load_skill_index_from_registry(
&client,
RegistrySkillFilter::by_query("quarterly reporting").with_top_k(5),
)
.await?;
// …or by explicit names, optionally pinned to a revision.
let pinned = load_skill_index_from_registry(
&client,
RegistrySkillFilter::by_names(["report-writer"]).with_revision("3"),
)
.await?;
// Merge with project-local skills — local wins on name collision,
// matching the project-local-over-global precedence of
// load_skill_index_with_extras.
let local = load_skill_index(".")?;
let merged = merge_skill_indexes(local, remote);
println!("{} skill(s) available ({} pinned)", merged.len(), pinned.len());
Ok(())
}
Los SkillDocument respaldados por el registro se crean mediante el mismo analizador y
mecanismo de hashing que las habilidades del sistema de archivos; contienen un
path virtual de {resource name}/SKILL.md y no tienen una marca de tiempo last_modified.
La herramienta de agente search_skills
SkillSearchTool expone la búsqueda del registro a los agentes LLM. Es de solo
lectura y segura para la concurrencia, por lo que participa en el envío paralelo
de herramientas:
use adk_skill::registry::{SkillRegistryClient, SkillRegistryConfig, SkillSearchTool};
use std::sync::Arc;
fn build_tool() -> adk_core::Result<SkillSearchTool> {
let client = SkillRegistryClient::new_with_adc(SkillRegistryConfig::from_env()?)?;
Ok(SkillSearchTool::new(Arc::new(client)))
}
La entrada es {"query": string, "top_k"?: integer}; la salida es un arreglo de objetos
JSON de {name, skillName, description}, con la mejor coincidencia en primer lugar (el
API no devuelve puntuaciones).
CLI
El binario adk-rust incorpora dos subcomandos de solo lectura detrás de la
funcionalidad vertex-skill-registry:
[dependencies]
adk-cli = { version = "2.1.0", features = ["vertex-skill-registry"] }
# Semantic search (best match first)
adk-rust skills search "quarterly reporting" --top-k 5
# Materialize a skill package under .skills/<skill-id>/
adk-rust skills pull report-writer
# Pin a revision and choose the target directory
adk-rust skills pull report-writer --revision 3 --dir vendored-skills
Ambos comandos leen las opciones --project/--location y recurren a
GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION. Las habilidades descargadas se colocan en la
estructura estándar de habilidades (SKILL.md junto con su references/), por lo que
skills list, skills match y el descubrimiento de habilidades del agente las detectan
inmediatamente. No existe ningún comando push; la publicación se realiza
mediante las herramientas de la plataforma.