00:00:00على الرغم من أن Claude Code يعد من أقوى الأدوات لتطوير الذكاء الاصطناعي،
00:00:03إلا أنه يخفق في مهام معينة، فلماذا يحدث ذلك؟ بين الميزات التي أطلقتها
00:00:08Anthropic مؤخرًا وسير العمل الذي بنيناه حولها، أصبحت الطريقة المفترضة
00:00:12لاستخدام هذه الأداة مختلفة تمامًا عما كانت عليه قبل أسابيع. فريقنا يستخدم Claude
00:00:16Code يوميًا، ليس للتطوير فحسب بل للبحث وإدارة خطوط الإنتاج
00:00:21وأتمتة المهام غير المتعلقة بالبرمجة. لذا، سأعرض لكم كل ما توصلنا إليه.
00:00:26أضافت Anthropic مؤخرًا أمر “الرؤى” (insights) لـ Claude Code، حيث يحلل
00:00:31جميع جلساتك السابقة خلال فترة زمنية محددة ويصدر تقريرًا عنها.
00:00:36يحلل التقرير أسلوبك، وينتقد أنماط عملك، ويوضح ما فعلته بشكل صحيح
00:00:40وما أخطأت فيه، ويرشدك للتحسن. ما ركزنا عليه هو تحديد
00:00:45مكامن الخلل لأنها المكان الذي نتعلم منه تطوير أنفسنا. سلط التقرير الضوء
00:00:49على النقاط التي واجهنا فيها أكبر قدر من الصعوبة واقترح ميزات لتحسين
00:00:54سير العمل. على سبيل المثال، نذكر جلسة ظل فيها العميل الأساسي يسحب
00:00:58قائمة المهام بشكل متكرر عند استخدام فرق العملاء. أدى ذلك لإطالة الجلسة
00:01:03واضطررنا لإنهائها بأنفسنا. ولمنع تكرار ذلك، يمكننا نسخ هذا التوجيه
00:01:07إلى ملف cloud.md لضمان عدم استمرار Claude في الاستقصاء بلا نهاية
00:01:12عند استخدام عدة عملاء. يمكننا استيراد هذه النصائح لمشاريعنا المستقبلية
00:01:17لتتحسن تجربتنا مع Claude Code بمرور الوقت. قضى فريقنا وقتًا طويلاً
00:01:22في العمل مع Claude Code، وأهم خطوة لا تزال تكمن في جودة السياق الذي تقدمه.
00:01:26قد تكون متطلبات المشروع مقسمة لأجزاء صغيرة أو وثائق للأطر
00:01:30والمكتبات المستخدمة؛ فعندما تمنحه السياق الصحيح، تنعدم الأخطاء تقريبًا
00:01:35لأنه يعرف تمامًا ما يجب تنفيذه. وبالنسبة لتوثيق المشروع، نفضل استخدام Claude
00:01:39لكتابته بدلاً من القيام بذلك يدويًا. قدمنا لـ Claude توجيهًا محددًا يتضمن
00:01:44كل المعلومات اللازمة لتقسيم فكرة المشروع إلى المستندات المطلوبة.
00:01:48طلبنا منه إنشاء أربعة مستندات يركز كل منها على جانب معين. أهمها هو الـ PRD
00:01:53الذي يحتوي على متطلبات المشروع ونطاقه. ثم ملف architecture.md
00:01:57الذي يضم تنسيق البيانات، وهيكل الملفات، وواجهات البرمجة، وكل التفاصيل المعمارية.
00:02:02يليه ملف decision.md الذي يسجل كافة القرارات التي اتخذها Claude أثناء المشروع
00:02:08ليكون مرجعًا مستقبليًا. وأخيرًا الأهم وهو feature.json الذي يحتوي على
00:02:12كافة الميزات بتنسيق JSON محدد. يضم تفاصيل كل ميزة بشكل موفر للرموز
00:02:17ومعايير اكتمالها، مع مفتاح للمتابعة لمعرفة ما تم تنفيذه وما لم يتم بعد.
00:02:22والآن بعد تقسيم المهمة الكبيرة لأقسام أصغر، نحتاج لتوفير وثائق الأدوات
00:02:27اللازمة للتنفيذ عبر بروتوكول سياق النموذج (MCP) الخاص بـ Context 7.
00:02:31إنه يمتلك توثيقًا لجميع المكتبات ويتم تحديثه باستمرار ليتمكن
00:02:36العملاء من سحب أحدث المستندات لسد الفجوة بين معرفة النموذج والتحديثات الحالية.
00:02:41إعداد MCP يتطلب خطوات بسيطة فحسب. وبمجرد تثبيته،
00:02:46استخدم الأدوات من Context 7 وجلب معلومات المكتبة مباشرة.
00:02:50هذا يتيح له استخدام أحدث التوثيقات، ويمنع أخطاء التوافق
00:02:55ويضمن دقة التنفيذ. ميزة أخرى غير مستغلة هي “الخطافات” (Hooks) في Claude Code،
00:03:00وهي أوامر برمجية تعمل في نقاط محددة من دورة العمل. هناك أنواع عديدة
00:03:05تعمل في أوقات معينة كبداية الجلسة، قبل استخدام أي أداة أو بعدها. لكن الأهم
00:03:11هو إعدادها بأكواد خروج محددة. تخبر هذه الأكواد Claude Code سواء كان عليه المتابعة،
00:03:16أو الحظر، أو تجاهل الإجراء. كود 0 يعني النجاح، بينما كود 2 يعني خطأ مانعًا.
00:03:22فعندما يحاول Claude فعل شيء غير مسموح، يصطدم بالكود 2، فتصله رسالة خطأ
00:03:27ليصحح مساره. أي كود آخر يعتبر غير مانع، يظهر في وضع التفاصيل وتستمر العمليات.
00:03:32كود الخروج 2 ضروري للتحكم في سلوك العميل. فإذا سبق لك العمل
00:03:37على تطوير قائم على الاختبار (TDD) مع Claude Code، ربما لاحظت
00:03:41ميله لتعديل الاختبارات إذا فشل في اجتيازها. ولمنع ذلك،
00:03:46قمنا بإعداد خطاف مخصص يعمل قبل استخدام الأداة ليحمي ملفات الاختبار
00:03:50من التعديل. فإذا كان المسار المستهدف هو مجلد اختبار أو يحتوي على كلمة test،
00:03:55تظهر رسالة تفيد بمنع تعديل مجلدات الاختبار مع إرجاع كود الخروج 2.
00:04:00بهذا الإجراء، عندما طلبنا من Claude تشغيل الاختبارات وفشلت،
00:04:05حاول تعديلها، لكن السكريبت منعه وظهرت رسالة “محظور من التعديل”.
00:04:10هذا منعه من تحرير ملفات لا ينبغي لمسها. إذا تعاملت مع الـ MCPs، ستعرف أنها
00:04:15تضخم نافذة السياق. ومع المشاريع الضخمة، يزداد عدد الـ MCPs المتصلة.
00:04:19فتنتهي كل تلك الأدوات في نافذة السياق وتستنزفها. ولحل هذه المشكلة
00:04:25تحديدًا، يوفر Claude Code وضع MCP CLI التجريبي. قمنا بتفعيل
00:04:31هذا الوضع، فاختفت جميع الـ MCPs التي كانت تظهر في السياق ولم تعد تستهلك مساحة.
00:04:36لكن السؤال كان: كيف نصل للأدوات وهي لم تعد موجودة في الذاكرة؟
00:04:41بدلاً من تحميل كافة مخططات الأدوات مسبقًا، يستخدم Claude Code أوامر
00:04:45المعلومات والاستدعاء الخاصة بـ CLI، ويشغل الـ MCPs المتصلة عبر bash.
00:04:52بعد تفعيل الخيار، عند إعطائه توجيهًا، وبدلاً من استدعاء أداة MCP مباشرة،
00:04:56استدعاها عبر CLI وشغلها كأوامر bash. بهذه الطريقة، يحمل الأداة المطلوبة
00:05:03عند الحاجة فقط، مما يمنع تضخم السياق. وإذا كنت تستمتع بمحتوانا،
00:05:08لا تنسَ الضغط على زر الإعجاب، فهذا يساعدنا في الوصول للمزيد من الناس.
00:05:13في فيديوهاتنا السابقة، شددنا على استخدام git لتتبع عمل العملاء في نظام
00:05:18التحكم بالإصدارات، وللتمكن من التراجع إذا لم ينفذوا المهام بشكل صحيح.
00:05:23كما نشرنا فيديو حول استخدام git لتشغيل عميل في مهمة طويلة المدى.
00:05:28استخدمنا عملاء متوازيين للعمل على أشجار عمل (work trees) مختلفة لتطوير ميزات
00:05:32المشروع مع بقائهم معزولين عن بعضهم البعض.
00:05:37بهذه الطريقة، ندمج مخرجاتهم لاحقًا دون تداخل؛ لأن عمل العملاء على نفس
00:05:41الملفات يسبب تعارضات. الفروع (Branches) ليست الخيار المفضل هنا لأنها تعقد المهمة،
00:05:46حيث تشترك في نفس المجلد، بينما تنفرد أشجار العمل بمساراتها الخاصة.
00:05:50لذا قدمنا توجيهًا بميزات متعددة مع تحديد أن يعمل كل عميل على شجرة
00:05:55عمل منفصلة. استخدم عميلاً مستقلاً لكل شجرة ونفذوا الميزات بمعزل
00:05:59عن بعضهم، رغم تداخل وصف المهام في بعض النقاط.
00:06:03وبعد أن أنهى Claude التنفيذ بنجاح في فروع منفصلة، جعلناه يدمج
00:06:08المخرجات لنحصل على كافة الميزات في مجلد عمل واحد.
00:06:13أما “الوضع الصارم” (strict mode) فهو ضروري لنقل عبء فحص الأخطاء للعميل.
00:06:18يجب عليك تفعيل هذا الخيار في أي لغة تستخدمها لأنه يكتشف الثغرات
00:06:22أثناء البناء قبل أن تصل للمستخدمين. وبما أن لغتنا الأساسية هي TypeScript،
00:06:26نفعل الوضع الصارم دائمًا. هذا يفعل فحص القيم الفارغة والأنواع الضمنية،
00:06:31مما يعني أخطاءً أقل وقت التشغيل. هذا الأمر مهم لعملاء الذكاء الاصطناعي
00:06:36لأنهم يفتقرون لطريقة مدمجة لاكتشاف أخطاء التشغيل. يقلل الوضع الصارم
00:06:41من فرص فشل البرنامج ويجعل المترجم يتولى هذه المشكلات، حيث يمكن للعملاء
00:06:46الاعتماد على سجلات الأخطاء لتطبيق الإصلاحات. وإلى جانب الاختبار بالسكريبتات،
00:06:51هناك طبقة إضافية تستحق الإضافة، وهي كتابة “قصص المستخدم” (user stories)
00:06:56التي تصف تفاعل المستخدم مع النظام لتوجيه عملية الاختبار بعد بناء التطبيق.
00:07:00نحدد هذه القصص قبل البدء بالتنفيذ لتكون معيارًا يجب اتباعه.
00:07:05وباستخدام توجيه معين، كتب Claude عدة قصص داخل مجلد يضم كافة طرق
00:07:10تفاعل المستخدم مع النظام. تبرز كل قصة جانبًا معينًا من التطبيق،
00:07:15وأولويته، ومعايير القبول ليقوم العميل بالاختبار بناءً عليها.
00:07:21غطت القصص كافة سيناريوهات الاختبار الممكنة والحالات الحرجة. وهي تخبر
00:07:26العملاء بكيفية التفاعل مع النظام الذي بنيناه للتو. ومع التوجيهات
00:07:31الصحيحة، يمكن لأي عميل تطبيق نفس المبادئ وتلبية توقعات المستخدم بشكل أفضل.
00:07:35بعد توثيق القصص، طلبنا من Claude تنفيذها واحدة تلو الأخرى مع البدء
00:07:40بالمسار الأمثل المذكور في كل قصة، مع التأكد من تغطية كافة الحالات الاستثنائية.
00:07:45بهذه الطريقة، أصبح التنفيذ أكثر اكتمالاً وأعلى جودة للمستخدم. كل هذه
00:07:50النصائح متاحة كقوالب جاهزة للاستخدام في AI Labs Pro.
00:07:55لمن لا يعرفه، هو مجتمعنا الذي أطلقناه مؤخرًا حيث تحصل على قوالب
00:08:00وتوجيهات وأوامر ومهارات يمكنك دمجها مباشرة في مشاريعك.
00:08:05إذا وجدت قيمة فيما نقدمه وترغب في دعم القناة، فهذه هي الطريقة الأفضل.
00:08:10الروابط في الوصف. نحتاج لاستغلال “التوازي” (parallelization) قدر الإمكان
00:08:14لأن هذا ما يسرع سير العمل وينفذ المهام المستقلة عن بعضها.
00:08:20نعلم أن Claude يكتشف تلقائيًا ما إذا كانت المهمة قابلة للتوازي أم لا،
00:08:25لكن لا ضرر من إنشاء العملاء بأنفسنا. لقد غطينا هذه القدرات في فيديو
00:08:29سابق حول كيفية تسريع سير عملك، لكن هذه السرعة تأتي على حساب
00:08:34زيادة استهلاك الرموز. ومع ذلك، فإن مجهود التوازي يستحق العناء.
00:08:39في وقت ما، كنا نعمل على بحث حول تأثير تحسينات Opus 4.6 باستخدامه،
00:08:43وظل يهلوس بالحقائق رغم تزويده بالمصادر، مما اضطرنا لتصحيح معلوماته
00:08:49مرارًا وتكرارًا. شعرنا أن البحث بلا جدوى إذا كان علينا إصلاح كل شيء بأنفسنا.
00:08:54ولمنع ذلك، استخدمنا عملاء متوازيين. أعددنا مهمة بحثية للمقارنة بين
00:08:58قدرات أسراب العملاء في KimiK 2.5 و Claude.
00:09:03استخدمنا عميلين؛ أحدهما للبحث والآخر لتدقيق حقائق العميل الأول.
00:09:09الفكرة الجوهرية كانت في تواصل العميلين لضمان دقة النتائج دون تدخل منا.
00:09:14في هذا الإعداد، يقوم عميل بالمهمة بينما يحللها الآخر نقديًا، في أسلوب
00:09:19عمل تنافسي. بدأ باحثنا أولاً، وظل المدقق متوقفًا حتى صدرت المسودة الأولى.
00:09:24وبمجرد صدورها، بدأ المدقق في التحقق، واكتشف فورًا العديد من الأخطاء
00:09:28التي لم نعد مضطرين لاكتشافها يدويًا. استمر التواصل بينهما وبقي الفحص دقيقًا
00:09:33بوجود عميل مخصص لتصحيح معلومات الآخر. هناك مهام كثيرة تناسب
00:09:38هذا الإعداد التنافسي، كأعمال التطوير حيث ينفذ عميل الميزة ويقوم الآخر
00:09:43بمراجعة التنفيذ مقابل الخطة. وبحسب منشئ Claude Code،
00:09:47يعمل العميل بشكل أفضل إذا امتلك وسيلة للتحقق من عمله.
00:09:52الفكرة هنا هي منح العميل “عينين”، أي القدرة على التأكد من صحة الميزة
00:09:57وتلبيتها للتوقعات. وبما أن هذه الأدوات تعتمد على واجهة سطر الأوامر،
00:10:02فلا يمكنها رصد مشكلات وقت التشغيل في جانب العميل (Client-side).
00:10:07لذا نستخدم طرقًا متعددة للتحقق، أولها إضافة Claude لمتصفح Chrome التي توفر
00:10:12أدوات متخصصة كفحص الـ DOM وسجلات المتصفح. والأداة الأخرى هي
00:10:17Puppeteer MCP، وهي مفيدة لأنها تعمل في متصفح منفصل لا يحتوي على
00:10:21جلساتك الحالية، مما يمنحك طبقة إضافية من الخصوصية.
00:10:26لكن خيارنا المفضل هو متصفح العميل من Vercel، وهو ليس MCP بل أداة
00:10:31CLI تمنح العملاء قدرات اختبار المتصفح، كالتنقل والتقاط الصور وغير ذلك.
00:10:36وبخلاف الأدوات الأخرى، هو لا يعتمد على الصور فقط في التنقل، بل يستخدم
00:10:41شجرة الوصول حيث يمتلك كل عنصر مرجعًا فريدًا. هذا يقلص حجم الـ DOM
00:10:46من آلاف الرموز إلى نحو 200 أو 400 رمز، مما يجعله أكثر كفاءة في استهلاك السياق.
00:10:51كانت هذه المشكلة الأساسية في إضافة كروم وحلها متصفح العميل،
00:10:56فهي تحمل الـ DOM كاملاً وتستنزف السياق سريعًا. كما أضفنا تعليمات في
00:11:01ملف Claude.md ليعتمد Claude على متصفح العميل كخيار أول للاختبار.
00:11:07ولكن هناك زاوية أخرى؛ الاختبار مهم دائمًا لكن توجد طريقة لتقليل الأخطاء
00:11:12لا تتطلب اختبارات أو مراجعة أكواد. نحن نطلب من Claude توقع ما لم يحدث بعد.
00:11:17نطلب منه فحص التنفيذ وتحديد المجالات التي قد يفشل فيها التطبيق.
00:11:23هذا ينجح لأننا نمنحه فرصة لتوقع المشكلات عبر مطابقة الأنماط مع إخفاقات
00:11:28موجودة في تطبيقات أخرى، حتى لو لم نواجهها بأنفسنا في الاختبارات.
00:11:33هذا يدفعه للنظر في الكود من زاوية مختلفة تمامًا. وعندما طلبنا منه ذلك،
00:11:38حدد ثغرات حرجة لم تكتشفها عمليات الاختبار المتعددة لدينا، ووجد 18
00:11:43مشكلة كان من الممكن أن تكون ضارة في مرحلة الإنتاج. لم ترصدها اختباراتنا،
00:11:47وتم التعرف عليها فقط عندما دفعنا Claude للنظر للمشروع من منظور آخر.
00:11:52بهذا نصل لنهاية هذا الفيديو. إذا كنت ترغب في دعم القناة ومساعدتنا في
00:11:57الاستمرار، يمكنك القيام بذلك عبر زر “شكراً” (Super Thanks) أدناه.
00:12:01كما هو الحال دائمًا، شكرًا للمشاهدة وأراكم في الفيديو القادم.
00:12:06project from another angle. That brings us to the end of this video. If you'd like to support the
00:12:10channel and help us keep making videos like this you can do so by using the super thanks button
00:12:15below. As always thank you for watching and I'll see you in the next one.