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.

CapacidadeRecursoCrate
Pesquisar e resolver agentes registrados (AgentRegistryClient, AgentSearchTool)vertex-agent-registryadk-tool
Registrar agentes auto-hospedados, servidores MCP e endpoints do CLIvertex-agent-registryadk-cli
Invocar um Agent Engine registrado como subagente (RemoteReasoningEngineAgent)vertex-remote-engineadk-server

Observação: esses recursos não têm relação com o recurso local YAML agent-registry em adk-server, e o Agent Registry (servidores/endpoints de agents/MCP) é um serviço de plataforma diferente do Skill Registry (pacotes SKILL.md — consulte docs/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.