سجل الوكلاء — الاكتشاف والتسجيل والاستدعاء عن بُعد

سجل الوكلاء هو ركيزة الحوكمة في منصة وكلاء Gemini للمؤسسات: كتالوج على مستوى المشروع للوكلاء وخوادم MCP ونقاط النهاية. يشارك ADK-Rust بثلاث طرق.

القدرةالميزةالحزمة
البحث عن الوكلاء المسجّلين وحلّهم (AgentRegistryClient، AgentSearchTool)vertex-agent-registryadk-tool
تسجيل الوكلاء المستضافين ذاتيًا، وخوادم MCP، ونقاط النهاية من CLIvertex-agent-registryadk-cli
استدعاء محرك وكيل مسجّل كوكيل فرعي (RemoteReasoningEngineAgent)vertex-remote-engineadk-server

ملاحظة: هذه الميزات لا علاقة لها بميزة YAML agent-registry المحلية على adk-server، كما أن سجل الوكلاء (خوادم/نقاط نهاية agents/MCP) خدمة منصة مختلفة عن سجل المهارات (حزم SKILL.md — راجع 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)، وهي غير متكررة الأثر: تؤدي إعادة تسجيل معرّف خدمة موجود إلى تصحيح الحقول التي تغيّرت فقط، ولا تُجري أي كتابة عند عدم حدوث تغيير. لا تتم مزامنة الإدخالات اليدوية مع دورة الحياة — لذا تظل مسؤولية تحديثها أو إزالتها عليك. ولا تدعم المناطق المتعددة us/eu التسجيل اليدوي؛ استخدم منطقة أو global.

اكتشاف الوكلاء من وكيل

يوفّر AgentSearchTool بحثًا في سجل LlmAgent باعتباره أداة عادية للقراءة فقط:

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

تعيد الأداة ملخصات {urn, displayName, description, skills, endpoint} عبر الوكلاء أو خوادم MCP أو نقاط النهاية.

التفويض إلى محرك منشور

يجعل 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، مع إجراء محاولة احتياطية واحدة باستخدام stream_query للمحركات غير ADK.

راجع examples/agent_orchestrator للاطلاع على النمط الكامل — البحث في السجل بالإضافة إلى التفويض عن بُعد ضمن منسّق واحد.

تمكين كل شيء

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

تتضمن الميزة الفوقية gemini-agent-platform كلاً من vertex-agent-registry وvertex-remote-engine، إلى جانب كل تكاملات المنصة الأخرى.