سجل المهارات في Vertex AI
سجل المهارات هو خدمة Build في منصة وكلاء Gemini Enterprise Agent Platform، وتخزّن حزم SKILL.md ذات الإصدارات كأرشيفات zip على aiplatform.googleapis.com. يتكامل معها ADK-Rust بنمط الاستهلاك فقط: إذ تكتشف الوكلاء المهارات الخاضعة للحوكمة المركزية وتنزّلها وتحمّلها، بينما تبقى عمليات التوفير (الإنشاء والتحديث والحذف والنشر) ضمن أدوات المنصة.
ملاحظة: إن API لسجل المهارات هو v1beta1 (إصدار تجريبي)، ويتم تقديمه من نقاط نهاية
https://{location}-aiplatform.googleapis.comالإقليمية فيus-central1وeurope-west4وus-east5فقط. وهو يختلف عن سجل الوكلاء، وهي خدمة منفصلة ضمن ركيزة الحوكمة لفهرسة الوكلاء.
الإعداد
فعّل الميزة على adk-skill (وعلى adk-cli للأوامر):
[dependencies]
adk-skill = { version = "2.1.0", features = ["vertex-skill-registry"] }
تستخدم المصادقة بيانات الاعتماد الافتراضية للتطبيق
(gcloud auth application-default login). ويأتي الإعداد من
GOOGLE_CLOUD_PROJECT وGOOGLE_CLOUD_LOCATION، أو من قيم صريحة.
ما يفعله العميل — وما لا يفعله
| العملية | الواجهة |
|---|---|
| الحصول على مهارة (مع الحمولة) | SkillRegistryClient::get_skill |
| سرد المهارات | SkillRegistryClient::list_skills |
| البحث الدلالي | SkillRegistryClient::search_skills |
| سرد / الحصول على المراجعات | list_skill_revisions، get_skill_revision |
| التنزيل، والتحقق، والاستخراج | fetch_skill_content، fetch_skill_revision_content |
| الإنشاء / التحديث / الحذف | غير مُنفَّذ — تتولى أدوات المنصة دورة الحياة |
يتم التحقق من كل حمولة مُنزَّلة باستخدام SHA-256 مقابل الملخص الخاص بالسجل، ثم استخراجها مع التحقق الدفاعي المتعدد من صحة ملفات zip (عدد الإدخالات، واجتياز المسارات، والروابط الرمزية، والأسماء المكررة، والحجم، ونسبة الضغط، وحدود العمق) قبل استخدام أي بايت.
تحميل مهارات السجل إلى وكيل
ينتج load_skill_index_from_registry ملف SkillIndex قياسيًا، لذا
يعمل الحقن والاختيار والتنسيق تمامًا كما هو الحال مع مهارات نظام الملفات:
use adk_skill::registry::{
RegistrySkillFilter, SkillRegistryClient, SkillRegistryConfig,
load_skill_index_from_registry, merge_skill_indexes,
};
use adk_skill::load_skill_index;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = SkillRegistryClient::new_with_adc(SkillRegistryConfig::from_env()?)?;
// Select by semantic search…
let remote = load_skill_index_from_registry(
&client,
RegistrySkillFilter::by_query("quarterly reporting").with_top_k(5),
)
.await?;
// …or by explicit names, optionally pinned to a revision.
let pinned = load_skill_index_from_registry(
&client,
RegistrySkillFilter::by_names(["report-writer"]).with_revision("3"),
)
.await?;
// Merge with project-local skills — local wins on name collision,
// matching the project-local-over-global precedence of
// load_skill_index_with_extras.
let local = load_skill_index(".")?;
let merged = merge_skill_indexes(local, remote);
println!("{} skill(s) available ({} pinned)", merged.len(), pinned.len());
Ok(())
}
تُنشأ SkillDocuments المدعومة بالسجل من خلال المحلل نفسه
وعملية التجزئة نفسها المستخدمين لمهارات نظام الملفات؛ وهي تحمل
path افتراضيًا من {resource name}/SKILL.md ولا تحمل طابعًا زمنيًا
last_modified.
أداة وكيل search_skills
يتيح SkillSearchTool البحث في السجل لوكلاء LLM. وهي للقراءة فقط وآمنة
مع التزامن، ولذلك تشارك في توزيع الأدوات بالتوازي:
use adk_skill::registry::{SkillRegistryClient, SkillRegistryConfig, SkillSearchTool};
use std::sync::Arc;
fn build_tool() -> adk_core::Result<SkillSearchTool> {
let client = SkillRegistryClient::new_with_adc(SkillRegistryConfig::from_env()?)?;
Ok(SkillSearchTool::new(Arc::new(client)))
}
الإدخال هو {"query": string, "top_k"?: integer}؛ والإخراج عبارة عن مصفوفة JSON من
كائنات {name, skillName, description}، مرتبة بدءًا بأفضل تطابق (إذ يعيد
API النتائج دون درجات).
CLI
تحصل ثنائية adk-rust على أمرين فرعيين للقراءة فقط خلف
الميزة vertex-skill-registry:
[dependencies]
adk-cli = { version = "2.1.0", features = ["vertex-skill-registry"] }
# Semantic search (best match first)
adk-rust skills search "quarterly reporting" --top-k 5
# Materialize a skill package under .skills/<skill-id>/
adk-rust skills pull report-writer
# Pin a revision and choose the target directory
adk-rust skills pull report-writer --revision 3 --dir vendored-skills
يقرأ كلا الأمرين الرايتين --project/--location، مع الرجوع إلى
GOOGLE_CLOUD_PROJECT/GOOGLE_CLOUD_LOCATION. وتوضع المهارات المُستجلَبة في
التنسيق القياسي للمهارات (SKILL.md بالإضافة إلى
references/ الخاص بها)، لذلك يلتقطها skills list و
skills match واكتشاف مهارات الوكيل فورًا. لا يوجد أمر
push — إذ يمر النشر عبر أدوات المنصة.