00:00:00عند العمل مع Cloud Code أو Codex أو أي أداة هندسية تعتمد على الوكلاء، هناك مفهوم
00:00:05واحد مهم جداً تدعمه كل هذه الأدوات، ويجب عليك فهمه واستخدامه، وهو مفهوم
00:00:12"مهارات الوكيل". ومن السهل تجاهلها لأنها مجرد مجموعة من ملفات markdown أو لأن
00:00:18إعدادها قد يكون مرهقاً، لكنها تستحق العناء بناءً على خبرتي. وقبل بضعة أيام، كان هناك
00:00:24منشور لأحد أعضاء فريق Cloud Code، أي شخص من شركة Anthropic، حيث شارك
00:00:31أنواع المهارات المختلفة التي يستخدمونها داخلياً، لأنه يمكنك بالفعل التفريق بين
00:00:37أنواع مختلفة من المهارات التي تريد إنشاءها. في النهاية هي مجرد ملفات markdown،
00:00:42رغم أنه يمكنك إضافة المزيد وسأعود لذلك، ولكن بالتأكيد محتوى ملف markdown يمكن أن
00:00:49يكون مختلفاً تماماً. الآن، هذه الصورة هنا وهذا المنشور بالكامل قد يبدو مربكاً جداً وقد يؤدي
00:00:56إلى عدم القيام بأي شيء لأنك تشعر: "حسناً، إذا كان عليّ قضاء أسبوع في إعداد المهارات،
00:01:02فمن الأفضل ألا أستخدمها على الإطلاق"، ولهذا السبب أريد تقديم بديل لذلك في هذا الفيديو.
00:01:08أعتقد أنه يمكن ببساطة الحصول على ثلاثة أنواع أساسية من المهارات التي يجب أن تهتم بها
00:01:15والتي ستؤدي لنتائج أفضل. وبالمناسبة، كما ذكرت، كل هذه الأدوات تدعم المهارات، وأنا أغطي
00:01:20طريقة إعدادها وكيفية استدعائها وبناء مهارات لـ Cloud Code و Codex في كورساتي الخاصة،
00:01:26وإذا كنت ترغب في الحصول عليها أو الوصول لجميع دوراتي بما فيها المستقبلية، فأنا
00:01:31أقدم حالياً عرضاً للحصول على العضوية السنوية التي تمنحك وصولاً كاملاً لكل المحتوى
00:01:35بسعر منخفض جداً، الرابط أدناه. ولكن فيما يخص هذه المهارات، فهي مجرد ملفات markdown
00:01:41يتم تخزينها في مكان خاص، ويعتمد المكان الدقيق على الأداة التي تستخدمها، ولكنها في النهاية
00:01:46موجودة كقوالب للأوامر (prompt templates) أو قطع إضافية من السياق يمكن حقنها
00:01:52في جلساتك الهندسية مع الوكلاء. والنوع الأول من المهارات هو
00:02:01مهارة التوثيق أو المعرفة كما أسميها. ماذا أعني بذلك؟
00:02:09أنا هنا في مشروع academy.com الخاص بموقعي الإلكتروني، وهناك لديّ مجموعة من
00:02:15مهارات الوكيل التي هي في الحقيقة مجرد أنواع من التوثيق أو المعرفة التي أعرضها للوكيل هنا.
00:02:25على سبيل المثال، بعض المعرفة بـ typescript، وبعض المعرفة بميزات
00:02:33typescript المتقدمة، ربما بعض الميزات الأحدث مثل كلمة satisfies التي لم تكن موجودة
00:02:40قبل 10 سنوات؛ أشياء أريد أن يكون الوكيل على دراية بها أو يتذكرها، لأنها قد لا تكون
00:02:50أول ما يلجأ إليه، فربما لم يرَ الكثير منها في بيانات تدريبه.
00:02:58لذا، هذا حقاً شيء يمكنك العثور عليه في توثيق typescript الرسمي. الفكرة
00:03:04هي أنه ما لم تخبر الوكيل صراحةً بذلك، فمن المرجح جداً ألا يذهب إلى ذلك
00:03:11التوثيق الرسمي، لذا أفضل امتلاك مهاراتي الخاصة، وهذه المهارة هنا
00:03:17تحتوي على بيانات وصفية (metadata). البيانات الوصفية مهمة لأن الفكرة وراء المهارات هي
00:03:24أنه لا يتم تحميل جميع المهارات المتاحة في نافذة السياق كل مرة، بل يتم فقط تحميل
00:03:30البيانات الوصفية، وبعد ذلك يمكن للوكيل أن يقرر أي مهارة يريد قراءتها بشكل أعمق
00:03:37بناءً على طلبك والمهام التي أسندتها إليه. يمكنك أيضاً استدعاء المهارات يدوياً
00:03:43حسب الأداة المستخدمة، لكن الفكرة الأساسية هي أن الوكيل يحملها من تلقاء نفسه
00:03:47بناءً على تلك البيانات الوصفية. لذا لدي هنا بيانات وصفية أحاول من خلالها إعطاء الوكيل
00:03:55فكرة عن موعد استخدام هذه المهارة، وبالتالي هذا هو النوع الأول: توفير توثيق إضافي
00:04:02أو معرفة قد لا يملكها الوكيل، لأنك ربما تعمل مع مكتبة
00:04:08لم تكن موجودة في بيانات التدريب لأنها جديدة تماماً، أو حيث تعرف أنه ربما لم يرَ الكثير
00:04:13عنها وتريده أن يكون مدركاً لها؛ هذا هو النوع الأول من المهارات.
00:04:18النوع الثاني هو مهارات السلوكيات، وأفضل الممارسات، والمنهجيات؛ والفكرة هنا
00:04:29هي أنه بالطبع عندما تعمل على مشروع، قد يكون لديك تفضيلات معينة فيما يخص
00:04:37أسلوب الكود أو كيفية إنجاز بعض الأمور. فمثلاً، لدي مهارة "كود ريأكت نظيف وحديث"
00:04:45وهي لا تتعلق بتوثيق ميزات ريأكت بقدر ما تتعلق
00:04:50بوضع قواعد يجب على الوكيل اتباعها عند كتابة الكود لضمان أن
00:04:59الأنماط السيئة (anti-patterns) تصبح أقل شيوعاً، لأن وكلاء الذكاء الاصطناعي حالياً
00:05:08يميلون لإنتاج كود ليس دائماً بأعلى جودة، ويمكنك الجدال حول ما إذا كنت تهتم
00:05:13بجودة الكود أصلاً. لقد أنشأت فيديو منفصلاً في قناة أخرى حول ذلك، ولكني أقول
00:05:18إنها تهم لأن جودة الكود مهمة لمراجعته. كما يمكن أن يكون لها تأثيرات
00:05:23على الأداء، وعلى مدى سهولة صيانة الكود أو توسيعه؛ لذا أقول إنها مهمة،
00:05:29وإذا كان لديك سلوكيات أو أنماط معينة تريد من الوكيل استخدامها، فإن
00:05:36مهارة سلوكية كهذه تخبره فيها بكيفية كتابة كود ريأكت جيد وأنه يجب تجنب
00:05:43استخدام useEffect وكيفية تجنبه، يمكن أن تكون مثيرة للاهتمام. لذا الأمر هنا لا يتعلق
00:05:50بتوفير توثيق إضافي، بل بإعطاء تعليمات حول السلوك. والشيء المثير
00:05:55في هذه المهارة هو أن لدي هنا بعض الملفات المرتبطة، ملف به المزيد من التفاصيل
00:06:02حول useEffect، لأن كل ملفات المهارات هذه يتم تحميلها تدريجياً (lazily) كما قلت،
00:06:09ويمكنك في ملف مهارة الإشارة لملف آخر مثل ملف use-effect.md في مجلد المراجع هنا،
00:06:15وعندها يمكن للذكاء الاصطناعي أن يقرر تحميل ذلك الملف فقط عندما يعرف أنه يعمل مع
00:06:21useEffect، وبذلك يكون لدي هنا تفاصيل أكثر حول الأنماط التي يجب
00:06:27أن يحذر منها. وإعداد هذا النوع من المهارات يستحق العناء أيضاً
00:06:33لأني بالطبع أستطيع نسخ ذلك لأي مشروع ريأكت دون الحاجة لإعادة كتابته كل مرة،
00:06:39مما يؤدي لكود أفضل. هذا هو النوع الثاني الذي أنصح به، وليس عليك
00:06:45التفكير في كل الأنماط التي قد ترغب في وصفها، بل تحرك خطوة بخطوة؛
00:06:52إذا رأيت أن الوكيل في مشروعك يقوم باستمرار بشيء لا تريده،
00:06:58أضف مهارة وصغ وصفاً جيداً يزيد من فرصة تحميل المهارة
00:07:04في الوقت المناسب، ثم ضع تعليماتك في تلك المهارة؛ استخدمها لإصلاح المشاكل ومع الوقت
00:07:11ستبني مكتبة مهارات تتضمن أفضل الممارسات والسلوكيات الخاصة بك التي تريد فرضها،
00:07:17ويمكنك استخدامها في مشاريع مستقبلية. فلا تنظر للأمر كمهمة ضخمة ومخيفة في البداية،
00:07:22بل ابنِ قاعدة المهارات تلك خطوة بخطوة. الآن، النوع الثالث،
00:07:29وهو نوع مختلف تماماً، هو المهارات المدفوعة بالوظائف (functionality driven skills). تحدثنا حتى الآن عن
00:07:37التوثيق وفرض سلوكيات معينة. لكن هذه الأدوات الهندسية مثل Cloud Code و Codex
00:07:43يمكنها القيام بأشياء كثيرة؛ يمكنها كتابة الكود طبعاً، ولكنك لست مقيداً بكتابة
00:07:49الكود في المشاريع، فبما أنها تكتب كوداً، يمكنها فعل أي شيء على جهازك؛
00:07:55يمكنك استخدامها لتحليل مستندات PDF مثلاً، أو لدي بعض المهارات العامة على نظامي
00:08:03وهي ليست محصورة بالبرمجة فقط؛ يمكنك إعداد مهارة تخبر
00:08:09الوكيل بكيفية توليد صورة. ماذا أعني بذلك؟ حسناً، هناك بالطبع
00:08:16خدمات وواجهات برمجية (APIs) متنوعة يمكنك استخدامها لتوليد صور أو فيديو بالذكاء الاصطناعي مثل Fal AI،
00:08:24وهذا ليس فيديو ممولاً بالمناسبة، وهناك أيضاً Replicate وغيرها من الخدمات. وبالطبع
00:08:29إذا أردت توليد صورة لمشروع ما، كصورة تجريبية لموقعك أو
00:08:34لشيء مختلف تماماً تريد طباعته وتعليقه، يمكنك استخدام هذه
00:08:41الخدمات، ويمكنك استخدام Codex أو Cloud Code أو وكيل pi الذي أحبه كثيراً، وتطلب منه
00:08:49توليد صورة لك. افتراضياً، سيفشل على الأرجح لأن هذه الأدوات الهندسية
00:08:54لا تملك قدرات توليد الصور مدمجة فيها، ولكن إذا أعطيتها المهارة الصحيحة (وهي لا تزال
00:09:00مجرد ملف markdown)، يمكنك وصف كيفية التفاعل مع واجهة برمجية خارجية
00:09:06لتوليد صورة. وصف هذا التفاعل هو وسيلة واحدة، ولكن يمكنك الذهاب
00:09:12لأبعد من ذلك؛ مهاراتك يمكن أن تأتي أيضاً مع سكربتات. ليست كلها بحاجة لها ولكن مهارة
00:09:18توليد الصور هنا تملك واحداً، وهو سكربت كتبه الذكاء الاصطناعي في الحقيقة (vibe coded)،
00:09:26ولدي هنا بعض السكربتات التي تتفاعل مع Fal API، وهي خدمة توليد الصور.
00:09:34لقد أخذت التوثيق الخاص بهم ووضعته في أمر للذكاء الاصطناعي وطلبت منه أن يكتب لي
00:09:40أداة تستخدم تلك الواجهة البرمجية لتوليد الصور، فكتب لي أداة CLI صغيرة،
00:09:49سكربت بسيط يتحدث لتلك الواجهة ويولد الصور مع بارامترات مختلفة
00:09:56وما إلى ذلك. ثم ملف skill.md يشرح فقط كيفية استخدام ذلك السكربت،
00:10:02حيث يشير إليه ويخبر الوكيل بكيفية تنفيذه والبارامترات التي يجب تمريرها، ثم
00:10:08لدي ملف .env يحتوي على مفتاح Fal الخاص بي، وعندما يتم استدعاء هذا السكربت عبر Bun
00:10:18وهو ما أخبر به الذكاء الاصطناعي في ملف المهارة، سيتم تحميل ملف .env تلقائياً؛ لذا لا
00:10:23أحتاج لمنح الوكيل وصولاً مباشراً للمفتاح، ولا أحتاج لأن أقول له: "من فضلك ولد صورة وهاك المفتاح"،
00:10:29بدلاً من ذلك أطلب فقط توليد صورة، وسيقوم بفضل هذا
00:10:34الوصف بتحميل المهارة عند الحاجة، ومن خلالها يتعلم أنه يحتاج فقط لتشغيل
00:10:39سكربت معين ولا يحتاج للقلق بشأن تفاصيل التنفيذ. وهذا نوع آخر من
00:10:45المهارات أراه مثيراً للاهتمام، وهو لا يتعلق بالبرمجة فقط، فيمكنك مثلاً امتلاك
00:10:52مهارة قائمة على سكربت لتنسيق الكود أو غير ذلك؛ وبشكل عام
00:10:57لأنه يمكنك استخدام هؤلاء الوكلاء لأكثر من مجرد كتابة الكود، فإن
00:11:02هذا بالتأكيد فئة مهارات يجب الانتباه لها. وبشكل عام، أقول لا تعقد
00:11:08الأمر ولكن لا تتجاهله أيضاً، بل ابنِ مكتبة مهاراتك خطوة بخطوة. ومن الجدير بالذكر
00:11:14أن هناك سجلات للمهارات مثل skills.sh حيث يمكنك تصفح مهارات بناها آخرون.
00:11:21ملاحظتان مهمتان: هذا قد يكون مفيداً جداً، ولكن ما لن أفعله هو أن أقول: "حسناً، أنا أبني
00:11:29مشروع ريأكت مع Tailwind و Better Auth ولا أعرف ماذا أيضاً، لذا سأبحث عن كل المهارات
00:11:35التي قد تكون مفيدة هناك وسأثبتها جميعاً في مشروعي". هذا قد يكون
00:11:40بنتيجة عكسية لأنك تحمل المزيد والمزيد من البيانات الوصفية في نافذة السياق،
00:11:47وبعض هذه المهارات قد لا تهم أصلاً؛ لذا يجب الحذر من ذلك، ولن أحاول دائماً
00:11:53إضافة كل المهارات الممكنة نظرياً، بل يجب أن تكون انتقائياً وتركز
00:11:57على الأشياء التي يخطئ فيها الذكاء الاصطناعي باستمرار أو حيث تعرف أن هناك حاجة
00:12:04لتوثيق إضافي؛ هذا أمر. والأمر الآخر بخصوص هذه السجلات هو أنك
00:12:09تستخدم مهارات كتبها أشخاص آخرون، وهذه المهارات كما تعلمنا هي مجرد أوامر (prompts).
00:12:16إذا كان هناك شيء خبيث في أحد هذه الأوامر فقد يمثل مشكلة، وقد يؤدي لهجوم حقن الأوامر (prompt injection)،
00:12:22ويجب أن تدرك ذلك. بعض السجلات مثل skills.sh، حسب علمي،
00:12:28تقوم بنوع من الفحص لتقليل خطر حقن الأوامر، لكنك لست آمناً بنسبة 100%،
00:12:36لذا يجب الانتباه لذلك؛ فكلما استخدمت مهارة كتبها شخص آخر،
00:12:40اقرأها؛ فهي موجودة لتطلع عليها وترى ما إذا كان هناك شيء
00:12:47خبيث بداخلها. هذه مجرد كلمة تحذير، ولكن بخلاف ذلك، استخدم المهارات ولا تشعر
00:12:54بأنك بحاجة لبناء نظام فائق التعقيد هنا، بل جربها وأبقِ هذه
00:13:00الأنواع الثلاثة الأساسية في ذهنك.