Agent Registry — 发现、注册和远程调用

Agent Registry 是 Gemini Enterprise Agent Platform 的治理支柱:一个限定项目范围的代理、MCP 服务器和端点目录。ADK-Rust 以三种方式参与其中。

能力功能Crate
搜索并解析已注册的代理(AgentRegistryClientAgentSearchToolvertex-agent-registryadk-tool
注册自托管代理、MCP 服务器以及来自 CLI 的端点vertex-agent-registryadk-cli
调用已注册的 Agent Engine 作为子代理 (RemoteReasoningEngineAgent)vertex-remote-engineadk-server

注意: 这些功能与 adk-server 上的本地 YAML agent-registry 功能无关,并且 Agent Registry(agents/MCP servers/endpoints)与 Skill Registry(SKILL.md packages — 参见 docs/official_docs/skills/skill-registry.md)是不同的平台服务。

自动注册与手动注册

Agent Engine 部署会自行注册:创建引擎(例如使用 adk-rust deploy agent-engine)会将其添加到注册表,并使条目生命周期保持同步。不要再次注册它——手动条目会在不同的 URN 命名空间下产生重复项。

其他所有对象都支持手动注册,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

所有命令都使用 --project/--location(回退到 GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION),并且具有幂等性:重新注册现有服务 ID 时,只会更新发生变化的字段;如果没有任何变化,则不会执行写入。手动条目不会进行生命周期同步——更新或移除它们由你负责。us/eu 多区域不支持手动注册;请使用某个区域或 global

从代理中发现其他代理

AgentSearchToolLlmAgent 注册表搜索作为普通的只读工具提供:

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(())
# }

该工具会返回代理、MCP 服务器或端点的 {urn, displayName, description, skills, endpoint} 摘要。

委托给已部署的引擎

RemoteReasoningEngineAgent 可将任何已部署的 Agent Engine 作为普通子代理使用——它会通过 reasoningEngines:streamQuery 转发本轮请求,并将远程事件作为 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(())
# }

也可以通过注册表 URN(.urn(...) 加上 .registry(...))访问引擎;资源名称会根据条目的运行时引用进行解析。默认类方法为 streaming_agent_run_with_events;对于非 ADK 引擎,会一次性回退到 stream_query

请参阅 examples/agent_orchestrator,了解完整模式——在一个编排器中结合注册表搜索与远程委派。

启用所有功能

[dependencies]
adk-rust = { version = "2.1.0", features = ["minimal", "gemini-agent-platform"] }

gemini-agent-platform 元功能包含 vertex-agent-registryvertex-remote-engine,以及所有其他平台集成。