Registro de agentes — descubrimiento, registro e invocación remota
El Registro de agentes es el pilar de Gobernanza de la Plataforma de agentes de Gemini Enterprise: un catálogo con ámbito de proyecto de agentes, servidores MCP y endpoints. ADK-Rust participa de tres formas.
| Capacidad | Funcionalidad | Crate |
|---|---|---|
Buscar y resolver agentes registrados (AgentRegistryClient, AgentSearchTool) | vertex-agent-registry | adk-tool |
| Registrar agentes autohospedados, servidores MCP y puntos de conexión desde CLI | vertex-agent-registry | adk-cli |
Invocar un Agent Engine registrado como subagente (RemoteReasoningEngineAgent) | vertex-remote-engine | adk-server |
Nota: estas funciones no están relacionadas con la función local YAML
agent-registryenadk-server, y el registro de agentes (servidores/extremos agents/MCP) es un servicio de plataforma diferente del registro de habilidades (paquetes SKILL.md — consultadocs/official_docs/skills/skill-registry.md).
Registro automático frente a registro manual
Las implementaciones de Agent Engine se registran automáticamente: al crear un motor (por ejemplo, con adk-rust deploy agent-engine) se añade al registro y la entrada se mantiene sincronizada con su ciclo de vida. No lo registres de nuevo: una entrada manual lo duplicaría bajo un espacio de nombres URN diferente.
El registro manual existe para todo lo demás, y eso es lo que cubre CLI:
# 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 los comandos usan --project/--location (con GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION como alternativa) y son idempotentes: volver a registrar un ID de servicio existente aplica solo parches a los campos modificados y no realiza ninguna escritura cuando no ha cambiado nada. Las entradas manuales no se sincronizan con el ciclo de vida; actualizaras o eliminarlas sigue siendo tu responsabilidad. Las regiones múltiples us/eu no admiten el registro manual; usa una región o global.
Descubrir agentes desde un agente
AgentSearchTool proporciona una búsqueda en el registro de LlmAgent como una herramienta normal de solo lectura:
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(())
# }
La herramienta devuelve resúmenes {urn, displayName, description, skills, endpoint} de agentes, servidores MCP o extremos.
Delegar en un motor implementado
RemoteReasoningEngineAgent convierte cualquier Agent Engine implementado en un subagente normal: reenvía el turno mediante reasoningEngines:streamQuery y proporciona los 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(())
# }
También se puede acceder a los motores mediante la URN del registro (.urn(...) más .registry(...)); el nombre del recurso se resuelve a partir de la referencia de ejecución de la entrada. El método de clase predeterminado es streaming_agent_run_with_events, con una alternativa de un solo intento a stream_query para motores que no sean ADK.
Consulta examples/agent_orchestrator para ver el patrón completo: búsqueda en el registro más delegación remota en un único orquestador.
Habilitarlo todo
[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-agent-platform"] }
La meta-función gemini-agent-platform incluye vertex-agent-registry y vertex-remote-engine, junto con todas las demás integraciones de la plataforma.