Registro de Habilidades do Vertex AI
O Registro de Habilidades é o serviço do pilar Build da Plataforma de Agentes Gemini Enterprise que armazena pacotes versionados de SKILL.md como arquivos zip no aiplatform.googleapis.com. ADK-Rust integra-se a ele no modo somente consumo: os agentes descobrem, baixam e carregam habilidades governadas centralmente, enquanto o provisionamento (criação, atualização, exclusão, publicação) permanece sob responsabilidade das ferramentas da plataforma.
Observação: o API do Registro de Habilidades é v1beta1 (Prévia), disponibilizado somente por meio de endpoints regionais de
https://{location}-aiplatform.googleapis.comemus-central1,europe-west4eus-east5. Ele é diferente do Registro de Agentes, um serviço separado do pilar Govern destinado à catalogação de agentes.
Configuração
Ative o recurso em adk-skill (e em adk-cli para os comandos):
[dependencies]
adk-skill = { version = "2.1.0", features = ["vertex-skill-registry"] }
A autenticação usa as Credenciais Padrão do Aplicativo (gcloud auth application-default login). A configuração é obtida de GOOGLE_CLOUD_PROJECT e GOOGLE_CLOUD_LOCATION, ou de valores explícitos.
O que o cliente faz — e o que não faz
| Operação | Superfície |
|---|---|
| Obter uma habilidade (com payload) | SkillRegistryClient::get_skill |
| Listar habilidades | SkillRegistryClient::list_skills |
| Pesquisa semântica | SkillRegistryClient::search_skills |
| Listar / obter revisões | list_skill_revisions, get_skill_revision |
| Baixar, verificar, extrair | fetch_skill_content, fetch_skill_revision_content |
| Criar / atualizar / excluir | Não implementado — as ferramentas da plataforma gerenciam o ciclo de vida |
Cada payload baixado é verificado com SHA-256 em relação ao digest do registro e extraído com validação de zip em camadas de defesa (contagem de entradas, travessia de caminhos, links simbólicos, nomes duplicados, tamanho, proporção de compressão e limites de profundidade) antes que qualquer byte seja usado.
Carregar habilidades do registro em um agente
load_skill_index_from_registry produz um SkillIndex padrão, portanto
a injeção, a seleção e a coordenação funcionam exatamente como com
habilidades do sistema de arquivos:
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(())
}
SkillDocuments baseados no registro são criados pelo mesmo analisador e
processo de hash que as habilidades do sistema de arquivos; eles carregam um
path virtual de {resource name}/SKILL.md e nenhum
carimbo de data e hora last_modified.
A ferramenta de agente search_skills
SkillSearchTool expõe a pesquisa do registro para agentes LLM. Ela é somente leitura e
segura para concorrência, portanto participa do despacho paralelo de ferramentas:
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)))
}
A entrada é {"query": string, "top_k"?: integer}; a saída é um array JSON de
objetos {name, skillName, description}, com a melhor correspondência primeiro (o
API não retorna pontuações).
CLI
O binário adk-rust ganha dois subcomandos somente leitura por trás do
recurso 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 os comandos leem as flags --project/--location, recorrendo a
GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION. As habilidades obtidas são colocadas no
layout padrão de habilidades (SKILL.md e seu
references/), portanto skills list,
skills match e a descoberta de habilidades do agente as encontram imediatamente. Não há
um comando push — a publicação é feita pelas ferramentas da plataforma.