Registro de agentes — descoberta, registro e invocação remota
O Registro de agentes é o pilar Govern da Plataforma de agentes empresariais Gemini: um catálogo com escopo do projeto de agentes, servidores MCP e endpoints. ADK-Rust participa de três maneiras.
| Capacidade | Recurso | Crate |
|---|---|---|
Pesquisar e resolver agentes registrados (AgentRegistryClient, AgentSearchTool) | vertex-agent-registry | adk-tool |
| Registrar agentes auto-hospedados, servidores MCP e endpoints do CLI | vertex-agent-registry | adk-cli |
Invocar um Agent Engine registrado como subagente (RemoteReasoningEngineAgent) | vertex-remote-engine | adk-server |
Observação: esses recursos não têm relação com o recurso local YAML
agent-registryemadk-server, e o Agent Registry (servidores/endpoints de agents/MCP) é um serviço de plataforma diferente do Skill Registry (pacotes SKILL.md — consultedocs/official_docs/skills/skill-registry.md).
Registro automático vs. manual
As implantações do Agent Engine registram a si mesmas: criar um engine (por exemplo, com adk-rust deploy agent-engine) adiciona-o ao registro e mantém o ciclo de vida da entrada sincronizado. Não o registre novamente — uma entrada manual o duplicaria em um namespace URN diferente.
O registro manual existe para todo o restante, e é isso que CLI aborda:
# A self-hosted adk-server agent, described by its A2A agent card
adk-rust registry register-agent --service-id my-agent --card agent-card.json
# An external MCP server (you supply the tools/list payload; no introspection)
adk-rust registry register-mcp --service-id my-mcp --tool-spec tools-list.json \
--url https://mcp.example.com/rpc
# A bare governed endpoint
adk-rust registry register-endpoint --service-id my-api --url https://api.example.com/v1
# Discovery
adk-rust registry search "travel planner" --type agent
Todos os comandos aceitam --project/--location (com fallback para GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION) e são idempotentes: registrar novamente um ID de serviço existente aplica somente correções nos campos alterados e não realiza nenhuma gravação quando nada foi alterado. As entradas manuais não têm o ciclo de vida sincronizado — continua sendo sua responsabilidade atualizá-las ou removê-las. As regiões múltiplas us/eu não oferecem suporte ao registro manual; use uma região ou global.
Descobrindo agents a partir de um agent
AgentSearchTool fornece uma pesquisa no registro LlmAgent como uma ferramenta comum somente leitura:
use adk_tool::{AgentRegistryClient, AgentRegistryConfig, AgentSearchTool};
use std::sync::Arc;
# fn build() -> adk_core::Result<()> {
let registry = AgentRegistryClient::new_with_adc(
AgentRegistryConfig::new("my-project", "us-central1"),
)?;
let search_tool = Arc::new(AgentSearchTool::new(Arc::new(registry)));
# let _ = search_tool;
# Ok(())
# }
A ferramenta retorna resumos {urn, displayName, description, skills, endpoint} entre agents, servidores MCP ou endpoints.
Delegando para um engine implantado
RemoteReasoningEngineAgent transforma qualquer Agent Engine implantado em um subagente comum — ele encaminha a rodada por reasoningEngines:streamQuery e produz os eventos remotos como eventos ADK:
use adk_server::agent_engine::remote::RemoteReasoningEngineAgent;
# async fn build() -> adk_core::Result<()> {
let remote = RemoteReasoningEngineAgent::builder("specialist")
.resource_name("projects/my-project/locations/us-central1/reasoningEngines/4242")
.build()
.await?;
# let _ = remote;
# Ok(())
# }
Os engines também podem ser endereçados pelo URN do registro (.urn(...) mais .registry(...)); o nome do recurso é resolvido a partir da referência de runtime da entrada. O método de classe padrão é streaming_agent_run_with_events, com um fallback de execução única para stream_query no caso de engines que não sejam ADK.
Consulte examples/agent_orchestrator para ver o padrão completo — pesquisa no registro e delegação remota em um único orquestrador.
Habilitando tudo
[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-agent-platform"] }
O meta-recurso gemini-agent-platform inclui vertex-agent-registry e vertex-remote-engine, juntamente com todas as outras integrações da plataforma.