المهارات
نظرة عامة
Section titled “نظرة عامة”المهارات هي مجلدات مستقلة توفر للوكلاء تعليمات وإرشادات ومواد مرجعية خاصة بالمجال. تُعرّف كل مهارة بملف SKILL.md يحتوي على بيانات وصفية YAML ومحتوى Markdown.
عند التفعيل، يتم حقن تعليمات المهارة مباشرة في إرشادات مهمة الوكيل — مما يمنح الوكيل خبرة دون الحاجة لأي تغييرات في الكود.
البداية السريعة
Section titled “البداية السريعة”1. إنشاء مجلد المهارة
Section titled “1. إنشاء مجلد المهارة”skills/└── code-review/ ├── SKILL.md # مطلوب — التعليمات ├── references/ # اختياري — مستندات مرجعية │ └── style-guide.md └── scripts/ # اختياري — سكربتات قابلة للتنفيذ2. كتابة SKILL.md الخاص بك
Section titled “2. كتابة SKILL.md الخاص بك”---name: code-reviewdescription: Guidelines for conducting thorough code reviews with focus on security and performance.metadata: author: your-team version: "1.0"---
## إرشادات مراجعة الكود
عند مراجعة الكود، اتبع قائمة التحقق هذه:
1. **الأمان**: تحقق من ثغرات الحقن وتجاوز المصادقة وكشف البيانات2. **الأداء**: ابحث عن استعلامات N+1 والتخصيصات غير الضرورية والاستدعاءات المحظورة3. **القابلية للقراءة**: تأكد من وضوح التسمية والتعليقات المناسبة والأسلوب المتسق4. **الاختبارات**: تحقق من تغطية اختبار كافية للوظائف الجديدة
### مستويات الخطورة- **حرج**: ثغرات أمنية، مخاطر فقدان البيانات → حظر الدمج- **رئيسي**: مشاكل أداء، أخطاء منطقية → طلب تغييرات- **ثانوي**: مسائل أسلوبية، اقتراحات تسمية → الموافقة مع تعليقات3. ربطها بوكيل
Section titled “3. ربطها بوكيل”from crewai import Agentfrom crewai_tools import GithubSearchTool, FileReadTool
reviewer = Agent( role="Senior Code Reviewer", goal="Review pull requests for quality and security issues", backstory="Staff engineer with expertise in secure coding practices.", skills=["./skills"], # يحقن إرشادات المراجعة tools=[GithubSearchTool(), FileReadTool()], # يسمح للوكيل بقراءة الكود)الوكيل الآن لديه خبرة (من المهارة) وقدرات (من الأدوات) معًا.
المهارات + الأدوات: العمل معًا
Section titled “المهارات + الأدوات: العمل معًا”إليك أنماط شائعة توضح كيف تُكمّل المهارات والأدوات بعضهما:
النمط 1: مهارات فقط (خبرة المجال، بدون إجراءات مطلوبة)
Section titled “النمط 1: مهارات فقط (خبرة المجال، بدون إجراءات مطلوبة)”استخدم عندما يحتاج الوكيل لتعليمات محددة لكن لا يحتاج لاستدعاء خدمات خارجية:
agent = Agent( role="Technical Writer", goal="Write clear API documentation", backstory="Expert technical writer", skills=["./skills/api-docs-style"], # إرشادات وقوالب الكتابة # لا حاجة لأدوات — الوكيل يكتب بناءً على السياق المقدم)النمط 2: أدوات فقط (إجراءات، بدون خبرة خاصة)
Section titled “النمط 2: أدوات فقط (إجراءات، بدون خبرة خاصة)”استخدم عندما يحتاج الوكيل لاتخاذ إجراءات لكن لا يحتاج لتعليمات مجال محددة:
from crewai_tools import SerperDevTool, ScrapeWebsiteTool
agent = Agent( role="Web Researcher", goal="Find information about a topic", backstory="Skilled at finding information online", tools=[SerperDevTool(), ScrapeWebsiteTool()], # يمكنه البحث والاستخراج # لا حاجة لمهارات — البحث العام لا يحتاج إرشادات خاصة)النمط 3: مهارات + أدوات (خبرة وإجراءات)
Section titled “النمط 3: مهارات + أدوات (خبرة وإجراءات)”النمط الأكثر شيوعًا في العالم الحقيقي. المهارة توفر كيف تقترب من العمل؛ الأدوات توفر ما يمكن للوكيل فعله:
from crewai_tools import SerperDevTool, FileReadTool, CodeInterpreterTool
analyst = Agent( role="Security Analyst", goal="Audit infrastructure for vulnerabilities", backstory="Expert in cloud security and compliance", skills=["./skills/security-audit"], # منهجية وقوائم تحقق التدقيق tools=[ SerperDevTool(), # البحث عن ثغرات معروفة FileReadTool(), # قراءة ملفات التكوين CodeInterpreterTool(), # تشغيل سكربتات التحليل ],)النمط 4: مهارات + MCP
Section titled “النمط 4: مهارات + MCP”المهارات تعمل مع خوادم MCP بنفس الطريقة التي تعمل بها مع الأدوات:
agent = Agent( role="Data Analyst", goal="Analyze customer data and generate reports", backstory="Expert data analyst with strong statistical background", skills=["./skills/data-analysis"], # منهجية التحليل mcps=["https://data-warehouse.example.com/sse"], # وصول بيانات عن بُعد)النمط 5: مهارات + تطبيقات
Section titled “النمط 5: مهارات + تطبيقات”المهارات يمكن أن توجّه كيف يستخدم الوكيل تكاملات المنصة:
agent = Agent( role="Customer Support Agent", goal="Respond to customer inquiries professionally", backstory="Experienced support representative", skills=["./skills/support-playbook"], # قوالب الردود وقواعد التصعيد apps=["gmail", "zendesk"], # يمكنه إرسال رسائل بريد وتحديث التذاكر)المهارات على مستوى الطاقم
Section titled “المهارات على مستوى الطاقم”يمكن تعيين المهارات على الطاقم لتُطبّق على جميع الوكلاء:
from crewai import Crew
crew = Crew( agents=[researcher, writer, reviewer], tasks=[research_task, write_task, review_task], skills=["./skills"], # جميع الوكلاء يحصلون على هذه المهارات)المهارات على مستوى الوكيل لها الأولوية — إذا تم اكتشاف نفس المهارة في كلا المستويين، يتم استخدام نسخة الوكيل.
تنسيق SKILL.md
Section titled “تنسيق SKILL.md”---name: my-skilldescription: وصف قصير لما تفعله هذه المهارة ومتى تُستخدم.license: Apache-2.0 # اختياريcompatibility: crewai>=0.1.0 # اختياريmetadata: # اختياري author: your-name version: "1.0"allowed-tools: web-search file-read # اختياري، تجريبي---
التعليمات للوكيل تُكتب هنا. يتم حقن محتوى Markdown هذافي إرشادات الوكيل عند تفعيل المهارة.حقول البيانات الوصفية
Section titled “حقول البيانات الوصفية”| الحقل | مطلوب | الوصف |
|---|---|---|
name | نعم | 1-64 حرف. أحرف صغيرة أبجدية رقمية وشرطات. يجب أن يطابق اسم المجلد. |
description | نعم | 1-1024 حرف. يصف ما تفعله المهارة ومتى تُستخدم. |
license | لا | اسم الترخيص أو مرجع لملف ترخيص مضمّن. |
compatibility | لا | حد أقصى 500 حرف. متطلبات البيئة (منتجات، حزم، شبكة). |
metadata | لا | تعيين مفتاح-قيمة نصي عشوائي. |
allowed-tools | لا | قائمة أدوات معتمدة مسبقًا مفصولة بمسافات. تجريبي. |
هيكل المجلد
Section titled “هيكل المجلد”my-skill/├── SKILL.md # مطلوب — البيانات الوصفية + التعليمات├── scripts/ # اختياري — سكربتات قابلة للتنفيذ├── references/ # اختياري — مستندات مرجعية└── assets/ # اختياري — ملفات ثابتة (إعدادات، بيانات)يجب أن يتطابق اسم المجلد مع حقل name في SKILL.md. مجلدات scripts/ و references/ و assets/ متاحة في مسار المهارة path للوكلاء الذين يحتاجون للإشارة إلى الملفات مباشرة.
المهارات المحمّلة مسبقًا
Section titled “المهارات المحمّلة مسبقًا”للمزيد من التحكم، يمكنك اكتشاف المهارات وتفعيلها برمجيًا:
from pathlib import Pathfrom crewai.skills import discover_skills, activate_skill
# اكتشاف جميع المهارات في مجلدskills = discover_skills(Path("./skills"))
# تفعيلها (تحميل محتوى SKILL.md الكامل)activated = [activate_skill(s) for s in skills]
# تمرير إلى وكيلagent = Agent( role="Researcher", goal="Find relevant information", backstory="An expert researcher.", skills=activated,)كيف يتم تحميل المهارات
Section titled “كيف يتم تحميل المهارات”تستخدم المهارات الكشف التدريجي — تحمّل فقط ما هو مطلوب في كل مرحلة:
| المرحلة | ما يتم تحميله | متى |
|---|---|---|
| الاكتشاف | الاسم، الوصف، حقول البيانات الوصفية | discover_skills() |
| التفعيل | نص محتوى SKILL.md الكامل | activate_skill() |
أثناء التنفيذ العادي للوكيل (تمرير مسارات المجلدات عبر skills=["./skills"])، يتم اكتشاف المهارات وتفعيلها تلقائيًا. التحميل التدريجي مهم فقط عند استخدام الواجهة البرمجية.
المهارات مقابل المعرفة
Section titled “المهارات مقابل المعرفة”كلا المهارات والمعرفة تُعدّل إرشادات الوكيل، لكنهما يخدمان أغراضًا مختلفة:
| الجانب | المهارات | المعرفة |
|---|---|---|
| ما توفره | تعليمات، إجراءات، إرشادات | حقائق، بيانات، معلومات |
| كيف تُخزّن | ملفات Markdown (SKILL.md) | مُضمّنة في مخزن متجهي (ChromaDB) |
| كيف تُسترجع | يتم حقن المحتوى الكامل في الإرشادات | البحث الدلالي يجد الأجزاء ذات الصلة |
| الأفضل لـ | المنهجيات، قوائم التحقق، أدلة الأسلوب | مستندات الشركة، معلومات المنتج، بيانات مرجعية |
| يُعيّن عبر | skills=["./skills"] | knowledge_sources=[source] |
القاعدة العامة: إذا كان الوكيل يحتاج لاتباع عملية، استخدم مهارة. إذا كان يحتاج للرجوع إلى بيانات، استخدم المعرفة.
الأسئلة الشائعة
Section titled “الأسئلة الشائعة”هل أحتاج لتعيين المهارات والأدوات معًا؟
يعتمد على حالة الاستخدام. المهارات والأدوات مستقلتان — يمكنك استخدام أيّ منهما أو كليهما أو لا شيء.
- مهارات فقط: عندما يحتاج الوكيل خبرة لكن لا يحتاج إجراءات خارجية (مثال: الكتابة بإرشادات أسلوبية)
- أدوات فقط: عندما يحتاج الوكيل إجراءات لكن لا يحتاج منهجية خاصة (مثال: بحث بسيط على الويب)
- كليهما: عندما يحتاج الوكيل خبرة وإجراءات (مثال: تدقيق أمني بقوائم تحقق محددة وقدرة على فحص الكود)
هل توفر المهارات أدوات تلقائيًا؟
لا. حقل allowed-tools في SKILL.md هو بيانات وصفية تجريبية فقط — لا يُنشئ أو يحقن أي أدوات. يجب عليك دائمًا تعيين الأدوات بشكل منفصل عبر tools=[] أو mcps=[] أو apps=[].
ماذا يحدث إذا عيّنت نفس المهارة على كل من الوكيل والطاقم؟
المهارة على مستوى الوكيل لها الأولوية. يتم إزالة التكرار حسب الاسم — مهارات الوكيل تُعالج أولاً، لذا إذا ظهر نفس اسم المهارة في كلا المستويين، تُستخدم نسخة الوكيل.
ما الحجم الأقصى لمحتوى SKILL.md؟
هناك تحذير ناعم عند 50,000 حرف، لكن بدون حد صارم. حافظ على تركيز المهارات وإيجازها للحصول على أفضل النتائج — الحقن الكبيرة في الإرشادات قد تُشتت انتباه الوكيل.