Vertex AI Skill Registry
Die Skill Registry ist der Build-Säulendienst der Gemini Enterprise Agent Platform, der versionierte SKILL.md-Pakete als ZIP-Archive auf aiplatform.googleapis.com speichert. ADK-Rust ist damit nur im Consume-only-Modus integriert: Agents erkennen, laden herunter und laden zentral verwaltete Skills, während die Bereitstellung (Erstellen, Aktualisieren, Löschen, Veröffentlichen) bei den Plattform-Tools verbleibt.
Hinweis: Die Skill Registry API ist v1beta1 (Preview) und wird ausschließlich über regionale
https://{location}-aiplatform.googleapis.com-Endpunkte inus-central1,europe-west4undus-east5bereitgestellt. Sie unterscheidet sich von der Agent Registry, einem separaten Dienst der Govern-Säule zur Katalogisierung von Agents.
Einrichtung
Aktivieren Sie das Feature unter adk-skill (und unter adk-cli für die Befehle):
[dependencies]
adk-skill = { version = "2.1.0", features = ["vertex-skill-registry"] }
Die Authentifizierung verwendet Application Default Credentials (gcloud auth application-default login). Die Konfiguration stammt aus GOOGLE_CLOUD_PROJECT und GOOGLE_CLOUD_LOCATION oder aus explizit angegebenen Werten.
Was der Client tut – und was nicht
| Vorgang | Oberfläche |
|---|---|
| Einen Skill abrufen (mit Nutzdaten) | SkillRegistryClient::get_skill |
| Skills auflisten | SkillRegistryClient::list_skills |
| Semantische Suche | SkillRegistryClient::search_skills |
| Revisionen auflisten / abrufen | list_skill_revisions, get_skill_revision |
| Herunterladen, überprüfen, extrahieren | fetch_skill_content, fetch_skill_revision_content |
| Erstellen / aktualisieren / löschen | Nicht implementiert — Plattform-Tools verwalten den Lebenszyklus |
Jede heruntergeladene Nutzlast wird anhand des Digest der Registry per SHA-256 verifiziert und vor der Verwendung jeglicher Bytes durch eine mehrschichtige ZIP-Validierung extrahiert (Anzahl der Einträge, Pfad-Traversal, symbolische Links, doppelte Namen, Größen-, Kompressionsverhältnis- und Verschachtelungstiefenlimits).
Registry-Skills in einen Agenten laden
load_skill_index_from_registry erzeugt ein standardmäßiges SkillIndex, sodass
Injektion, Auswahl und Koordination genau wie bei
Dateisystem-Skills funktionieren:
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(())
}
Registry-basierte SkillDocuments werden über denselben Parser und
Hashing-Mechanismus wie Dateisystem-Skills erstellt; sie enthalten ein
virtuelles path aus {resource name}/SKILL.md und keinen
last_modified-Zeitstempel.
Das search_skills-Agenten-Tool
SkillSearchTool stellt LLM-Agenten die Registry-Suche zur Verfügung. Es ist schreibgeschützt und
nebenläufigkeitssicher und nimmt daher an der parallelen Tool-Ausführung teil:
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)))
}
Die Eingabe ist {"query": string, "top_k"?: integer}; die Ausgabe ist ein Array von
{name, skillName, description}-Objekten vom Typ JSON, mit der besten Übereinstimmung zuerst (API gibt
keine Bewertungen zurück).
CLI
Die adk-rust-Binärdatei erhält zwei schreibgeschützte Unterbefehle hinter dem
vertex-skill-registry-Feature:
[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
Beide Befehle lesen die Flags --project/--location und verwenden ersatzweise
GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION. Abgerufene Skills werden im
standardmäßigen Skills-Layout (SKILL.md einschließlich seines
references/) abgelegt, sodass skills list,
skills match und die Skill-Erkennung des Agenten sie sofort erfassen. Es gibt keinen
push-Befehl – die Veröffentlichung erfolgt über Plattform-Tools.