Registre des compétences Vertex AI
Le registre des compétences est le service du pilier Build de Gemini Enterprise Agent Platform qui stocke les packages SKILL.md versionnés sous forme d’archives zip sur
aiplatform.googleapis.com. ADK-Rust s’y intègre en mode consommation uniquement :
les agents découvrent, téléchargent et chargent des compétences gouvernées de manière centralisée, tandis que le provisionnement (création, mise à jour, suppression, publication) reste assuré par les outils de la plateforme.
Remarque : le API du registre des compétences est en v1beta1 (Preview), fourni uniquement depuis des points de terminaison
https://{location}-aiplatform.googleapis.comrégionaux dansus-central1,europe-west4etus-east5. Il est distinct du registre des agents, un service séparé du pilier Govern destiné à cataloguer les agents.
Configuration
Activez la fonctionnalité sur adk-skill (et sur adk-cli pour les commandes) :
[dependencies]
adk-skill = { version = "2.1.0", features = ["vertex-skill-registry"] }
L’authentification utilise les identifiants par défaut de l’application
(gcloud auth application-default login). La configuration provient de
GOOGLE_CLOUD_PROJECT et GOOGLE_CLOUD_LOCATION, ou de valeurs explicites.
Ce que fait le client — et ce qu’il ne fait pas
| Opération | Surface |
|---|---|
| Obtenir une compétence (avec charge utile) | SkillRegistryClient::get_skill |
| Répertorier les compétences | SkillRegistryClient::list_skills |
| Recherche sémantique | SkillRegistryClient::search_skills |
| Répertorier / récupérer les révisions | list_skill_revisions, get_skill_revision |
| Télécharger, vérifier, extraire | fetch_skill_content, fetch_skill_revision_content |
| Créer / mettre à jour / supprimer | Non implémenté — les outils de la plateforme gèrent le cycle de vie |
Chaque charge utile téléchargée est vérifiée par SHA-256 par rapport à l’empreinte du registre, puis extraite avec une validation zip en profondeur (nombre d’entrées, traversée de chemins, liens symboliques, noms en double, taille, ratio de compression et limites de profondeur) avant que le moindre octet ne soit utilisé.
Charger les compétences du registre dans un agent
load_skill_index_from_registry produit un SkillIndex standard, de sorte que
l’injection, la sélection et la coordination fonctionnent exactement comme
avec les compétences du système de fichiers :
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(())
}
Les SkillDocuments adossées au registre sont créées par le même analyseur et
le même mécanisme de hachage que les compétences du système de fichiers ; elles
contiennent un path virtuel de
{resource name}/SKILL.md et aucun horodatage last_modified.
L’outil d’agent search_skills
SkillSearchTool expose la recherche dans le registre aux agents
LLM. Il est en lecture seule et sûr en contexte concurrent, ce qui lui
permet de participer à la distribution parallèle des outils :
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)))
}
L’entrée est un {"query": string, "top_k"?: integer} ; la sortie est un tableau de
JSON composé d’objets {name, skillName, description}, avec le meilleur résultat en premier (le
API ne renvoie aucun score).
CLI
Le binaire adk-rust acquiert deux sous-commandes en lecture seule derrière la
fonctionnalité 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
Les deux commandes lisent les options --project/--location, en utilisant
GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION comme solution de repli. Les compétences récupérées sont
placées dans la structure standard des compétences (SKILL.md ainsi que son
references/), de sorte que skills list,
skills match et la découverte des compétences par l’agent les prennent
immédiatement en compte. Il n’existe aucune commande push — la
publication passe par les outils de la plateforme.