سجل الوكلاء — الاكتشاف والتسجيل والاستدعاء عن بُعد
سجل الوكلاء هو ركيزة الحوكمة في منصة وكلاء Gemini للمؤسسات: كتالوج على مستوى المشروع للوكلاء وخوادم MCP ونقاط النهاية. يشارك ADK-Rust بثلاث طرق.
| القدرة | الميزة | الحزمة |
|---|---|---|
البحث عن الوكلاء المسجّلين وحلّهم (AgentRegistryClient، AgentSearchTool) | vertex-agent-registry | adk-tool |
| تسجيل الوكلاء المستضافين ذاتيًا، وخوادم MCP، ونقاط النهاية من CLI | vertex-agent-registry | adk-cli |
استدعاء محرك وكيل مسجّل كوكيل فرعي (RemoteReasoningEngineAgent) | vertex-remote-engine | adk-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، إلى جانب كل تكاملات المنصة الأخرى.