استخدمت Claude Code لأكثر من 2000 ساعة - إليكم كيف أبني أي شيء باستخدامه

CCole Medin
컴퓨터/소프트웨어자격증/평생교육AI/미래기술

Transcript

00:00:00أصبح تطبيق "كلاود كود" متاحاً بشكل عام في 22 مايو من العام الماضي، بالتزامن مع إطلاق "كلاود 4".
00:00:06ولكن كانت هناك نسخة تجريبية بحثية قبل ذلك، لذا فأنا أستخدم هذه الأداة
00:00:11منذ أكثر من عام بقليل، وفي الواقع قمت بحساب الأمر. إذا حسبت كل الوقت
00:00:15الذي استغرقته في توجيه الأوامر لـ "كلاود"، ومراجعة الكود، ومراقبته، فقد استخدمت الأداة لأكثر من 2000
00:00:21ساعة حتى الآن. لذا، نعم، لدي الكثير لأعلمكم إياه، وهذا ما أريد فعله في هذا الفيديو.
00:00:27والآن، أريد أن أشارككم جميع استراتيجياتي المجربة والموثوقة التي ستنقلكم
00:00:31من مستخدم عادي لـ "كلاود كود" إلى مستخدم محترف. لقد جمعت كل شيء معاً فيما
00:00:37أسميه إطار عمل "WISC". وإليكم الأمر، هذه الاستراتيجيات حقيقية وفَعّالة. أنا لست واحداً من صُنّاع
00:00:43محتوى الذكاء الاصطناعي الذين ركبوا موجة "كلاود كود" في الأشهر القليلة الماضية فقط. بل كنت
00:00:48أستخدم هذه الأداة، كما قلت، يومياً لأكثر من عام. ولذلك، ستعمل هذه الاستراتيجيات على
00:00:54أي قاعدة بيانات برمجية، حتى الضخمة منها، وحتى المشاريع التي تحتوي على قواعد برمجية متعددة. لقد رأيت كل هذا
00:01:00يُطبق على مستوى المؤسسات الكبرى، لذا مهما كان ما تعمل عليه، فهذا الفيديو لك. كما أنه
00:01:05يعمل حقاً مع أي مساعد برمجي بالذكاء الاصطناعي. أنا أركز فقط على "كلاود كود" لأنه الأفضل حالياً.
00:01:10لذا، أفترض هنا أن لديك على الأقل فهماً أساسياً لـ "كلاود كود"، وتريد الآن
00:01:15الارتقاء بالأمور إلى المستوى التالي. إذا كنت تريد أساسيات بناء نظام للبرمجة بالذكاء الاصطناعي،
00:01:21فلدي فيديو سأضع رابطه هنا. كل هذه الاستراتيجيات مخصصة عندما نريد
00:01:25العمل على قواعد برمجية حقيقية تصبح معقدة، لأن لدينا مجموعة من الاستراتيجيات هنا حول
00:01:32إدارة السياق. هذا أمر مهم لأن "تآكل السياق" هو أكبر مشكلة تواجه مساعدي البرمجة بالذكاء الاصطناعي
00:01:38في الوقت الحالي. لا يهم أن لدينا حد المليون رمز (token) الجديد في "كلاود كود"، فما زلنا
00:01:43بحاجة إلى التعامل مع سياقنا كأثمن مورد يجب هندسته بعناية فائقة
00:01:49مع مساعدي البرمجة بالذكاء الاصطناعي. لذا فإن حروف W و I و S و C في إطار العمل، تشير لاستراتيجيات
00:01:56تنطبق على ذلك، وهي جميعاً أشياء يمكنك أخذها وتطبيقها على مشاريعك فوراً.
00:02:00لذا سأقوم بتبسيط الأمر لكم هنا. الآن، السؤال الذي قد تطرحه
00:02:05على نفسك هو، يا كول، لماذا نركز كثيراً على إدارة السياق؟ بعد أكثر من 2000 ساعة من استخدام
00:02:11"كلاود كود"، هل هذا هو ما تريد التركيز عليه؟ وإجابتي هي نعم. أعلم أن هذا محدد جداً،
00:02:17لكننا بحاجة إلى التعمق الآن في تآكل السياق وكيفية تجنبه. بل سأذهب إلى حد القول
00:02:23إن حوالي 80% من المرات التي يخطئ فيها وكيل البرمجة في كودك، يكون السبب هو أنك
00:02:28لا تدير سياقك بشكل جيد بما يكفي. لذا أريد أن أبدأ بمشكلة تآكل السياق،
00:02:33ثم سننتقل سريعاً إلى الجانب العملي عبر الغوص في كل جزء من إطار عمل "WISC". لكنني أريد
00:02:38أن أبدأ بتآكل السياق كمقدمة حتى تتمكن حقاً من رؤية السبب. بمجرد تطبيق إطار عمل "WISC"،
00:02:45ستلاحظ فوراً قفزات في الموثوقية مع برمجتك بالذكاء الاصطناعي، حتى في
00:02:50القواعد البرمجية الأكثر فوضى. وأنا أواصل التأكيد على القواعد البرمجية الأكبر والأكثر تعقيداً لأن هذا هو المكان الذي نرى فيه
00:02:56تآكل السياق يصبح مشكلة متزايدة. الآن، كان هناك الكثير من الأبحاث في الصناعة حول
00:03:02تآكل السياق، لكن المفضل لدي، وهو الأكثر عملية وربما الأكثر شهرة أيضاً، هو تقرير
00:03:07شركة Chroma التقني الذي يغطي كيف تؤثر زيادة الرموز المدخلة على أداء النماذج اللغوية الكبيرة. والفكرة الرئيسية
00:03:13هنا هي أنه لمجرد أنك تستطيع حشر قدر معين من الرموز في نافذة سياق النموذج، فهذا لا يعني
00:03:18أنه يجب عليك فعل ذلك. نعم، هذا ينطبق على "كلاود كود" مع حد المليون رمز الجديد أيضاً.
00:03:24لأن النماذج اللغوية الكبيرة ترتبك من كثرة المعلومات تماماً مثل البشر. وهذا ما يسمى
00:03:30بمشكلة "البحث عن إبرة في كومة قش". فعندما يكون لديك معلومة محددة جداً أو في حالة
00:03:35وكلاء البرمجة، ملف معين قرأه الوكيل وتحتاج منه استرجاعه، فإنه سيقوم بعمل جيد في استرجاع
00:03:41تلك المعلومة من ذاكرته قصيرة المدى، ولكن فقط إذا لم يكن لديك نافذة سياق ممتلئة للغاية.
00:03:47عندما تبدأ في تحميل قدر هائل من السياق، تبدأ في الحصول على ما يسمى
00:03:52"المشتتات". وهي قطع من المعلومات قريبة أو مشابهة لما تحتاج من النموذج
00:03:58استرجاعه، لكنها ليست صحيحة تماماً. ونرى هذا كثيراً في البرمجة بالذكاء الاصطناعي، خاصة مع القواعد البرمجية
00:04:04الكبيرة. فنحن نتبع نفس الأنماط للأشياء عبر الكود الخاص بنا. ولدينا الكثير من
00:04:09التشابه في كيفية تنفيذ أجزاء مختلفة من كودنا. لذا ستقوم النماذج اللغوية الكبيرة
00:04:14بسحب معلومات خاطئة وتكون واثقة جداً بشأن إصلاحها أو تنفيذها. أنا متأكد من أنك
00:04:19رأيت هذا طوال الوقت. لدينا مشكلة "الإبرة في كومة القش" التي تظهر باستمرار
00:04:24في البرمجة بالذكاء الاصطناعي. هذه هي فكرة تآكل السياق. فكلما كبرت نافذتنا، زادت
00:04:30صعوبة استخراج النموذج اللغوي الكبير لما نحتاجه بالضبط للمرحلة الحالية مع وكيل البرمجة.
00:04:36لذا بالعودة إلى المخطط، دعوني أكون محدداً جداً معكم. ما نعالجه من خلال
00:04:42كل هذه الاستراتيجيات هو السؤال: كيف نحافظ على نافذة السياق الخاصة بنا رشيقة قدر الإمكان
00:04:48مع إعطاء وكيل البرمجة كل السياق الذي يحتاجه؟ هذه هي هندسة السياق
00:04:53التي نقوم بها هنا. لذا سأستعرض كل استراتيجية على حدة. ولدي حتى
00:04:57مثال لكل منها سأقوم بتنفيذه مباشرة معكم على قاعدة برمجية معقدة، وكل
00:05:02الأوامر والقواعد والمستندات التي أستخدمها كمثال، وضعتها في هذا المجلد الذي سأضع رابطه
00:05:06في الوصف. لذا يمكنك استخدام كل هذه الاستراتيجيات نظرياً، وكذلك مع هذه
00:05:12الأوامر كمثال موجود في مجلد ".claud" هنا. حسناً، لننتقل إلى
00:05:17الاستراتيجيات الفردية الآن. ترمز W لـ الكتابة (Write)، و I لـ العزل (Isolate)، و S لـ الاختيار (Select)، و C لـ الضغط (Compress).
00:05:24وبالطبع سنبدأ بحرف W، وهو الكتابة، أي تدوين ذاكرة وكيلنا خارجياً.
00:05:30بقدر الإمكان، نريد تسجيل القرارات الرئيسية وما كان الوكيل يعمل عليه
00:05:34حتى نتمكن في الجلسات القادمة من جعل وكيلنا يواكب الأحداث بشكل أسرع ونضطر لإنفاق
00:05:40رموز أقل في البداية لجعل الوكيل يفهم ما نحتاج منه فعلاً القيام به. والاستراتيجية الأولى
00:05:46هنا هي استخدام سجل "git log" كذاكرة طويلة المدى. وأنا أحب هذا جداً لأن هناك
00:05:52الكثير من الأشخاص الذين يحبون المبالغة في الهندسة وامتلاك أطر عمل ذاكرة معقدة للغاية لوكلاء
00:05:56البرمجة لديهم، ولكن في الحقيقة الجميع يستخدم بالفعل Git و GitHub للتحكم في الإصدارات. لذا يمكننا
00:06:01الاستفادة من أداة نستخدمها بالفعل لتوفير ذاكرة طويلة المدى لوكيلنا. لننتقل
00:06:07إلى قاعدة الأكواد الخاصة بنا وسأريكم ما أعنيه. الكود الذي سأستخدمه في كل
00:06:12الأمثلة هنا هو تطبيق "Archon" الجديد. لقد بذلت جهداً كبيراً في العمل عليه خلال الأشهر القليلة الماضية
00:06:18خلف الكواليس. هذا هو مركز قيادة الذكاء الاصطناعي الخاص بك حيث يمكنك إنشاء وإدارة وتنفيذ تدفقات
00:06:23عمل برمجية أطول للذكاء الاصطناعي. ونحن نعمل حتى على أداة بناء تدفق العمل؛ ستكون مثل
00:06:28أداة N8N لبرمجة الذكاء الاصطناعي. لذا يمكننا بدء تدفقات العمل، وعرض السجلات ومراقبتها في
00:06:33غرفة العمليات الخاصة بنا. يمكننا النظر في عمليات التشغيل السابقة لنرى بالضبط ما حدث. مثل هذا
00:06:39تدفق العمل الطويل جداً الذي أملكه للتحقق من طلبات السحب (pull requests) بالكامل في كودي. نعم، يمكنك القول
00:06:44من خلال النظر إلى هذا، وهناك الكثير قادم في "Archon" قريباً بالمناسبة، ولكن يمكنك القول
00:06:47من النظر إلى هذا أن هناك الكثير من الأجزاء المتحركة. هذه قاعدة أكواد معقدة جداً. لذا
00:06:51فهي مثال جيد لكل ما سأغطيه معكم هنا، كل الاستراتيجيات.
00:06:57وبالعودة إلى استخدام سجل "git" كذاكرة طويلة المدى، سأريكم مثالاً هنا
00:07:03لأمر من سطر واحد لكل رسائل الالتزام (commit) الأخيرة الخاصة بي. وما أريد توضيحه هنا هو أن لدينا
00:07:09طريقة قياسية جداً لإنشاء رسائل الالتزام هذه. لدينا عمليات الدمج الخاصة بنا، ولكن لدينا أيضاً كل عمليات
00:07:13تنفيذ الميزات والإصلاحات. لذا جعلت الأمور قياسية جداً لأنني بهذه الطريقة يمكنني الاعتماد
00:07:19على رسائل الالتزام لإخبار وكيل البرمجة بما عملت عليه مؤخراً، لأن ذلك في كثير من
00:07:24الأحيان سيوجهنا لما نريد العمل عليه تالياً. والسبب في جعل هذا
00:07:29قياسياً جداً هو وجود أمر التزام (commit command) أقوم بتشغيله. الآن، تشغيل "git commit" سهل جداً،
00:07:36ولكن إذا أردنا توحيد الرسالة وجعل وكيل البرمجة يساعدنا في ذلك،
00:07:40فإن وجود أمر محدد يكون قوياً جداً. لذا لدي هذا التنفيذ الكامل الذي قمت به هنا
00:07:46في نافذة سياق واحدة مع وكيل البرمجة. أنا في النهاية الآن وجاهز لتشغيل
00:07:51عملية الالتزام الخاصة بي. لذا إذا قمت فقط بكتابة "slash commit/"، فهذا كل ما علي فعله. إنه يشغل هذا الأمر الذي
00:07:55يحتوي على معايير التوثيق لأي عمل قمت به. وبعد ذلك أيضاً أي شيء فعلته لتحسين
00:08:01قواعدي أو أوامري. لذا فهو أمر من جزأين: إليك ما بنيناه، وإليك كيف قمنا بتحسين
00:08:06طبقة الذكاء الاصطناعي. وسيقوم بإجراء هذا الالتزام وسأريكم كيف سيبدو بعد ذلك.
00:08:10حسناً. بالنظر الآن إلى رسالة الالتزام الخاصة بنا، يمكننا أن نرى أننا أجرينا بعض التحسينات على الاختبارات
00:08:14في واجهة السطر البرمجي (CLI). بادئة جميلة جداً ثم الدخول في التفاصيل. وأيضاً، لكي
00:08:19يعرف وكيل البرمجة كيف تتطور قواعده وأوامره بمرور الوقت، فإننا ندرج ذلك في رسالة
00:08:23الالتزام كلما وجدنا فرصة للتحسين، لنقل في أمر التخطيط (plan command) مثلاً. وبالطبع
00:08:29فإن أمر الالتزام هذا هو أحد الموارد التي وفرتها لكم في المستودع. إذا كنتم ترغبون
00:08:33في استخدامه كنقطة انطلاق، لكنني أشجعكم أيضاً على تخصيص شكل رسائل
00:08:37الالتزام الخاصة بكم. الشيء المهم هنا هو توحيد الرسائل. نجعلها
00:08:41مفصلة للغاية حتى نتمكن من استخدامها كذاكرة طويلة المدى. حسناً، استراتيجية الكتابة الثانية هي
00:08:47البدء دائماً بنافذة سياق جديدة تماماً في كل مرة تكتب فيها أي كود. ومهما كان ما أعمل
00:08:53عليه، فإن سير عملي هو دائماً: لدي محادثة واحدة للتخطيط مع وكيل البرمجة، وسأقوم بإنشاء ملف
00:08:57"markdown" يحتوي على خطتي المنظمة. ثم أرسل ذلك كالسياق الوحيد لجلسة
00:09:03جديدة مخصصة للتنفيذ. ومن المهم جداً هنا أن تحتوي مواصفاتك (spec) على كل
00:09:08السياق الذي يحتاجه الوكيل لكتابة الكود وإجراء التحقق. على سبيل المثال، في هذه المحادثة،
00:09:14أنا أقوم بالتخطيط فقط. لذا أقوم بتشغيل أمر التهيئة (prime) للبدء، سأتحدث عن هذا بعد قليل.
00:09:18أقوم بتحميل السياق ثم أنشئ خطتي بهذا الأمر. وهو أمر آخر وفرته لكم
00:09:24كمورد. هذا الأمر يوضح لوكيل البرمجة الخطوات بدقة؛ إليك الهيكل الدقيق
00:09:28الذي نريد إنشاءه لمستند "markdown" واحد. أي الانتقال من ذاكرتنا قصيرة المدى
00:09:33إلى مستند واحد. ثم ننهي الجلسة هنا. نذهب إلى نافذة سياق جديدة تماماً
00:09:38ونبدأ في التنفيذ. لذا لدي أمر التنفيذ (execute). وهنا يمكنني
00:09:42تحديد المسار لخطتي المنظمة. لا يوجد سياق آخر لأن هذا الملف يجب أن يحتوي على كل ما
00:09:48يحتاجه. هذا مهم جداً لأنه يبقي وكيل البرمجة مركزاً للغاية على المهمة التي
00:09:53بين يديه. فقد يكون هناك الكثير من الأبحاث وأشياء أخرى تشوش نافذة السياق
00:09:57إذا قمنا بالتنفيذ في نفس مكان التخطيط. لذا، فإن آخر استراتيجية في W لتدوين
00:10:03ذاكرة الوكيل هي ملفات التقدم وسجلات القرارات. سترى هذا طوال الوقت مع أطر عمل
00:10:08برمجة الذكاء الاصطناعي الأكثر تطوراً حيث يكون لديك ملف مثل "handoff.md" أو "todo.md" للتواصل بين
00:10:13وكلاء فرعيين مختلفين أو فرق من الوكلاء، أو حتى بين جلسات الوكيل المختلفة. عندما
00:10:17تنفد مساحة السياق، ستحتاج في كثير من الأحيان إلى إنشاء هذا الملخص لما تم إنجازه للتو. حتى
00:10:22تتمكن من الانتقال إلى جلسة جديدة لأنك بدأت تلاحظ تآكل السياق مع ظهور
00:10:27تخيلات (hallucination) لدى الوكيل مع طول المحادثات. من الواضح أنه من الأفضل تجنب هذه المحادثات
00:10:33الطويلة، لكن أحياناً تضطر لإجرائها. مثلاً، شيء أفعله كثيراً في "Archon" هو
00:10:38جعله يستخدم واجهة المتصفح البرمجية لـ Vercel لإجراء اختبارات شاملة (end-to-end) داخل المتصفح.
00:10:44لذا أجعله يمر عبر الكثير من رحلات المستخدم المختلفة واختبار الحالات القصوى. وهذا يستهلك الكثير من
00:10:49السياق. يمكنك أن ترى في الأسفل هنا، قمت بتشغيل أمر السياق ونحن بالفعل عند 200 ألف رمز من
00:10:56أصل المليون رمز كحد أقصى. تمتلئ هذه المساحة بسرعة كبيرة. وبمجرد أن يصبح لديك بضع مئات الآلاف
00:11:01من الرموز في نافذة السياق، ستبدأ في رؤية تدهور أداء الوكيل. لذا
00:11:05يمكنني ببساطة تشغيل أمر "slash handoff/". سيقوم هذا الأمر بإنشاء ملخص يمكن تمريره الآن إلى
00:11:11جلسة أخرى ليتمكن الوكيل من مواصلة العمل. لكن الآن ليس لديه مئات الآلاف من
00:11:16الرموز من نداءات الأدوات وما شابه ذلك في نافذته. وأمر التسليم (handoff) هذا هو حقاً
00:11:21مجرد توضيح لعملية ما نريد وضعه بالضبط في هذا المستند. ليكون لدى الوكيل التالي
00:11:25ما يحتاجه. حسناً، بهذا نختم حرف W، وكل واحدة من هذه الاستراتيجيات مهمة جداً لأننا
00:11:31نسجل القرارات الرئيسية لجلسات الوكيل المستقبلية لكي تستوعبها بسرعة.
00:11:36وأعلم أنني أشرح بسرعة هنا. لذا أخبروني في التعليقات إذا كان هناك أي من هذه
00:11:40الاستراتيجيات التي تريدون مني تخصيص فيديو كامل لها، لأنني أستطيع فعل ذلك لكل منها بكل تأكيد.
00:11:45والآن نصل إلى حرف I الذي يرمز لـ العزل (Isolate) باستخدام الوكلاء الفرعيين. أحب استخدام الوكلاء الفرعيين لكل
00:11:52أعمال البحث، وأستخدمهم في كل جلسة تقريباً. الشيء المهم هنا هو الحفاظ
00:11:56على نظافة السياق الرئيسي الخاص بك. يمكننا استخدام وكلاء فرعيين لإجراء عشرات أو حتى مئات الآلاف من
00:12:03الرموز من الأبحاث عبر كودنا أو الويب. ثم إعطاء الملخص المطلوب فقط لنافذة
00:12:10سياق "كلاود كود" الرئيسية. فبدلاً من تحميل عشرات الآلاف من رموز الأبحاث في
00:12:16نافذة سياقنا الرئيسية، سيصبح الأمر الآن حوالي 500 رمز فقط. وبذلك لا نزال نحصل على المعلومات الأساسية
00:12:21التي نحتاجها، ولكن لدينا تحسن بنسبة 90.2% وفقاً لبعض أبحاث شركة Anthropic عند استخدام الوكلاء
00:12:28الفرعيين لتحميل السياق مسبقاً لأبحاثنا، بدلاً من جعل وكيلنا الرئيسي يتولى
00:12:33كل شيء. سأعطيكم مثالاً سريعاً على ذلك. يكون ذلك دائماً في بداية
00:12:38المحادثة أو قبل تلك الخطة المنظمة التي شرحتها سابقاً، عندما أكون في عملية التخطيط. هذا
00:12:43هو الوقت الذي أستخدم فيه الوكلاء الفرعيين بكثافة. شاهدوا هذا: أريد بناء أداة لتدفق العمل في "Archon".
00:12:50لذا أريدك أن تُشغل وكيلين فرعيين، أحدهما لإجراء بحث مكثف في الكود ليرى كيف
00:12:55سنبني أداة تدفق العمل وما يعنيه ذلك لـ "Archon"، ثم تشغيل وكيل فرعي آخر
00:13:01لإجراء بحث على الويب حول أفضل الممارسات لمجموعة التقنيات المستخدمة. مثلاً إذا أردت استخدام React، فأي مكتبة
00:13:06يجب أن نستخدم؟ وبشكل عام، كيف نبني أدوات تدفق العمل مثل Diffie أو N8N؟ أنا فقط
00:13:12أستخدم أداة تحويل النص إلى كلام هنا. أرسل الأمر. ها قد بدأنا. وهكذا، لا نحصل فقط على
00:13:16فائدة العزل، بل السرعة أيضاً لأنه سيستخدم هؤلاء الوكلاء الفرعيين بالتوازي،
00:13:21ويعود بملخص، ثم سيقوم وكيلي الرئيسي بتركيب كل ذلك وإعطائي النتيجة النهائية.
00:13:26ها هما، كلا الوكيلين الفرعيين يعملان بالتوازي خلف الكواليس. يمكننا الذهاب والاطلاع
00:13:31على السجلات لكل منهما أيضاً. وسيعودان في النهاية بمجرد انتهائهما من
00:13:36التقرير النهائي. حسناً، لقد انتهى الوكلاء الفرعيون. وبدلاً من استخدام مئات الآلاف من الرموز
00:13:41في نافذة سياقنا الرئيسية، وهو حجم العمل الذي قام به الوكلاء الفرعيون في بحثهم،
00:13:46استخدمنا فقط 44 ألف رمز، أي 4% فقط من نافذتنا حتى الآن. هذه هي قوة الوكلاء الفرعيين. لا
00:13:53أنصح بهم لعمليات التنفيذ لأنك عادة ما تريد كل السياق لما فعلته. ولكن بالنسبة
00:13:57للأبحاث، فالأمر قوي جداً. لذا، نعم، العزل والوكلاء الفرعيون مهمون جداً لعملية
00:14:04التخطيط الخاصة بك. الطريقة الأخرى التي يمكننا بها استخدام الوكلاء الفرعيين هي ما أحب تسميته بنمط "المستكشف" (scout pattern).
00:14:09نريد إرسال مستكشفين للمقدمة قبل أن تستهلك سياقك الرئيسي. قد تكون هناك أجزاء من كودك
00:14:14أو توثيقك تريد أن يستكشفها الوكلاء الفرعيون ليروا ما إذا كان من المناسب تحميلها في
00:14:21جلسة "كلاود كود" الرئيسية. فيمكنه اتخاذ القرار مسبقاً؛ مثل: نعم، يجب
00:14:25أن نجلب هذا لتخطيطنا الأكبر، أو لا، يجب أن نتجاهله، فهو ليس ذا صلة. على سبيل المثال،
00:14:30مع "Archon"، لدي بضعة مستندات "markdown" عبارة عن غوص عميق في أجزاء معينة من الكود،
00:14:36وهي ليست نوع السياق الذي نريده في قواعدنا لأننا لا نحتاجه طوال الوقت. ولكن أحياناً
00:14:41قد ترغب في تحميل هذا، ويمكنك تخيل أن يكون هذا شيئاً في Confluence أو Google Drive،
00:14:45أو أي مكان تخزن فيه سياقك. وبالعودة إلى هذه المحادثة الرئيسية،
00:14:48يمكنني ببساطة قول: شَغّل وكيلاً فرعياً للبحث في كل شيء في مجلد ".claud/docs". هل هناك
00:14:54أي أجزاء من التوثيق هنا نهتم بتحميلها في سياقنا الرئيسي للتخطيط؟
00:14:59ويمكنني إرسال هذا، وسيتخذ القرار ثم يحمل ما يهمني. في هذه اللحظة،
00:15:04بدأنا وكيل استكشاف فرعياً. وجد كل توثيقاتنا، وأوصى بتحميل أحدها.
00:15:09فقلت له: نعم، تفضل وحمله. هذا مهم حقاً لما نخطط له هنا.
00:15:13لذا بدلاً من مجرد استخدام الوكلاء الفرعيين للبحث، أحياناً يكون لدينا قطع كاملة من التوثيق
00:15:18نعتقد أنها حاسمة لنافذة سياقنا الرئيسية. عندها نريد استخدام نمط
00:15:23الاستكشاف. هذا كل شيء بالنسبة للعزل. تذكر استخدام الوكلاء الفرعيين لأبحاثك
00:15:28وتخطيطك بشكل مكثف. والآن ننتقل إلى حرف S وهو الاختيار (Select). قُم بتحميل سياقك "عند الحاجة"،
00:15:34وليس "تحسباً للحاجة". وما أعنيه بذلك هو أنك إذا لم تكن واثقاً بنسبة 100% من أن معلومة ما
00:15:40مهمة لوكيل البرمجة الخاص بك الآن، فلا داعي لتحميلها. ولدينا
00:15:46نهج ذو طبقات للمساعدة في ذلك. ونبدأ بقواعدنا العالمية (global rules). وهي
00:15:51القيود والاتفاقيات التي نريد أن يكون وكيل البرمجة على دراية بها دائماً. لذا يجب أن يكون هذا
00:15:57الملف موجزاً جداً، يتراوح طوله عادة بين 500 و 700 سطر، وهذا ما أتبعه. الكثير من الناس
00:16:02ينصحون بأقل من ذلك، ولكن لديك أشياء مثل معماريتك، والأوامر التي يجب تشغيلها، وأشياء
00:16:08مثل استراتيجية الاختبار والتسجيل. هذا هو مثالي من "Archon"، ولكن هذه هي الأشياء التي
00:16:12تريد أن يكون وكيل البرمجة على دراية بها طوال الوقت. ثم لدينا الطبقة الثانية. أو
00:16:18السياق عند الطلب، كما أسميه، وهي القواعد التي تنطبق فقط على أجزاء معينة من الكود.
00:16:23مثلاً إذا كنا نعمل على الواجهة الأمامية (front end)، وهذا لا يحدث دائماً، ولكن إذا كنا نفعل، فإليك
00:16:28القواعد العالمية للواجهة الأمامية، أو إليك القواعد العالمية لبناء نقاط نهاية واجهة البرمجة (API). لذا نضيف هذا
00:16:33إلى قواعدنا العالمية لأنواع مهام محددة، لأننا لن نعمل دائماً على
00:16:38الواجهة الأمامية مثلاً. ولأريكم مثالاً على ذلك، لدينا مرجع YAML لتدفق العمل الذي
00:16:43سحبته قبل قليل باستخدام وكيل الاستكشاف الفرعي. فعندما نعمل على تدفقات العمل،
00:16:48فإننا نهتم بهذا، لكننا لا نريد هذا في قواعدنا العالمية لأننا في معظم الوقت
00:16:52عندما نعمل على "Archon"، لا نكون بصدد العمل على هذا الجزء المحدد من الكود. لذا
00:16:57فهو سياق عند الطلب. ثم الطبقة الثالثة التي لدينا هنا هي المهارات (skills). وهذا شائع جداً
00:17:05مع "كلاود كود" وما هو أبعد منه حالياً. لدينا مراحل مختلفة هنا حيث سيستكشف
00:17:10الوكيل التعليمات والقدرات في المهارة عندما يقرر أنه يحتاجها بالفعل. لذا
00:17:15نبدأ بالوصف. هذا قدر صغير جداً من الرموز يتم تحميله مسبقاً مع قواعدنا
00:17:20العالمية. إذا قرر الوكيل أنه يريد استخدام هذه المهارة، فسيقوم بتحميل ملف "skill.md" الكامل،
00:17:25والذي يمكن أن يشير أيضاً إلى نصوص برمجية أخرى أو مستندات مرجعية قد نرغب في تحميلها إذا كنا نغوص
00:17:29بشكل أعمق في هذه المهارة. وكمثال على ذلك، لدي مهارة متصفح الوكيل (agent browser skill). هذا
00:17:35ما أستخدمه لأتمتة المتصفح في كل اختباراتي الشاملة التي كنت أعرضها سابقاً. أنا أستخدم
00:17:40هذا كل يوم. لذا عندما أقوم باختباراتي الشاملة، أريد تحميل هذه
00:17:46المجموعة من التعليمات ليفهم الوكيل كيفية استخدام متصفح الوكيل. وأخيراً للطبقة
00:17:52الرابعة هنا، لدي أوامر التهيئة (prime commands). فكل شيء آخر غطيته هنا هو توثيق ثابت
00:17:57سنقوم بتحديثه بين الحين والآخر. ولكن أحياناً نحتاج من وكيلنا القيام باستكشاف
00:18:02لكودنا الحالي المباشر. نحتاج للتأكد من أن جميع معلوماته محدثة تماماً
00:18:07ونحن مستعدون لإنفاق بعض الرموز مع الوكلاء الفرعيين مسبقاً لتحقيق ذلك. وهذا
00:18:11ما يفعله أمر التهيئة؛ فنحن نستكشف قاعدة أكوادنا في بداية عملية التخطيط
00:18:16لكي يفهم كودنا قبل البدء في بناء ما نريده لاحقاً. وكما ترون في
00:18:22مجلد الأوامر لدي، يوجد العديد من أوامر التهيئة المختلفة لأن هناك أجزاء مختلفة من الكود
00:18:27أريد أن يفهمها الوكيل بناءً على ما أريد بناءه. وأمر التهيئة العام لدي هو
00:18:32هذا الذي ننظر إليه الآن. أنا فقط أطلب منه أخذ فكرة عن كود "Archon"
00:18:36بشكل عام. وإليك ما أريده أن يقرأه خطوة بخطوة، بما في ذلك سجل Git
00:18:41لأن ذلك مهم لاستخدام سجلنا كذاكرة طويلة المدى. ولدي أيضاً واحد متخصص
00:18:47باسم "prime workflows" عندما أعلم أنني أعمل على محرك تدفق العمل في "Archon". لذا فهو أمر
00:18:53مشابه جداً ولكنه أكثر تخصصاً. فأنا أستخدم هذا في بداية المحادثة لكي يتمكن وكيلي من
00:18:58تحميل كل ما يحتاجه بسرعة. يمكنني التأكد من فهمه لكودي ثم أبدأ في
00:19:03عملية التخطيط التي كنت أعرضها لكم سابقاً. لذا كملخص سريع، القواعد العالمية يتم تحميلها دائماً.
00:19:09السياق عند الطلب عندما تعرف أنك على وشك العمل على جزء من الكود
00:19:13موثق بشكل منفصل. المهارات عندما تحتاج لقدرات مختلفة؛ مثل: حسناً حان الوقت لإجراء
00:19:18اختبار شامل، لنقم بتحميل مهارة متصفح الوكيل. وأوامر التهيئة عادة ما
00:19:22أشغلها في بداية المحادثة لتهيئة المسرح لتخطيطي. هذا
00:19:28كل شيء بالنسبة للاختيار (Select). والآن سننتقل إلى الضغط (Compress)، وهو في الواقع أسرع قسم سنغطيه
00:19:34لأنك لا يجب أن تحتاج للضغط كثيراً إذا كنت تطبق استراتيجيات الكتابة والعزل والاختيار
00:19:39بشكل جيد. إذا كنا نتبع كل الاستراتيجيات الأخرى للحفاظ على رشاقة السياق، فنحن نتجنب هذا،
00:19:46وهذا جيد لأنك تريد تجنب الضغط قدر الإمكان. وإذا كان لا بد من الضغط، فهناك
00:19:52استراتيجيتان سنغطيهما هنا. وهاتان الاستراتيجيتان هما التسليم (handoff) و
00:19:56الضغط المركز (focus compaction). لننتقل إلى "كلاود كود" ونلقي نظرة على هذا. التسليم
00:20:02غطيناه بالفعل، فهو أحد استراتيجيات الكتابة لدينا. نحن نلخص كل شيء فعلناه للتو
00:20:06لتسليمه إلى وكيل آخر أو لنفس الوكيل بعد ضغط الذاكرة. ثم لدينا أمر
00:20:12الضغط المدمج "slash compact/" في "كلاود كود". سيقوم هذا بتلخيص محادثتنا ثم مسح
00:20:18المحادثة ووضع الملخص في أعلى نافذة سياقنا. الآن، التسليم
00:20:23قوي جداً لأن هذا هو المكان الذي نحدد فيه سير عملنا الخاص لكيفية تذكر المعلومات. ولكن
00:20:28أمر "slash compact/" مفيد جداً أيضاً خاصة لأننا نستطيع اختيارياً تقديم تعليمات
00:20:34للتلخيص. عندما أضطر تماماً للضغط، سأستخدم هذا في كل مرة. مثلاً: ركز
00:20:41على الحالات القصوى التي اختبرناها للتو. وهكذا، عندما يقوم بإنشاء هذا الملخص،
00:20:48سيعطي اهتماماً أكبر لهذا الجزء من ذاكرته قصيرة المدى. لم أكتب الكلمة بشكل صحيح، لا
00:20:53بأس، هذا عادي. سيقوم بعملية الضغط هنا. لذا فالتسليم وأمر "compact" هما خياران بديلان.
00:20:58لكنني بالتأكيد أجد أوقاتاً أريد فيها استخدام الاثنين معاً. التسليم خاصة عندما تضطر لإجراء
00:21:03ضغط لأكثر من مرتين، فعادة ما تكون تلك المحادثة قد أصبحت متضخمة جداً لذا سترغب في بدء
00:21:09جلسة جديدة مع التسليم. ولكن إذا كنت سأفعل ذلك مرة واحدة، فغالباً ما أكتفي بتشغيل
00:21:14أمر "slash compact/" لمرة واحدة. ولكن عادة بعد الضغط، سأطلب من الوكيل تلخيص ما
00:21:19يتذكره حتى أتمكن من التأكد من فهمه الحقيقي، مثل: ماذا تتذكر
00:21:24هنا؟ أو شيء من هذا القبيل. لذا نعم، الأمر ليس مثالياً. تجنب الضغط قدر الإمكان.
00:21:30أفضل استراتيجية ضغط هي عدم الحاجة للضغط أصلاً. حسناً، هذا هو إطار عمل
00:21:36"Whisk". أعلم أنه كان كثيراً، لذا آمل أن تكونوا قد وجدتم هذا مفيداً، وأخبروني إذا كان هناك أي
00:21:41استراتيجية معينة تريدون مني التعمق فيها لأنني أستطيع تخصيص فيديو كامل لأي من
00:21:46هذه الاستراتيجيات. ولكن هذا هو إطار عمل "Whisk". آمل أن تتمكنوا من استخدامه لنقلكم إلى
00:21:52المستوى التالي في "كلاود كود" أو في الواقع أي مساعد برمجة بالذكاء الاصطناعي. لذا، إذا وجدتم هذا الفيديو مفيداً
00:21:59وتتطلعون لمزيد من المحتوى حول البرمجة بالذكاء الاصطناعي والقدرة على تطبيق هذه الأنواع من
00:22:04أطر العمل عملياً، سأقدر حقاً الإعجاب والاشتراك. ومع ذلك، سأراكم
00:22:09في الفيديو القادم. لحظة! لدي شيء أخير لكم سريعاً لا تريدون تفويته.
00:22:14في 2 أبريل، سأستضيف ورشة عمل مجانية حول تحول الذكاء الاصطناعي مباشرة على قناتي في يوتيوب مع
00:22:20ليور وينشتاين، مؤسس CTOX، وهذا أمر كبير. سيعلمنا ليور كيفية
00:22:27إعادة هيكلة منظمتنا بالكامل من أجل الذكاء الاصطناعي، ثم سأعلمكم كيفية إتقان منهجية البرمجة
00:22:32بالذكاء الاصطناعي التي أستخدمها لبناء أنظمة موثوقة وقابلة للتكرار لوكلاء البرمجة لدي. لذا
00:22:38سأضع رابطاً في الوصف لهذه الصفحة. ستكون الورشة مباشرة على قناتي في يوتيوب، لذا يمكنك
00:22:42تفعيل التنبيهات لها بالضغط على هذا الزر هنا. سأراكم هناك!

Key Takeaway

يعد إتقان هندسة السياق من خلال إطار عمل WISC المفتاح الأساسي للارتقاء بموثوقية مساعدي البرمجة بالذكاء الاصطناعي من الاستخدام العادي إلى الاحترافية العالية في المشاريع المعقدة.

Highlights

تقديم إطار عمل "WISC" المبتكر (Write, Isolate, Select, Compress) لإدارة سياق البرمجة بالذكاء الاصطناعي بكفاءة.

التركيز على مشكلة "تآكل السياق" (Context Erosion) وكيفية الحفاظ على رشاقة نافذة السياق حتى مع وجود حدود مليون رمز.

استخدام سجلات Git كذاكرة طويلة المدى لتوحيد التواصل مع الوكيل البرمجي وضمان استمرارية المعرفة.

أهمية عزل عمليات البحث والاستكشاف باستخدام الوكلاء الفرعيين (Sub-agents) لتوفير استهلاك الرموز (Tokens).

تطبيق استراتيجية التحميل "عند الحاجة" (Just-in-Time) للسياق من خلال طبقات القواعد، المهارات، وأوامر التهيئة.

استخدام أوامر الضغط (Compact) والتسليم (Handoff) كحلول نهائية لتلخيص المحادثات الطويلة وتجنب التخيلات البرمجية.

Timeline

مقدمة ومفهوم تآكل السياق

يبدأ المتحدث بمشاركة خبرته التي تتجاوز 2000 ساعة مع أداة Claude Code منذ إطلاقها بنسختها التجريبية. يوضح أن الهدف من الفيديو هو تحويل المستخدمين العاديين إلى محترفين عبر إطار عمل يسمى "WISC" يركز بشكل أساسي على إدارة السياق. يشرح المتحدث أن "تآكل السياق" هو التحدي الأكبر الذي يواجه المبرمجين اليوم، حيث يؤدي تضخم المعلومات إلى أخطاء في التنفيذ. يؤكد أن 80% من أخطاء وكلاء البرمجة تنبع من سوء إدارة السياق، بغض النظر عن سعة نافذة الرموز المتاحة. يعتبر هذا القسم بمثابة الأساس النظري لفهم لماذا تعتبر رشاقة المعلومات أهم من كميتها في بيئات البرمجة الذكية.

معضلة البحث عن إبرة في كومة قش

يتناول هذا الجزء الأبحاث التقنية، خاصة تقرير شركة Chroma، حول كيفية تأثير زيادة المدخلات على أداء النماذج اللغوية الكبيرة. يشرح المتحدث ظاهرة "المشتتات" التي تظهر عندما تزدحم نافذة السياق بمعلومات متشابهة، مما يدفع النموذج لاتخاذ قرارات خاطئة بثقة عالية. يهدف إطار العمل المقترح إلى الإجابة على سؤال محوري: كيف نوفر للوكيل كل ما يحتاجه مع الحفاظ على أقل حجم ممكن من البيانات؟ يشدد المتحدث على أن النماذج ترتبك تماماً كالبشر عند مواجهة سيل من المعلومات غير الضرورية. يتم تقديم الأحرف الأربعة لـ WISC (الكتابة، العزل، الاختيار، الضغط) كحل عملي لهذه المشكلة المعقدة في القواعد البرمجية الضخمة.

استراتيجية الكتابة (Write) والذاكرة الخارجية

يركز حرف W على تدوين ذاكرة الوكيل خارجياً لتقليل استهلاك الرموز في الجلسات المستقبلية عبر ثلاث طرق رئيسية. الطريقة الأولى هي استخدام سجل Git كذاكرة طويلة المدى عبر توحيد رسائل الالتزام (Commit) لتخبر الوكيل بما تم إنجازه بدقة. الطريقة الثانية تعتمد على بدء كل مهمة تنفيذ في نافذة سياق جديدة تماماً بناءً على "خطة منظمة" مكتوبة مسبقاً في ملف Markdown. أما الطريقة الثالثة فهي استخدام سجلات القرارات وملفات التسليم (Handoff) لنقل حالة العمل بين الوكلاء أو الجلسات المختلفة. يوضح المتحدث كيف يطبق هذه الأساليب في مشروعه الخاص "Archon" لضمان تركيز الوكيل العالي وتجنب التخيلات الناتجة عن المحادثات الطويلة.

استراتيجية العزل (Isolate) عبر الوكلاء الفرعيين

يشرح المتحدث أهمية حرف I الذي يرمز للعزل، حيث يتم استخدام الوكلاء الفرعيين للقيام بمهام البحث الشاقة بعيداً عن السياق الرئيسي. بدلاً من تحميل مئات الآلاف من الرموز في المحادثة الأساسية، يقوم الوكلاء الفرعيون بتلخيص النتائج وتقديمها في بضع مئات من الرموز فقط. يطرح المتحدث مثالاً عملياً لبناء أداة تدفق عمل، حيث يتم تشغيل وكيلين بالتوازي؛ أحدهما للبحث في الكود والآخر للبحث في الويب. كما يقدم نمط "المستكشف" (Scout Pattern) الذي يرسل وكلاء لمعاينة الوثائق قبل تقرير ما إذا كانت تستحق التحميل في السياق الرئيسي. هذه الاستراتيجية تزيد من سرعة العمل بنسبة كبيرة وتحافظ على نظافة بيئة البرمجة الأساسية من الضوضاء المعلوماتية.

استراتيجية الاختيار (Select) والنهج ذو الطبقات

يتناول حرف S مبدأ تحميل السياق "عند الحاجة فقط" عبر هيكلية مكونة من أربع طبقات تبدأ بالقواعد العالمية المختصرة. تليها طبقة السياق عند الطلب التي تشمل قواعد محددة لأجزاء معينة من الكود مثل واجهة المستخدم أو نقاط نهاية API. الطبقة الثالثة هي "المهارات" (Skills)، حيث يتم تحميل تعليمات مفصلة فقط عندما يقرر الوكيل استخدام أداة معينة مثل متصفح الأتمتة. أخيراً، تأتي "أوامر التهيئة" (Prime Commands) التي تستكشف الحالة الحالية للكود في بداية التخطيط لضمان حداثة المعلومات. يضمن هذا النهج المتدرج أن يظل الوكيل مزوداً بالمعلومات ذات الصلة المباشرة بالمهمة الحالية دون إغراق الذاكرة ببيانات ثابتة غير مستخدمة.

استراتيجية الضغط (Compress) والخاتمة

يختتم المتحدث إطار العمل بحرف C الذي يرمز للضغط، مؤكداً أنه يجب أن يكون الملاذ الأخير إذا تم تطبيق الاستراتيجيات السابقة بنجاح. يستعرض أمر الضغط المدمج في Claude Code الذي يلخص المحادثة ويمسح التاريخ لتوفير المساحة، مع إمكانية توجيه التلخيص للتركيز على نقاط معينة. ينصح المتحدث بطلب ملخص من الوكيل بعد الضغط للتأكد من استيعابه للقرارات الهامة وعدم فقدان التفاصيل الجوهرية. في نهاية الفيديو، يعلن عن ورشة عمل مجانية قادمة في 2 أبريل تتناول التحول المؤسسي نحو الذكاء الاصطناعي ومنهجيات البرمجة المتقدمة. يشجع الجمهور على الاشتراك وتطبيق إطار عمل WISC لرفع كفاءة مشاريعهم البرمجية بشكل فوري وملموس.

Community Posts

View all posts