👨🎓 الطالب:
كلما قرأت عن المكونات الإضافية أجد كلمات كثيرة، مثل:
Plugin، Skill، MCP، Script، Hook...
وأشعر أنها كلها شيء واحد!
🤖 البوت:
هي تعمل معًا أحيانًا، لكنها ليست شيئًا واحدًا.
👨🎓 الطالب:
ممتاز. إذن من أين نبدأ؟
🤖 البوت:
تخيّل أنك تريد بناء مساعد ذكي للبحث العلمي.
أول سؤال:
أين ستجمع كل قدراته؟
👨🎓 الطالب:
ربما في الـPlugin؟
🤖 البوت:
بالضبط.
Plugin أو المكون الإضافي هو الحزمة الكاملة.
يمكن أن تجمع داخله طريقة العمل، والأدوات، والاتصالات الخارجية، والملفات المساندة، وبعض آليات التشغيل.
👨🎓 الطالب:
إذن Plugin مثل المبنى؟
🤖 **البوت:**
تشبيه جيد.
لكنه لا يخبرنا بما يوجد داخل المبنى.
👨🎓 **الطالب:**
إذن ماذا يوجد داخله؟
🤖 **البوت:**
لنكتشف ذلك خطوة خطوة.
تخيّل أننا نريد إنشاء مكوّن إضافي يساعد الطالب في إعداد بحثه.
أول شيء نحتاج إليه هو أن نخبر المساعد:
ماذا يفعل عندما يطلب منه الطالب مهمة معينة؟
👨🎓 **الطالب:**
يعني نعطيه تعليمات؟
🤖 **البوت:**
بالضبط.
وهنا تأتي **Skill**.
هي التي تقول للمساعد:
عندما يطلب الطالب هذه المهمة، ابدأ من هنا،
ثم افعل كذا، ثم انتقل إلى الخطوة التالية،
وفي النهاية أعطِه النتيجة بهذا الشكل.
👨🎓 **الطالب:**
يعني Skill هي طريقة العمل؟
🤖 **البوت:**
نعم.
يمكنك أن تتذكرها هكذا:
**Skill أو المهارة هي = كيف أنفذ المهمة؟**
👨🎓 **الطالب:**
مثلاً لو طلبت منه مراجعة بحث؟
🤖 **البوت:**
يمكن أن تقول Skill:
اقرأ البحث،
حدّد المشكلة،
راجع المنهج،
افحص النتائج،
ثم أعطِ الطالب ملاحظات مرتبة.
👨🎓 **الطالب:**
واضح.
لكن ماذا لو احتاج معلومات ليست موجودة داخله؟
🤖 **البوت:**
هنا نصل إلى **MCP**.
تخيّل أن الطالب قال:
أحضر لي بيانات من نظام الجامعة.
أو:
ابحث في قاعدة بيانات خارجية.
أو:
أرسل هذه المعلومات إلى منصة أخرى.
هنا لا تكفي التعليمات وحدها.
يحتاج المساعد إلى **باب يصل من خلاله إلى النظام الخارجي**.
هذا الباب يمكن أن يكون MCP.
👨🎓 **الطالب:**
إذن MCP يشبه الباب الخارجي؟
🤖 **البوت:**
تشبيه مناسب.
ومن خلال هذا الباب يستطيع المساعد استخدام أدوات أو بيانات خارجية، إذا كانت متاحة له ومصرحًا باستخدامها.
👨🎓 **الطالب:**
إذن الفرق أصبح:
Skill تقول له كيف يعمل.
وMCP يفتح له بابًا إلى أدوات أو بيانات يستدعيها من الخارج.
🤖 **البوت:**
صحيح.
👨🎓 **الطالب:**
طيب، أين يأتي Script؟
🤖 **البوت:**
لنفترض أن المساعد جلب ملفًا فيه ألف سجل.
والآن نريد:
حذف السجلات المكررة،
وترتيب البيانات،
وحساب بعض النتائج،
ثم إخراج ملف جديد.
👨🎓 **الطالب:**
هل يفعل ذلك بالـMCP؟
🤖 **البوت:**
ليس بالضرورة.
MCP قد يجلب الملف.
لكن معالجة الملف نفسها يمكن أن يقوم بها **Script**.
👨🎓 **الطالب:**
وما هو الـ Script ببساطة؟
🤖 **البوت:**
برنامج صغير ينفذ عملية محددة.
مثل:
نظّف هذا الملف.
احسب هذه القيم.
تحقق من هذه البيانات.
حوّل الملف من صيغة إلى أخرى.
👨🎓 **الطالب:**
يعني:
MCP يجلب البيانات.
وScript يعالجها؟
🤖 **البوت:**
نعم، يمكن أن يحدث ذلك.
لكن ليس شرطًا أن يعمل الاثنان معًا دائمًا.
المهم أن تفهم الوظيفة:
**MCP = الوصول إلى أدوات أو أنظمة خارجية.**
**Script = تنفيذ عملية برمجية محددة.**
👨🎓 **الطالب:**
بقي Hook.
هذه الكلمة ما زالت غامضة.
🤖 **البوت:**
دعنا نجعلها أسهل.
تخيّل أن لدينا Script ينفذ فحصًا.
السؤال الآن:
**متى نريد أن نشغّله؟**
👨🎓 **الطالب:**
مثلاً عند بدء العمل؟
🤖 **البوت:**
ممتاز.
هنا يأتي **Hook**.
هو الذي يقول:
عندما يحدث هذا الحدث،
شغّل هذا الأمر.
👨🎓 **الطالب:**
مثل ماذا؟
🤖 **البوت:**
مثلًا:
عند بدء جلسة معينة → نفّذ إجراءً.
أو عند الوصول إلى نقطة معينة في دورة التشغيل → شغّل أمرًا.
إذن Hook مرتبط بفكرة:
**متى يحدث التنفيذ؟**
👨🎓 **الطالب:**
دعني أرتبها.
Plugin هو المبنى كله.
Skill تقول للعامل داخل المبنى كيف يؤدي المهمة.
MCP هو الباب الذي يصل المبنى بخدمات أو أنظمة أخرى.
Script هو عامل ينفذ عملية دقيقة ومحددة.
وHook هو الجرس الذي يقول للعامل: ابدأ الآن.
🤖 **البوت:**
هذا تشبيه ممتاز.
👨🎓 **الطالب:**
إذن يمكن أن نختصرها هكذا:
**Plugin = أين تجتمع الأشياء؟**
**Skill = كيف نعمل؟**
**MCP = إلى مَن نستطيع الوصول؟**
**Script = ماذا ننفذ برمجيًا؟**
**Hook = متى نبدأ التنفيذ؟**
🤖 **البوت:**
بالضبط.
وهكذا لا تحتاج إلى حفظ الأسماء.
فقط اسأل خمسة أسئلة.
👨🎓 **الطالب:**
لكن هل يجب أن يحتوي كل Plugin على Skill وMCP وScript وHook؟
🤖 **البوت:**
لا.
وهذه نقطة مهمة جدًا.
قد يكون المكوّن بسيطًا ويحتاج فقط إلى Skill.
وقد يحتاج Skill مع MCP.
وقد تحتاج Skill إلى Script.
وقد تحتاج في بيئة تشغيل معينة إلى Hook.
الفكرة ليست أن تجمع كل التقنيات.
الفكرة أن تستخدم فقط ما تحتاج إليه.
👨🎓 **الطالب:**
يعني لا أقول:
أريد Plugin فيه MCP وScripts وHooks.
🤖 **البوت:**
الأفضل أن تقول أولًا:
**ما الذي أريد من المكوّن أن يفعله؟**
ثم نقرر ما يحتاج إليه.
👨🎓 **الطالب:**
مثلاً أريد مكوّنًا يراجع البحوث فقط.
🤖 **البوت:**
قد تكفيك Skill إذا كانت التعليمات والموارد الموجودة كافية.
👨🎓 **الطالب:**
وأريده أيضًا أن يجلب معلومات من نظام خارجي.
🤖 **البوت:**
هنا قد تحتاج MCP.
👨🎓 **الطالب:**
وأريد أن يعالج الملفات بحسابات ثابتة ودقيقة.
🤖 **البوت:**
هنا يمكن أن تحتاج Script.
👨🎓 **الطالب:**
وأريد تشغيل إجراء تلقائي عندما يحدث حدث معين في بيئة Codex.
🤖 **البوت:**
هنا قد تحتاج Hook.
👨🎓 **الطالب:**
أعتقد أنني فهمت الآن.
ليس المهم أن أعرف الاسم فقط.
المهم أن أعرف:
**ما المشكلة التي يحلها كل جزء؟**
🤖 **البوت:**
بالضبط.
وهذا هو المفتاح.
فكر دائمًا بهذه الصورة:
لدينا **مكوّن إضافي Plugin**.
داخله قد توجد **Skill** تقول كيف تعمل.
وقد يوجد **MCP** يفتح لك أدوات وبيانات خارجية.
وقد توجد **Scripts** تنفذ أعمالًا برمجية دقيقة.
وقد توجد **Hooks** تحدد متى يبدأ بعض التنفيذ.
👨🎓 **الطالب:**
إذن الصورة النهائية أصبحت:
**المكوّن يجمع.**
**المهارة توجّه.**
**MCP يربط.**
**Script ينفذ.**
**Hook يشغّل عند الحدث.**
🤖 **البوت:**
نعم.
وإذا فهمت هذه الجملة، فقد فهمت العلاقة الأساسية بينها كلها.