▲ جلسة مجتمعية: إضافة Vercel لأداة Claude Code

VVercel
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00أهلاً بالجميع. مرحباً بكم في البث المباشر لمجتمع Vercel لهذا الأسبوع. أنا إيمي، وهذا
00:00:26جايكوب. نحن في فريق المجتمع هنا في Vercel. مجرد تذكير، نحن نبث
00:00:31هذا على X ويوتيوب، ولكن إذا أردتم التأكد من أننا نرى أسئلتكم وتعليقاتكم
00:00:36في الدردشة، اذهبوا إلى المجتمع وسجلوا الدخول. العنوان هو [community.vercel.com/live](https://community.vercel.com/live) وستجدون
00:00:43ذلك كأول حدث.
00:00:44نعم، في نهاية الجلسة، سيكون لدينا متسع من الوقت لبعض الأسئلة. إذا كنتم
00:00:49ستشاركون في الدردشة أثناء مشاهدة الجلسة، فقط تذكروا اتباع
00:00:55مدونة السلوك الخاصة بنا، ونعم، يمكنكم وضع أي أسئلة لديكم طوال الوقت و
00:00:59سنتأكد من طرحها. أود أن أقدم ضيفنا. معنا جون ليندكويست هنا ليطلعنا
00:01:05على المكون الإضافي Vercel الجديد لـ Claude Code. مرحباً جون.
00:01:09أهلاً جايكوب. أهلاً إيمي. شكراً لاستضافتي. حسناً، لنبدأ بمشاركة
00:01:16شاشتي فوراً لنتمكن من عرض ما يحدث هنا. لفترة من الوقت الآن، كانت
00:01:23المهارات (Skills) هي الصيحة الرائجة والجميع يتحدث عن المهارات التي يجب استخدامها لرفع مستوى مشاريعكم
00:01:29وتمكين وكلائكم (Agents) من القيام بأشياء لم يكونوا قادرين عليها عادة. والآن ما يبرز من
00:01:37المهارات، التطور التالي لذلك هو ما نسميه المكونات الإضافية (Plugins). وهذا شيء
00:01:43لا يزال ينتشر حقاً. لا يوجد الكثير من المكونات الإضافية المتاحة والناس لا يزالون
00:01:48يستكشفون كيفية بنائها بالضبط. لقد قمت ببناء المسودة الأولى لمكون Vercel الإضافي وما
00:01:56أود التحدث عنه هو لماذا نبني مكوناً إضافياً، ومتى يجب بناؤه، ولماذا مكون إضافي
00:02:03بدلاً من المهارات وكيف يكملون بعضهم البعض وكل تلك الأنواع من الأسئلة. لذا
00:02:09إذا كان لديكم أي أسئلة حول ما هو، سأتحدث عن ذلك، ولكن ما يمكن للمكون الإضافي
00:02:16تمكينه لكم، وإذا كان يجب عليكم بناء واحد داخلياً أو شخصياً، سأحب مناقشة ذلك
00:02:22وسنتحدث عن ذلك خلال جلسة اليوم. أولاً وقبل كل شيء، المكون الإضافي تم إطلاقه في البداية
00:02:32بواسطة Claude Code وGemini أيضاً، لكنهما اتخذا نهجين مختلفين تماماً. و
00:02:39توحيد المكونات الإضافية هو جهد مستمر. وهذا شيء نأمل أن نمتلكه،
00:02:44يمكنني التحدث عنه أكثر قريباً حيث يمكن لمكون إضافي واحد أن يعمل عبر جميع المحررات. لذا
00:02:49الآن نحن نتحدث عن Claude Code ودعم Cursor أيضاً. CodeX قادم قريباً جداً،
00:02:54إن لم يكن متاحاً اليوم والعديد من الآخرين أيضاً. هناك معيار للمكونات الإضافية
00:03:01يجري العمل عليه. لذا يمكننا أن نتوقع أن تكون المكونات الإضافية شيئاً يمكنك حزمه ومشاركته
00:03:08عبر أي أدوات تستخدمها. ومع ذلك، قد تكونون على دراية بالمهارات
00:03:15بما أنها ملفات markdown، والتي يمكن تحميلها بواسطة وكيلكم لإعطائه تعليمات إضافية.
00:03:23أولاً، تقوم باستدعائها يدوياً، مثل عمل شرطة مائلة واستدعاء مهارتك أو يقوم الوكيل
00:03:29باكتشاف بناءً على الوصف أن المهارة يجب أن تُحمل. لذا فالأمر يعتمد كثيراً على استدعاء المستخدم أو
00:03:36قرار الوكيل بناءً على حالة في الوصف. الآن، المستوى المتقدم للمكون الإضافي
00:03:44هو أن لديهم شيء يسمى الخطافات (Hooks). وإذا فكرتم في المكون الإضافي، أو فكرتم في الجلسة
00:03:53التي تجرونها مع Claude Code أو مع أي من هياكل الوكلاء، يمكنكم اعتبار أن لديهم دورات حياة.
00:03:59الآن أنا في مجلد مكون Vercel الإضافي، سأقوم بتشغيل Claude Code هنا، وسأقوم بـ
00:04:07سؤاله ما هي الخطافات التي يستخدمها هذا المكون. وهذا سيسرد الخطافات
00:04:18التي تُعرف نوعاً ما دورة الحياة. ودورة الحياة هي متى تبدأ جلستك، ومتى الأدوات
00:04:27مثل قبل استدعاء الأدوات وبعد استدعائها، وعندما يرسل المستخدم نصاً إليها، و
00:04:33عندما تنتهي جلستك. هناك مجموعة كاملة من الخطافات الأخرى هناك. ولكن لأغراضنا
00:04:39في مكون Vercel الإضافي، هذه هي الخطافات التي نستخدمها حالياً بناءً على أهدافنا الأولية.
00:04:44لأكون واضحاً، الهدف الأولي لمكون Vercel الإضافي كان مساعدة الناس على شحن
00:04:51الوكلاء على Vercel. لذا فالفكرة هي كيف سنجعل الوكلاء على دراية بنظام Vercel البيئي،
00:05:02مثل كل شيء في المنصة له علاقة بـ AI SDK، والـ gateway. و
00:05:11سير عملنا يشبه J هنا تقريباً. لذا أي شيء حول سير العمل، وأساساً،
00:05:19لقد تم تحديث واجهة أوامر Vercel (CLI) كثيراً. وكل هذه الأشياء حول الـ
00:05:26حول شحن الوكلاء على Vercel. إنها جميعاً أشياء تم إصدارها خلال الأيام والأسابيع
00:05:33والشهور الماضية. وأي من هياكل الوكلاء هذه مثل Claude Code، لديهم انقطاع في المعرفة
00:05:39منذ حوالي ستة أشهر إلى سنة مضت. لذا فالأمر يعتمد على النموذج ويعتمد على
00:05:46مجموعة كاملة من المتغيرات. لكنهم جميعاً أشياء لا يعرفها كل هؤلاء الوكلاء
00:05:52عن كل الأشياء الرائعة الأخيرة التي شحناها. لذا فإن هدف مكون Vercel
00:05:57الإضافي هو منع الوكيل من كتابة كود قديم نوعاً ما، وممارسات قديمة، وإيصاله
00:06:06إلى كل ما هو الأحدث تماماً على منصة Vercel. وهذا فوز كبير هناك لأن
00:06:11النماذج ذكية، لكنها ببساطة لا تعرف عن كل هذه الأشياء.
00:06:19وبدلاً من مطالبتهم بإجراء بحث في كل مرة، أو طلب، أو امتلاك
00:06:25حزمة ضخمة من المهارات لكل شيء، مثل إذا وجدنا طريقة لإجبار
00:06:32الوكيل أساساً على تحميل أفضل الأشياء عن منصة Vercel، فهذا فوز كبير
00:06:38بالنسبة لنا. لذا إذا نظرت إلى هذه الخطافات في دورة حياة الوكيل، ومرة أخرى، هناك الكثير
00:06:45من الخطافات الإضافية التي يمكننا الاستفادة منها في المستقبل أو يمكنكم الاستفادة منها. ولكن الأساسية
00:06:49حالياً هي بداية الجلسة (session start). ونستخدم ذلك بطرق مختلفة. واستخدام الأداة (pre tool use) وإرسال طلب المستخدم (user prompt submit)
00:06:56واستخدام الأداة اللاحق (post tool use) ونهاية الجلسة. لذا فبداية الجلسة ونهايتها هما، كما تعلمون، البداية
00:07:03والنهاية لمحادثة مع وكيل. ويمكنكم اعتبار ملف agents.md أو claude.md
00:07:12الخاص بكم هو عادة الشيء الذي تفعلونه في بداية الجلسة. فماذا يمكننا أن نفعل في بداية الجلسة لـ
00:07:19منصة Vercel. وما يمكننا فعله هو تحميل ملف منصة Vercel، مما يعني
00:07:27أننا إذا نظرنا إلى، سأقول فقط صف لي ملف vercel.md. هذا الملف هو شيء يمكننا تضمينه
00:07:40في بداية الجلسة جنباً إلى جنب مع claude.md. في الأساس، يمكن أن يكون لديك مكون إضافي إذا كان كل ما
00:07:48تريد القيام به هو مشاركة ملف claude.md وأن يكون لدى شخص ما طريقة سهلة لـ
00:07:52تثبيته. يمكنك بناء مكون إضافي كل ما يفعله هو مجرد حقن هذا، هذا هو رسم بياني للمعرفة
00:07:59لـ Vercel. وهذا شيء نقوم بتحسينه باستمرار. نحن نبحث
00:08:04عن طرق لضغطه وجعله أصغر ما يمكن ولكن مع الحفاظ على أداء جيد
00:08:08وتوازن بين ما يجب أن يكون فيه وما لا يجب أن يكون. إنه من الصعب جداً
00:08:15إجراء تقييمات ضد جميع النماذج المختلفة وجميع الهياكل. لكننا ببطء
00:08:21نكتشف هذه الأمور. لذا فالمحتوى هو أساساً علاقات في نظام Vercel
00:08:28البيئي حول الذكاء الاصطناعي، متى نستخدم، متى نستخدم أي منتجات، متى نستدعي أي أشياء
00:08:35مثل فهم هيكلي لنظام Vercel البيئي بالكامل. لذا مفهوم الـ، أنا أحب
00:08:44كيف يطلق عليه جدول المحتويات. إنه مثل بداية الكتاب عندما تبدأ محادثة.
00:08:50والطريقة التي صممنا بها هذا وفكرنا بها هي إذا فكرت في كيف أتحدث
00:08:56إلى وكيل حول الأشياء، فلدي مفردات معينة، ولديهم هم مفردات معينة.
00:09:02وإذا استطعت، إذا استطعت إعطاءه مسرداً للمصطلحات، وربطها بالوثائق، وربطها بالمهارات
00:09:07وربطها بالأشياء التي يجب أن يحملها. بمجرد الوصول لتلك الأشياء، يمكنك
00:09:12التفكير في ما هي الأشياء التي سأقولها وما هي الأشياء التي يجب على الوكيل
00:09:19أن يحملها ويستدعيها ومحاولة تطوير خريطة ذهنية مسبقة حتى أتمكن من
00:09:24التحدث بشكل طبيعي معه ولا داعي للقلق بشأن التحدث عن حتى ذكر
00:09:30الـ AI SDK على الإطلاق. وحتى ذكر أي من الميزات على الإطلاق. وإذا استطعت فقط إيجاد
00:09:38طريقة لقول فقط ابنِ لي هذا التطبيق واشحنه. وبعد ذلك هو سيتعامل مع كل شيء في
00:09:45المكون الإضافي. عذراً، يتعامل مع كل شيء في المكون الإضافي بحيث يحصل على تطبيق جميل
00:09:52يتم شحنه على Vercel ويمكنهم التطوير من هناك. على غرار كيفية عمل v0 و
00:09:57بعض المشاريع الأخرى بالنسبة لنا. إذا تمكنا فقط من جعل الأمر بحيث يكون لديك تجربة
00:10:02رائعة، ولكن لا يتعين عليك التفكير في النظام البيئي. وهذا فوز كبير. هل
00:10:09هذا منطقي؟ جايكوب، إيمي، أي أسئلة أولية حول ذلك أو أي شيء في الدردشة؟
00:10:16جايكوب، أعتقد أن لديك سؤالاً. عذراً، أنا آسف جداً. كان لدي سؤال
00:10:24لك يا جون. نعم. بما أن هذا المكون الإضافي يعمل كجدول محتويات، فهل هذا هو السبب في أنه لا يحتاج
00:10:30لماذا لا يحتاج المكون الإضافي للتحديث باستمرار في كل مرة تصدر فيها وثائق جديدة؟
00:10:38لأنها أساساً مجموعة من روابط URL التي يمكن للوكلاء اتباعها للعثور على
00:10:43الوثائق المحدثة؟ أم أن المكون الإضافي لديه نظام تحديث فوري؟ كيف
00:10:49يعمل هذا النهج؟ نعم. في الأساس، إذا فكرت في رسم بياني للمعرفة مسبقاً،
00:10:58فإن الكثير مما يمكنه فعله هو مجرد التوجيه إلى أحدث الوثائق. لذا إذا فكرت في أن
00:11:07هذا سؤال يتكرر كثيراً مع المهارات وكيفية إدارة المهارات لكل مكتبة.
00:11:14وإذا كان لديك شخص يستخدم الإصدار الخامس من أي SDK وشخص آخر يستخدم الإصدار
00:11:18السادس من الـ SDK، وحاولت التأثير عليهم بمهارات من إصدارات مختلفة
00:11:22متعارضة، مثل كيف تفعل ذلك؟ والكثير منه يعتمد على ما يمتلكه الشخص
00:11:31مثبتاً، يمكنك التحقق من ملف package.json، يمكنك التحقق من الإصدار. وبناءً
00:11:36على ذلك تتوصل إلى طريقة ذكية لمعرفة أي روابط وثائق يجب أن ينظر إليها وأي
00:11:44مهارات يجب أن تُحمل وكل تلك الأنواع من الأشياء. وهذا جزء آخر من نوع
00:11:51مرحلة التحميل المسبق التي تكون في بداية الجلسة وهي مجرد فحص مشروع الشخص.
00:11:58ومرة أخرى، كل هذا محلي. إنه فقط ينظر إلى المشروع ليرى ما هي المكتبات
00:12:02التي تستخدمها؟ ما هي الإعدادات التي تستخدمها؟ حتى يعرف كيف يوجهك في الاتجاه الصحيح.
00:12:07أحد أكثر الأخطاء شيوعاً هو مثلاً محاولة استخدام generate object على أحدث
00:12:12إصدار من SDK بينما تعلم أن واجهة البرمجة (API) قد تغيرت. لذا، المكونات الإضافية
00:12:21تتعامل مع ذلك، مثل، لا ينبغي عليك القلق إذا كنت تستخدم هذا في مشروع
00:12:27قديم أو إذا كنت تستخدمه في أحدث مشروع جديد تماماً، يجب أن يكون المكون الإضافي
00:12:32قادراً على التعامل مع ذلك، لا ينبغي أن تقلق بشأن أرقام الإصدارات، لا ينبغي
00:12:34أن تقلق بشأن أسماء الحزم، لا ينبغي أن تقلق بشأن أي شيء لأنك فقط
00:12:41تترك Vercel تقوم بذلك نيابة عنك. صحيح. ونحن نعمل باستمرار على طرق، لدينا
00:12:49الكثير من الأفكار الإضافية حول كيفية القيام بذلك بشكل أفضل. وسيستمر المكون الإضافي في التحديث ودفع
00:12:54هذا الأمر للأمام. فهل هناك أي أسئلة أخرى؟
00:12:58نعم، ما هو النطاق الإجمالي للمكون الإضافي؟ هل يتعامل مثلاً مع خدمات Vercel فقط؟
00:13:04أي شيء قد أجده في لوحة التحكم؟ أم أنه يشمل أيضاً المكتبات مفتوحة المصدر
00:13:11التي ندعمها مثل Next.js وAI SDK وسير العمل وما إلى ذلك؟
00:13:16نعم، النطاق الأولي، ما قررناه في البداية هو تغطية أكبر قدر ممكن،
00:13:25وأن نضع كل مكتبة، كل شيء في المنصة، مثل وضع كل شيء هناك،
00:13:32لنرى ما الذي يتم استخدامه أكثر، مثل داخلياً، نجعل الجميع يشغلون القياس عن بعد، و
00:13:36يمكنك مثلاً اختيار مشاركة بيانات القياس. وسنجد أي المهارات يتم استخدامها فعلياً
00:13:40وأيها لا. بهذه الطريقة يمكننا إزالة بعض الأشياء هناك التي قد لا
00:13:48نحتاج إلى الكثير من المعلومات عنها أو إضافة المزيد بناءً على ما يبدو أنه الأكثر استخداماً، ومن الواضح
00:13:53أن Next.js وAI SDK والأشياء الأكثر شعبية في التحميل يجب أن تحتوي على أكبر قدر من المعلومات.
00:13:59وهذا توازن في البداية، حيث تعمدنا التوسع بشكل كبير في
00:14:08الإصدار الأولي، وسنقوم بتقليصه إلى شيء أكثر رشاقة، كما أعتقد،
00:14:15في المستقبل. لذا
00:14:16نعم، هذا منطقي جداً. شكراً لك. نعم. حسناً. لذا إذا كنت
00:14:24تبني مكوناً إضافياً، وأحد الأسباب التي تجعلني أتحدث عن هذا بمصطلحات عامة فضفاضة
00:14:29هو لأنني مهتم جداً بالتطوير المعتمد على الوكلاء. وبدلاً من أن أريك
00:14:36بالضبط كيف يعمل كل شيء، أعتقد أنه من الأهم بكثير مثلاً تعلم كيفية التحدث
00:14:40عن ذلك، واستخلاص بعض المصطلحات منه. حتى تتمكن من طلب ذلك من مساعد الذكاء الاصطناعي الخاص بك
00:14:45للقيام بأشياء مماثلة. إذا قلت لـ Claude Code أن يبني مكوناً إضافياً لـ Claude Code،
00:14:52وأعطيته الوثائق، فإنه يستطيع فعل ذلك. لذا فمن الأهم بكثير
00:14:58مناقشة المفاهيم والأفكار حول هذا بدلاً من الغوص في الكود كثيراً. مع
00:15:05العلم بأن بداية الجلسة هي مكان رائع لحقن شيء مثل جدول محتويات
00:15:11المنصة، مثل كل هذه الأشياء التي أصبحت قديمة بناءً على الأشياء التي
00:15:19تهمني وهي قديمة بالنسبة لمعظم النماذج. فهذا
00:15:24هو ما يرفع مستوى كل شيء، مثل هكذا يبدو Vercel اليوم. وحتى
00:15:31لو كان هذا هو الشيء الوحيد الذي يحدث في المكون الإضافي، فهو سيعرف أنه يجب أن يذهب و
00:15:37يتحقق من الأشياء في المستقبل. ولكن ما نحن قادرون أيضاً على فعله ومجرد ملاحظة
00:15:44جانبية، السبب في فعل ذلك هو أن كل جلسة في Claude Code لها معرف فريد خاص بها، مما يسمح
00:15:52لك مثلاً بينما تمر الجلسة، التأكد من أن لديها ميزانية للمهارات،
00:16:01وأن لديها المهارات التي تم تحميلها بالفعل وأشياء من هذا القبيل. لذا يمكننا
00:16:07وضع، يمكنك كتابة أشياء في بيئة الجلسة، أو في مكان تخزين الجلسة
00:16:15حيث طوال تلك الجلسة، وبينما تتقدم في الجلسة، نتأكد من أننا لا
00:16:20نحمل أشياء تم تحميلها بالفعل، أو نكرر أي جهود، لأننا نستطيع
00:16:26تتبع الأشياء التي حدثت بالفعل. لذا فهذا جزء رائع آخر
00:16:30عن الجلسة هو أنها تمنحك فرصة للحصول على معرف جلسة بحيث من خلال أي من
00:16:35الخطافات المستقبلية، وأي شيء يتم تشغيله داخل الجلسة، يكون لديك
00:16:40معرف للتمسك به وتخزين أشياء عن الجلسة لمكونك الإضافي الخاص.
00:16:47Claude Code يفعل ذلك أيضاً إذا نظرت في مجلد dot cloud مع المشاريع
00:16:50يمكنك رؤية الجلسات وأشياء هناك. لذا تأخذ نفس المفهوم لمكوناتك الإضافية
00:16:56وأدواتك الخاصة. حسناً، مع قول كل ذلك، ما قبل استخدام الأداة وسنتحدث
00:17:05عن ما قبل وما بعد الأداة في نفس الوقت، ما تمنحه لك هذه الخطافات، تمنحك فرصة
00:17:11لرؤية تغييرات الملفات. لذا في ما قبل استخدام الأداة، يمكنك الحصول على محتوى الملف الذي
00:17:20على وشك أن يتغير. وهذا يتعلق مثلاً بـ قراءة الملفات، وكتابة الملفات،
00:17:29أو عذراً، قراءة الملفات، وتحرير الملفات، وإنشاء الملفات. وما قبل الأداة يغطي أيضاً الكثير من
00:17:34الأدوات الأخرى التي يتم استخدامها، مثل تشغيل الأشياء في bash. لذا تحصل على هذه الفرصة، قبل
00:17:40حدوث هذا الشيء، هل هناك أي شيء أريد القيام به؟ فمثلاً، إذا رأينا شخصاً
00:17:47يحاول القيام بأمر محدد في Vercel CLI، ونلاحظ أن هناك طريقة أفضل
00:17:55للقيام بذلك الآن في Vercel CLI، مثل أن Vercel CLI لديه الآن خيار API حيث
00:18:00يمكننا إجراء استعلامات أكثر تقدماً. وقد تم تحديث Vercel CLI. إذا لم تكونوا قد
00:18:05حدثتموه مؤخراً، فلديه الكثير من الميزات الجديدة الرائعة. يمكننا التلميح لتلك الأشياء و
00:18:11القول بأنك تحاول فعل هذا أو حتى التحقق مثلاً، هل Vercel CLI الخاص بك قديم؟ سيكون
00:18:17من الرائع تحديثه. لذا فلديك الكثير من الخيارات هنا. فهو يمنحك فرصة لـ
00:18:21التحقق لترى ما إذا كان سيقوم بنوع من استدعاء الأدوات، سواء كان استدعاء CLI.
00:18:27هذا مهم جداً لـ sandbox CLI وworkflow CLI، ولكل هذه الـ
00:18:34أوامر CLI الجديدة تماماً التي لا تعرف النماذج أي شيء عنها بعد، لأنها صدرت بعد
00:18:39فترات انقطاع المعرفة للتأكد من أنها تقوم بالأشياء بشكل صحيح. لذا فلهذا
00:18:47استدعاءات الأدوات، مثل استدعاءات bash، وبالنسبة لتعديلات الملفات، يصبح الأمر مثيراً للاهتمام حقاً مع
00:18:52تعديلات الملفات. الشيء الذي نستكشفه أكثر هو مقارنة الملفات (diffing) مثل هذا الملف كان يبدو هكذا،
00:18:59والوكيل يحاول جعله يبدو هكذا. هل هذا هو التغيير الصحيح، بناءً على مكتباتنا،
00:19:06هل هذا التغيير صحيح؟ أم أن هناك شيئاً مريباً هناك؟ وهذا يوصلنا إلى،
00:19:11سأعتمد مجدداً على مثال أن يكون لديك الإصدار السادس من SDK مثبتاً ويحاول استخدام generate object
00:19:18كـ API، وهو أمر شائع. وإذا رأيت ذلك في تلك اللحظة، أرى
00:19:25أنك تحاول استخدام generate object، لنقوم بإيقافهم وتذكيرهم بماهية الـ AI SDK فعلياً
00:19:32بحيث قبل أن تصل حتى للاختبار أو النشر أو أي شيء، تكون قد كشفته
00:19:36في اللحظة الدقيقة التي كان يحاول فيها الوكيل تغيير الملف. وهذا أحد تلك
00:19:46الأشياء التي إذا حاولت الاعتماد فيها على المهارات، فالمهارات هي تلميحات نصية،
00:19:54إذا حاولت يوماً الكتابة في ملف claude.md أو في مهارة، مثلاً لا تقم أبداً برفع أي
00:20:03ملفات أو لا تقم أبداً بالرفع ما لم أكن في فرع (branch) معين أو شيء من هذا القبيل. ربما
00:20:13جربت أن تلك الأشياء لا تحميك دائماً منها. استخدام ما قبل الأداة يمنحك
00:20:21فرصة لـ إيقاف تلك الأشياء حرفياً من الحدوث بطريقة برمجية وهندسية.
00:20:28ويمكنك إعطاؤه تعليمات مختلفة وأمثلة مختلفة لطرق يمكنه القيام بها. وهذا هو الفرق الكبير هنا
00:20:32بين المهارات وبين ملفات claude.md وagents.md هو أنك تستطيع بالفعل التحكم فيما يتغير و
00:20:41وإذا أردت حدوث ذلك، أو ما يتغير، وإذا كنت
00:20:47تريد تغيير ذلك فهذه هي النقطة التي تمنحك إياها، إنها رائعة. ومن هناك
00:20:51تحصل على إمكانيات مماثلة في ما بعد استخدام الأداة. الفرصة للتحقق مما تغير بالضبط
00:21:01بعد تنفيذ أمر bash، ما هي الأشياء المختلفة الآن بعد
00:21:07استدعاء الأداة؟ لذا فهذا لا يسمح لك بمنع شيء من
00:21:13الحدوث، ولكنه يسمح لك برؤية نتيجة شيء قد حدث. وإذا كان ذلك،
00:21:19إذا قام بتغيير شيء ما أو فعل شيئاً غير متوقع، فهي فرصة أخرى للحصول
00:21:25على الفارق وقول هذا يبدو غريباً نوعاً ما. لنخبر الوكيل أن هذا يبدو مريباً بالنسبة لنا.
00:21:31لذا فهذان خطافان ضخمان لدورة الحياة يجب معرفتهما عند البناء. وبالنسبة لنا،
00:21:38مرة أخرى، يتعلق الأمر كثيراً بانقطاع المعرفة. هذا هو
00:21:43الشيء الذي يجب على Vercel محاربته لأننا نشحن بسرعة، ونشحن كثيراً و
00:21:49نحن فقط ندفع كل هذه التكنولوجيا الجديدة بسرعة كبيرة. وهذه الأشياء المذهلة
00:21:55ونحن ندفع بكل هذه التكنولوجيا الجديدة بسرعة كبيرة. إنه مجرد شيء مذهل
00:22:00نريد إظهاره للناس. وهنا يمكن للإضافة أن تكون مفيدة حقًا.
00:22:09أي أسئلة حول ذلك؟
00:22:11نعم. إذًا، إذا كان يستخدم مسارات الملفات ليقرر أي المهارات سيحقنها، فهل هذا يعني أننا
00:22:21سنستفيد كثيرًا من تقليص نطاق الملفات في مشاريعنا لتكون أكثر تحديدًا
00:22:27في الغرض منها حتى يتمكن من تحديد المهارات التي يحتاجها بدقة أكبر،
00:22:34على سبيل المثال، إذا كان لدي ملف كبير وربما يستخدم خمس أو ست من
00:22:39مكتباتنا، والآن يمكنه إضافة ثلاث مهارات فقط هناك، أو قد لا يعرف
00:22:47بناءً على مسار الملف. لذا، هل تعتقد أن هذا يجب أن يكون اعتبارًا الآن
00:22:51عند بناء البرمجيات باستخدام هذه الأدوات؟
00:22:54سأقول إنه لا ينبغي عليك الاهتمام بالكود الذي يكتبه الوكيل، بل
00:23:02يقع الأمر على عاتق مؤلفي الإضافات. الأمر متروك لمؤلفي الأنظمة لجعل
00:23:12تلك الأشياء تعمل بشكل جيد. مثل الأشخاص الذين يجرون التقييمات ويرون ما إذا كان
00:23:17ذلك يحدث فرقًا أم لا. بينما أعتقد أنه من السهل جدًا العودة إلى وضع المهندس
00:23:27والتفكير "سأحل هذا لأن هذا ما سيفعله البشر". وهذا بالتأكيد
00:23:33ما قد يريده الوكيل. هذا أحد أكبر إغراءات المطورين الآن
00:23:39وهو حل المشكلات، مثل العثور على مشكلات ليست بمشكلات في الواقع. لأنه نعم،
00:23:50إذا كنت تحاول إصلاح شيء ما ولا تعرف كيف تختبره، مثلًا
00:23:53إذا كنت تعرف كيف تختبر ذلك ضد الوكيل، فافعل ذلك. إذا لم تكن لديك رغبة
00:24:00في ذلك، فاترك الأمر للأشخاص الذين يبنون الإضافات والأنظمة
00:24:05ليتولوا الأمر، لأن الاختبار والتقييم مكلفان. فتشغيل كل هذه
00:24:12النماذج ضد تلك التغييرات يكلف الكثير من المال. ويستغرق وقتًا طويلاً وهو أمر مرهق.
00:24:17لذا، آمل ألا يضطر أحد للاهتمام بذلك. وأعتقد أنني
00:24:23سأقضي جهدي في أشياء أخرى في الوقت الحالي. نعم.
00:24:33أرى، أرى. إذًا لا فائدة من تغيير الطريقة التي أبني بها الأشياء، إذا كان الإصدار القادم
00:24:40من النموذج سيُبنى بطريقة تجعل كل تلك التعديلات غير ضرورية
00:24:47في الأساس.
00:24:48نعم. وأعتقد، أعني، أن الهدف النهائي لجميع الأنظمة ولشركة Vercel هو
00:24:56أنك حقًا لا تضطر للتفكير في الكود أو النظر إليه كثيرًا. لا أقول إن
00:25:01هذا هو الحال الآن، بل أقول إن هذا هو الهدف النهائي. هذا ما
00:25:07ندفع باتجاهه، وهو أنك تريد شحن برمجيات جميلة. تريد أن تكون قادرًا على
00:25:11التفكير والتدفق الحر للأفكار والحصول على تنويعات ورؤية أي منها يلامسك حقًا
00:25:19ثم صقله ليصبح شيئًا جميلاً بالنسبة لك أو لعائلتك أو لعملائك.
00:25:25نحن فقط نريد تجربة جميلة حيث لا تضطر للتفكير كثيرًا
00:25:33في مدى كبر حجم ملفاتك، أو إذا كنت تكتب، كما تعلم،
00:25:39أنماط التصميم الصحيحة أو أي المكتبات تختار. وأنا أتفق تمامًا.
00:25:48مثل إغراء القول: "دعونا نستخدم كل هذه الأنماط لأن الوكلاء
00:25:53أفضل معها. دعونا نفعل كل هذه الأشياء". وهو بالتأكيد شيء نحن
00:25:58نجربه مع الإضافة والاختبار. ولكن مجددًا، إذا لم تستطع اختباره، فإنه
00:26:07من المغري جدًا القول "لقد أجريت هذا التغيير ومن الواضح أنه يعمل بشكل أفضل الآن".
00:26:18وهذا أحد تلك الفخاخ حيث، حسنًا، الآن بعد أن أجريت هذا التغيير، أنت
00:26:23لا تنظر في كيف كان يعمل سابقًا وما هو تأثير ذلك في أماكن أخرى. ونعم،
00:26:28ربما نجح الأمر جيدًا لتلك الجلسة الواحدة.. لذا الهندسة أصبحت مختلفة الآن. آسف،
00:26:35بدأت أتحدث بعمق فلسفي، على ما أظن. نعم، أعتقد أننا نفهم. حسنًا.
00:26:44هناك رابط (hook) آخر وهو إرسال مطالبة المستخدم (user prompt submit). هذا مهم حقًا لأنه يسمح
00:26:50لك بأخذ نص ما كتبه المستخدم. وإذا ذكروا مكتبة، أو ذكروا
00:26:55مفهومًا، أو ذكروا، كما تعلم، إذا ذكروا كلمة "جدولة"، دعونا نجلب
00:27:00مهارة المهام المجدولة (cron). هذا مشابه جدًا لطريقة عمل المهارات،
00:27:07مثل إذا اكتُشف شيء في المحادثة يطابق الوصف، ولكن هذا في الواقع
00:27:12يعطيك فرصة لتشغيل تعبير نمطي (regex) ضد مطالبة المستخدم. وإذا اكتشفت كلمات رئيسية معينة
00:27:20أو أنماطًا، قم بتحميل تلك المهارات، وقدم تلميحات للوكيل،
00:27:26مثل "ربما يجب أن تطرح المزيد من الأسئلة للمتابعة". هذا هو الجزء التفاعلي منه حيث
00:27:33تكون فرصتك للقول: "المستخدم قال هذا، ربما يجب أن نحصل على مزيد من التوضيح"
00:27:38أو يجب علينا فقط تحميل كل هذه الأشياء والمضي قدمًا. يمكنك القيام
00:27:44ببعض الأشياء الممتعة حقًا من خلال إرسال مطالبة المستخدم، فإذا كنت تريد
00:27:48أن يكون لديك قاموس مصطلحات خاص بك، أو لغة أوامر خاصة بك، وتريد
00:27:56بدء الأشياء بعلامة الدولار مثلاً. وإذا بدأ شيء بعلامة الدولار، فافعل هذا. أو
00:28:00إذا كان هناك شيء.. فالأمر يشبه كتابة نصوص برمجية صغيرة (bash scripts) أو شيء من هذا القبيل
00:28:07داخل إرسال مطالبة المستخدم، فإذا اكتشفت هذا، يمكنك تشغيل أداة فورًا
00:28:13ويمكنها تشغيل أي نصوص برمجية (bash) أو (node) أو
00:28:20أي شيء داخل ذلك الرابط الذي يكون خارج سياق الجلسة. لذا يمكنك القيام
00:28:28بكل أنواع الأشياء السريعة والجنونية هناك. إذا كنت تريد مثلاً اكتشاف كلمة "commit"
00:28:37وتجنب جعل الوكيل يتخذ عدة خطوات لتنفيذ عملية الإرسال (commit). وبدلاً من ذلك
00:28:47لديك نص برمجية يقوم بالإرسال بناءً على ما يمكنه فعله. هكذا بعد مطالبة
00:28:53الإرسال مباشرة، يمكنك إخبار الوكيل: "لقد قمت بتشغيل عملية الإرسال هذه، لا داعي
00:28:59للقلق بشأنها". ويمكنك توفير بضع خطوات على الوكيل. وهناك
00:29:03بعض الحيل الصغيرة والمثيرة للاهتمام التي يمكنك القيام بها هناك لتسريع العمل إذا كانت هناك الكثير من
00:29:09الأشياء التي تفعلها بشكل متكرر، بدلاً من مطالبة الوكيل بالقيام بها في كل مرة.
00:29:15إنه مشروع ممتع إذا كنت تريد بناء معالج إرسال مطالبة لنفسك و
00:29:19ابتكار لغتك الخاصة في كيفية التحدث مع الوكيل. ولكن بالنسبة لنا،
00:29:25الأمر يتعلق أكثر بـ: إذا قالوا هذا، أو تحدثوا عن هذا المفهوم، فماذا يعني ذلك في
00:29:30مصطلحات Vercel؟ لذا فالأمر يتعلق بمطابقة الكلمات مع، تحديدًا مثل
00:29:37الجدولة هي (crons) وسير العمل (workflows). والكلمات مثل التوازي أو الأداء أو غيرها،
00:29:45يمكنك العثور على أشياء محددة تعرفها عن Vercel وتوجيه الوكيل إليها. إنه
00:29:53أمر ممتع للغاية لتجربته مع إرسال مطالبة المستخدم إذا كان لديك عطلة نهاية أسبوع للعبث بذلك.
00:29:58ومجددًا، سأكرر فقط، من الممكن تمامًا أن تأتي إلى هنا وتقول، ساعدني
00:30:03في بناء إضافة لـ Claude Code مع إرسال مطالبة المستخدم تكتشف علامات الدولار
00:30:09وإذا ظهرت علامة الدولار، فقم بتشغيل (commit) داخل معالج المطالبة حتى
00:30:14أتمكن من بناء هذا باستخدام تلك المطالبة، لذا لا تقلق كثيرًا بشأن
00:30:19الكود، يمكنك البدء في تجربته فقط. حسنًا، الآن بعد أن انتهيت من
00:30:26كل هذا، فإن نهاية الجلسة (session end) هي فرصة لتنظيف أي ملفات أو أي شيء كتبته
00:30:32خلال الجلسة. فإذا بدأت في جمع المهارات التي تم تشغيلها، أو بدأت
00:30:39في جمع أي معلومات حول نتائج الأدوات التي تم استدعاؤها، أو أي نوع من
00:30:48الميزانية أو الشيء الذي تتبعه طوال الجلسة، فهي فرصة للذهاب إلى هناك و
00:30:51تنظيفه. هناك بعض الأشياء المذهلة التي يمكنك القيام بها في نهاية الجلسة. لأنها تعمل
00:30:57بشكل أساسي عند الضغط على Ctrl+C، أي عند الخروج من الجلسة. يمكنك تشغيل وكلاء آخرين
00:31:05ليقولوا: حسنًا، انظر إلى كل الملفات التي تغيرت في الجلسة. هل تطابق
00:31:09كل شيء.. نحن لا نفعل ذلك. ولكنها مجرد أشياء مثيرة للاهتمام يمكنك
00:31:13القيام بها في نهاية الجلسة حيث انتهت جلستي. هل تمثل تلك الجلسة تقدمًا في هذا
00:31:20المشروع؟ هل تمثل زوائد برمجية؟ هل.. انظر في جميع الملفات التي تم تغييرها.
00:31:26هل هذا تكرار لأشياء موجودة بالفعل في المشروع؟ وإذا كان كذلك فقم
00:31:30بالتنظيف والتنبيه، سيتعين عليك تنبيه المستخدم بطريقة ما مثل إشعار النظام
00:31:37أو من خلال وسيلة أخرى بما أن جلستك قد انتهت. ولكن حقًا هناك أشياء
00:31:43مثيرة للاهتمام يمكنك القيام بها هناك. حسنًا. مع قول كل ذلك، سأقوم
00:31:50بكتابة عرض توضيحي صغير سريع هنا. سأقوم بتشغيل نسخة من Claude Code تعمل
00:31:56بإضافة Vercel مقابل نسخة لا تعمل بها إضافة Vercel. سأستخدم
00:32:04خيار تجاوز الأذونات في Claude، وسأترك وضع التصحيح (debug) مفتوحًا وسأعرض ذلك بعد قليل.
00:32:08وسيتم ضبط هذا النموذج على Haiku. وهو أسرع وأبسط نموذج
00:32:13في Claude Code. وسأقول مثلًا: اكتب برنامجًا تعليميًا عن AI SDK.
00:32:26وسنرى ما سيحدث هناك. وسأقوم بمقارنتهما جنبًا
00:32:30إلى جنب، يمكنك أن ترى بالفعل أنه بدأ في تحميل المهارة. وهذا يحتوي على الإضافة محملة.
00:32:37إذا أردت بدء جلسة بدون تحميل أي إضافات، فهناك علامة إعدادات المصادر
00:32:46والتي تمنحك فرصة لتعطيل مصادر مستوى المستخدم أو إعدادات مستوى المستخدم أو
00:32:53إعدادات مستوى المشروع بشكل أساسي، وتجاهل أي إعدادات. بهذه الطريقة يمكنني تحميله بدون
00:32:59إضافات. ميزة "no flicker".. عذرًا. ميزة عدم الوميض هذه جديدة منذ أمس تقريبًا، وهي طريقة جيدة
00:33:05للقيام بالتمرير السلس داخل Claude Code. لذا سأقوم بتفعيل ذلك أيضًا. ومن ثم
00:33:12سأقوم بضبط النموذج على Opus وهو النموذج الأكثر ذكاءً. وإذا قمت بنفس المطالبة
00:33:20حول البرنامج التعليمي لـ SDK. وهذه هي النسخة الأصلية (العادية) هنا. وسنقوم
00:33:28بمقارنة النتائج. أوه، عذرًا، لم أحذف النسخة السابقة. دعونا
00:33:36نبدأ مجددًا. دعوني أشغل هذا وأقوم بتنفيذه. كنت أقوم بتشغيل هذا
00:33:50هذا الصباح والتنظيف قبل أن يبدأ هذا. لذا دعوني أطلقه مرة أخرى.
00:33:56لإجراء مقارنة نوعًا ما. نعم.
00:34:01حسنًا. إذًا
00:34:04الفرق الهائل هنا هو أن هذا هو Haiku 4.5 مقابل Opus 4.6، صحيح؟ النموذج الأكثر..
00:34:15هذا أرخص بمليون مرة، وأسرع بكثير. وهو محمل بالكثير من
00:34:22معلومات Vercel. لذا حتى لو قارنت تكلفة الميزانية للرموز الإضافية
00:34:32التي ندرجها، مقابل Haiku ضد Opus. بينما يتجه هذا إلى..
00:34:38كان ينبغي أن أقول فقط أنشئ ملف markdown. أظن أنه يتجه لكتابة الكود فعليًا،
00:34:45ولكن هذا سيكون مثيرًا للاهتمام بما يكفي. لنرى. هذا شيء واحد يجب ملاحظته حول
00:34:59أحد المناهج التي نتخذها للعديد من مهاراتنا وهو، كما ذكرنا سابقًا، بسبب
00:35:05رقم الإصدار، لأن المهارات المختلفة قد تتغير فنحن نثبت رقم الإصدار
00:35:13للمهارات. دعوني أعد صياغة ذلك. حسنًا، الإصدارات المختلفة من مكتباتنا تتطلب
00:35:21مهارات مختلفة. الكثير من مهاراتنا تقول: يرجى النظر في (node modules)، حيث نقوم بتضمين
00:35:28الكثير من الوثائق بحيث تكون الوثائق مرتبطة بالإصدار أيضًا. وبالنظر هنا،
00:35:34يمكنك أن ترى أنه كان يقرأ بالفعل الوثائق المحلية. وهو يمر من هنا
00:35:40ويقوم بتجميع هذا البرنامج التعليمي. حسنًا. الآن، دعونا نعطي هذا..
00:35:53هذا لم يقم بأي بحث على الإطلاق. لذا سيكون هذا مثيرًا. في المرة السابقة أجريت بحثًا أكثر بكثير.
00:36:01ويمكنني أن أرى بالفعل أنه يستخدم نموذجًا قديمًا Sonnet 4 بدلاً من
00:36:074.6. إنه يستخدم شيئًا قديمًا. لقد ذكر (generate object)، وهو ليس ما نريد استخدامه. نحن
00:36:15نستخدم الإصدار السادس. وهناك بالفعل مجموعة من الأشياء القديمة تمامًا. لا أقول إنها
00:36:23خاطئة، لكنها قديمة جدًا مقارنة بما هو متاح حاليًا إذا كنت تريد أفضل أداء
00:36:28وأفضل الممارسات من SDK. حسنًا. هل التقط هذا شيئًا
00:36:37هنا؟ نعم، يبدو أن مهارة SDK التقطت.. يبدو أنها كتبت برنامجًا تعليميًا في البداية
00:36:51هنا. ثم التقطت المهارة أنه لم يتم تحديثه للإصدار السادس، دون أن أقول
00:36:58أي شيء على الإطلاق. والآن هي تقوم بالتحديث. لقد انتقلت من (generate object) إلى (generate text).
00:37:03وهي تقوم بتحديث كل شيء للتأكد من أنه على أحدث الإصدارات. حسنًا،
00:37:10يمكنني مقارنة هذين الاثنين. سأبدأ جلسة جديدة فقط. دعونا نذهب إلى هنا ونقارن
00:37:23البرامج التعليمية من نسخة بدون إضافة مقابل البرنامج التعليمي في إضافة Vercel من حيث الدقة.
00:37:44وسيكون من المثير رؤية ذلك.. في كل مرة قمت بتشغيل هذا من قبل، كتب Opus ملف markdown
00:37:48وهذه المرة قام بكتابة مقتطفات برمجية. سيكون من الممتع رؤية الفرق.
00:37:54عندما تفعل هذا، نعم، خاصة إذا كان لديك مهارات أخرى تعمل ربما جنبًا
00:38:03إلى جنب مع هذه الإضافة، هل هناك خطر من حدوث تعارض بينها وبالتالي
00:38:10تفضيل أشياء قديمة أم أن الإضافة ستحظى بنوع من الأولوية الأعلى؟
00:38:16الإضافة ستقوم بشكل أساسي، كما أقول، بحقن المهارات قسريًا بناءً على أنماطها. فإذا
00:38:27كان هناك، هناك دائمًا هذا الخطر، فالأمر كله مجرد سياق،
00:38:34مثل كل تلك الملفات النصية التي يتم حشرها في الجلسة. لذا أقول دائمًا
00:38:41استخدم فقط الأشياء التي تريدها للمشروع الذي تعمل عليه كقاعدة.. معذرة، نادرًا جدًا ما
00:38:49تثبت مهارة على مستوى المستخدم إلا إذا كنت متأكدًا أنك تريدها في كل مشروع.
00:38:58وحتى بالنسبة لإضافة Vercel، نحن نعمل على إيجاد أفضل الطرق الممكنة
00:39:06لتحميل ما تحتاجه فقط للمشروع الذي تعمل فيه. ولدينا الكثير من الأفكار حول
00:39:11ذلك. ولكن أحد أكثر الأفكار التي ربما تكون مثيرة للجدل هي، متى
00:39:23قد يقول المستخدم إنه قام بتثبيت إضافة Vercel؟ فما هو الافتراض الذي يمكن بناؤه على ذلك؟
00:39:30إذا قاموا بتثبيت إضافة Vercel، وهم على منصة منافسة، وفتحوا
00:39:35مشروعًا على منصة منافسة؟ هل يجب أن نخبرهم عن ميزاتنا؟ هذا أمر
00:39:42مثير للجدل للغاية، أليس كذلك؟ وإذا رأى شخص واحد ذلك وهو
00:39:47لم يكن يريد ذلك، وليس مهتمًا فعليًا بالهجرة إلى Vercel مثلاً،
00:39:53فسيغضب جدًا. وإذا كان شخص آخر مهتمًا، فسيكون سعيدًا جدًا. لذا هناك
00:39:59بعض الأمور المذهلة. إذا كنت تؤيد النظرية القائلة بأن الجميع
00:40:05سيتفاعلون فقط مع الوكلاء.. فما هي آداب السلوك في الإضافة أو في إبلاغ
00:40:15الوكلاء بالشيء الجديد الرائع على منصتك دون مضايقة
00:40:24المنصات الأخرى. وهكذا هناك الكثير من الأشياء. هذا وثيق الصلة
00:40:31بما أفعله الآن حيث سنقوم بإطلاق (workflow) رسميًا قريبًا جدًا. لذا أنا أكتب
00:40:37أدلة الهجرة. إذا أراد شخص الهجرة من أحد منافسي (workflow)، فذلك
00:40:43يمكنه استخدام مهارة مباشرة لتقول "انتقل من هذا إلى workflow". هكذا تفعل ذلك،
00:40:49هكذا تنجزه. إذا أردت فعل ذلك، في أي نقطة في الوكيل سأخبر
00:40:55شخصًا ما بذلك؟ وهذا النوع من الأشياء مثير للاهتمام حقًا بالنسبة لي. خاصة أنه
00:41:00في مقدمة اهتماماتي بما أن هذا ما أعمل عليه حاليًا. ولكن نعم، مثل
00:41:07تعارضات السياق، ستكون مشكلة في المستقبل. لا أعرف كيف نحاول
00:41:14استنتاج ما يريده المستخدم بناءً على سياق مشروعه وما طلبه حتى الآن.
00:41:19سيكون أمرًا رائعًا.. يمكننا تقنيًا النظر في المحادثات السابقة ومعرفة ما
00:41:27فعلوه. يمكننا النظر في سجل التعديلات (commit history). يمكننا إخبار واجهة GitHub لتقوم بالنظر
00:41:35في أي شيء في المشروع. هناك الكثير من الأشياء التي يمكنك فعلها لجمع السياق،
00:41:40ولكن هذا أيضًا يتجاوز بعض الحدود، مثل استدعاء أدوات لم يطلبوا منك استدعاءها.
00:41:46الكثير من الأشياء المثيرة للاهتمام حقًا، حيث إنه من الأسهل القيام بكل شيء
00:41:53في Vercel وامتلاك وكيل واحد مع مجموعة محددة
00:42:00من القواعد وإضافة تشحن كل شيء بجمال هناك، وعدم
00:42:05الاضطرار للقلق بشأن كل تلك التعارضات. على أي حال. أردت ذكر ذلك، نعم.
00:42:14في سياق الإضافة، متى تكون مهاراتنا عادةً.. في أي نقطة من هذه العملية؟
00:42:19على سبيل المثال، إذا كان لدي مهارة مثل "تحويل تطبيق React إلى Next.js"، وكانت
00:42:26موجودة في مجلد مهاراتي، فهل من المرجح أن يتم استدعاؤها تلقائيًا في أي وقت
00:42:32أكون فيه في مشروع تطبيق React؟ مقابل مثلاً، إذا كان لدي إضافة Vercel هنا، يمكنني
00:42:39حينها تحديد متى سيتم استدعاؤها، وإذا قمت ببناء نفس عملية التحويل كإضافة،
00:42:47يمكنني جعلها لا تحدث إلا إذا طلب المستخدم ذلك صراحة. هل هذا التصور صحيح؟
00:42:52أعتقد ذلك. نحن نتحدث عن
00:42:59مفهوم المهارات ذات المرة الواحدة أو المهارات أحادية الاستخدام والتي تشبه: أريد
00:43:06القيام بشيء مثل عملية الهجرة، وهي مهمة لديك، أو
00:43:12مهارة مرتبطة بمهمة لا تريد تحميلها في أي وقت آخر إلا لتلك المهمة.
00:43:17تريدها محصورة في المهمة. لا تريدها محصورة في المشروع.
00:43:22لا تريدها محصورة في المستخدم، بل تريدها محصورة في المهمة. وهذه مناقشات
00:43:27نجريها. وأعتقد أنني ليس لدي إجابة رائعة لأنه في الوقت الحالي، إذا كان لديك
00:43:33مهارة كهذه محملة، فإنها ستؤثر في النظام والنماذج بناءً
00:43:41على النموذج وبناءً على المهارات الأخرى. من الصعب جدًا قول ذلك دون معرفة ما
00:43:47يوجد أيضًا في المشروع. ولكن نعم، هذا بالتأكيد في مقدمة اهتماماتنا، مثل
00:43:55المهارات المحصورة في مهام معينة. سؤال آخر يدور في ذهني هنا هو كم
00:44:04من بنية هذه الإضافة خاص بـ Claude Code. فإذا أردت الحصول على سلوك مماثل
00:44:12في Cursor أو Codex أو غيرهم، فهل لديهم تنسيق إضافات خاص بهم؟ هل أحتاج
00:44:18إلى إضافة لكل منهم؟ كيف يعمل ذلك؟ نعم. يجب أن يكون لدينا بعض الإعلانات
00:44:25قريبًا حول المواصفات الخاصة بالإضافات واتفاق الجميع على وجود
00:44:33إضافات تعمل بشكل عالمي وتوافق متبادل. الجميع تقريبًا
00:44:39موافقون على ذلك. لا أقول اليوم تمامًا، ولكن إذا بنيت إضافة بتنسيق Claude Code،
00:44:45أن تتوقع أنه سيعمل مع الأدوات الأخرى في وقت قصير.
00:44:54ولكن نعم، هذا رائع. هناك الكثير من مجلدات المهارات بالفعل. أنا سعيد حقاً لأننا بدأنا
00:45:00أخيراً في توحيد المعايير هنا. نعم، بمجرد أن تكون الفكرة، مثلما أحببتُ عندما
00:45:07كنت أتحدث مع Anthropic حول الإضافات (plugins)، والسبب في اختيارهم كلمة "إضافة" بدلاً
00:45:13من كلمة "امتداد" (extension) هو أن الإضافة تعني شيئاً يمكنك تركيبه وشيئاً
00:45:18يمكنك فصله. لذا إذا قمت ببناء إضافة بمجموعة من المهارات، وتريد فقط
00:45:24استخدامها مجدداً لمهمة واحدة فقط، فهذا أمر يجب أن يكون قابلاً للتنفيذ بسهولة.
00:45:33إذا كنت في مشروعي، وأنا مصمم، ولا أريد لكل مهارات التصميم الخاصة بي
00:45:40أن تتدخل في جميع مهارات المطور أو غير ذلك. فأنت تريد أن تكون قادراً على
00:45:46توصيل تلك القطع فقط. وأعتقد، أنني أتفق بشدة مع هذه المفاهيم وهي أن
00:45:52الأفراد سيكون لديهم مهامهم وأدوارهم ومشاريعهم الفردية. وسوف
00:45:59يفضلون الإضافات على المهارات، لأنهم يستطيعون، وربما سيرغبون أيضاً
00:46:05في تنظيم إضافاتهم الخاصة، مثل بناء مجموعتهم الخاصة من المهارات والروابط وكل شيء
00:46:10بحيث تكون مخصصة تماماً للطريقة التي يعملون بها.
00:46:16هل هذا يعني أنه يجب علي التفكير ربما في فصل إضافة Vercel إذا
00:46:21كنت أعمل على مشروع لا علاقة له بـ Vercel؟
00:46:25أود أن أقول، كما هو الحال اليوم، نعم، بسبب مدى عدوانية الإضافة
00:46:34في المضي قدماً. وآمل ألا أقع في مشكلة مع شخص ما بقول ذلك. ولكن
00:46:39النية الكاملة من إضافة Vercel هي، إذا كنت تريد تحميل وكيلك (agent)
00:46:46وتقول له، ابنِ لي هذا الشيء. ثم يظهر هذا الشيء بشكل سحري تقريباً
00:46:53على Vercel. هذا هو الهدف الأولي. ونحن نرى كيف يعمل ذلك. وبناءً
00:46:59على التعليقات التي نتلقاها، نتراجع قليلاً ونرى أننا بالتأكيد بحاجة
00:47:04إلى القيام بمزيد من الكشف عن محتوى المشروع لتعطيل الميزات وكل هذه الأنواع من الأمور.
00:47:09وهذا قادم قريباً جداً جداً. لذا، كما تعلم، ربما
00:47:15أبقِها مثبتة ومفعلة لأننا نعمل بنشاط
00:47:18على ذلك، مثلما كنا نتحدث صباح اليوم. لذا
00:47:23أرى ذلك. إذن هي نوع من المقايضة حيث ربما في المستقبل، ستفهم الإضافة بشكل أفضل
00:47:29متى يجب أن تفعل نفسها. ولكن حالياً، الطريقة التي يتحكم بها المستخدم في ما إذا كانت
00:47:36هذه الإضافة تعمل أم لا هي من خلال تركيبها أو فصلها لجلسة مختلفة.
00:47:42نعم. وحالياً، إذا كتبت فقط "slash plugin"، يمكنك الذهاب إلى إضافاتك المثبتة،
00:47:48فقط تنقل بين التبويبات، ويمكنك الذهاب إلى أي إضافة تريد تعطيلها. ويمكنك التحديث
00:47:54أو إلغاء التثبيت أو فعل ما تريد. لذا يمكنك تعطيلها بهذه الطريقة. وهناك
00:48:03خدع أخرى أكثر تقدماً مثل إعداد وظائف ZSH مخصصة
00:48:10تقوم بتحميل مجموعات محددة من الإعدادات لأي مستخدم؛ الأمر كله غريب نوعاً ما،
00:48:17فكرة الملف الشخصي للشخص الذي يجلس أمام الكمبيوتر. و
00:48:23ما هي جميع الإضافات التي يريدونها بناءً على ما ينظرون إليه؟ ولا يوجد
00:48:29حل مثالي لذلك حالياً. نأمل أن نتمكن من إيجاد حل.
00:48:34الأمر يشبه عندما تقترب سيارة Waymo وتقوم بتعديل جميع المقاعد لتكون جاهزة لك في اللحظة
00:48:39التي تدخل فيها.
00:48:40نعم، نعم. وأعتقد، في مرحلة معينة، أتخيل أننا سنرى الوكلاء يسألونك
00:48:49أكثر عن نفسك. أشعر أن هذا جزء كبير، مفهوم الهوية والملف الشخصي والدور،
00:48:57والذي يبدو لي كقطعة مفقودة. إلا إذا كنت تريد أن تفترض أن الجميع الآن
00:49:05أصبحوا بمثابة مدير مشروع كامل لعملية برمتها. أنا فقط لا أرى ذلك قريباً.
00:49:12أشعر فقط أن بعض الناس لديهم أفكار أفضل حول بعض الأشياء من غيرهم.
00:49:19لذا
00:49:20نعم، دعونا نراجع هذا. ما المثير للاهتمام؟ لنرى، هذه نعم،
00:49:33من المثير للاهتمام أنني أجعل Opus يراجع Opus ولا يزال الأمر خاطئاً، أليس كذلك؟
00:49:37لا يزال يوصي بـ generate object و v6. دعونا نقوم بالتحقق مقابل المستندات. لذا يحاول
00:49:50التحقق ويقول إن الكود الذي كتبته غير صحيح. هذا
00:49:56لا يزال يظهر كصالح ولكنه قديم. لذا، فإن Haiku الخاص بنا أوصى بأحدث النماذج،
00:50:05وبالنسبة لي، هذا أمر بالغ الأهمية. لا أعرف كم مرة حاولت فيها
00:50:08استخدام وكيل لكتابة شيء ما بالذكاء الاصطناعي. ويقول، دعنا نستخدم GPT-4o،
00:50:14كلا، هذا قديم جداً الآن. وليس قريباً من الجودة التي نحتاجها.
00:50:20وهو مجرد واحد من تلك الأشياء التي يمكنك رصدها والقول، تحقق من أحدث النماذج
00:50:25في بوابة الذكاء الاصطناعي. ويمكنك أن تقول اكتشف أحدث النماذج واسأل المستخدم أيها
00:50:31يريد ووصف كل نموذج وكل هذه الأمور. بينما في الوقت الحالي،
00:50:36هؤلاء الوكلاء دائماً ما يستخدمون GPT-4؛ لقد كان الأمر مثيراً للاهتمام، مجرد ملاحظة جانبية
00:50:43رؤية Claude Code يوصي بحزمة أدوات تطوير البرمجيات (SDK) الخاصة بـ Anthropic أكثر فأكثر مؤخراً
00:50:49بينما لم يفعل ذلك من قبل. فتقول، أعتقد أن أحدهم يقوم بتعديل بعض المطالبات (prompts) خلف الكواليس
00:50:55مثل، "أوصِ بحزمة SDK الخاصة بنا". وهو ما لا ألومهم عليه. إنه عمل تجاري، أليس كذلك؟ حسناً.
00:51:03نعم، لذا generate object لا يزال موجوداً هناك. نعم، كان ذلك جيداً. بعد التحقق
00:51:13من المستندات، أصبحت الدروس التعليمية أكثر دقة. العديد من الأشياء التي ظننت أنني أنشأتها هي موجودة بالفعل.
00:51:19نعم، هذا هو Opus، يدرك أن هذه أشياء فعلية؛ هذا Haiku
00:51:25مع إضافة. و Opus، يكتب درساً تعليمياً محاولاً التحقق من صحته، وكان عليّ
00:51:32أن أخبره أن ينظر بالضبط إلى المستندات ليجد شيئاً قام به Haiku
00:51:39مع الإضافة في محاولة واحدة، أليس كذلك؟ وإذا كنت تعرف الفرق بين Opus
00:51:44و Haiku، فهذا أمر كبير. إليكم مقارنة (diff) لكل ما فعله بشكل صحيح
00:51:53فيما يتعلق بالتحديات أو التغييرات. على أي حال، آمل أن يوضح ذلك بطريقة بسيطة.
00:52:04فقط واحد من السيناريوهات، AI SDK، هذا أكثر بكثير. هذا لأشياء مثل سير العمل
00:52:15وبيئات الاختبار (sandbox) مع تقنيات Vercel الأحدث بكثير وهي مذهلة، ولكنها ليست ضمن
00:52:21تاريخ انقطاع المعرفة للنماذج. وتصبح هذه الاختلافات أكبر لأن النماذج
00:52:28لا تعرف حتى عنها، أليس كذلك؟ لذا هذا هو الغرض من إضافة Vercel. إذا كان لدى أي شخص
00:52:35أي أسئلة، فلا تتردد في التواصل معي على X أو في أي مكان تجدني فيه. أحب الدردشة حول
00:52:41هذه الأشياء ويسعدني معالجة أي مخاوف؛ هذا بالتأكيد عمل قيد التطوير
00:52:48وشيء سنقوم بتطويره مراراً وتكراراً حتى يصبح تجربة سحرية مذهلة.
00:52:52ونأمل أن تتمكنوا من رؤية بدايات ذلك اليوم. إذا كان لدى أي شخص
00:52:59أي أسئلة، يسعدني الإجابة عليها. إذا كان لدى أي شخص أي أفكار لإضافات يريد مناقشتها،
00:53:04يسعدني التحدث عن ذلك أيضاً. لذا هذا هو، ما لم
00:53:14يريدني أحد أن أتعمق في شيء آخر. هذا ما لدي لتغطيته اليوم.
00:53:20أقدر لك حقاً تخصيص الوقت. هناك الكثير لاستيعابه. إنه تحول كبير. لقد كنا
00:53:25نتحرك بسرعة كبيرة مع كل أدوات الذكاء الاصطناعي هذه.
00:53:28نعم، وللأسف لن تتباطأ الأمور.
00:53:33أحد الأسئلة لدي هو إذا أراد الناس المساهمة بأي شكل من الأشكال، أو إذا وجدوا خطأ وأرادوا
00:53:38الإبلاغ عنه، ما هي أفضل طريقة لإيصال ذلك إليك؟
00:53:41أوه، نعم، المستودع (repo) الخاص بها. vercel/vercel-plugin أو هل هو vercel/
00:53:49vercel-plugin؟
00:53:51نعم، vercel/vercel-plugin.
00:53:58حسناً. سأضع ذلك في الدردشة أيضاً ليكون متاحاً للناس.
00:54:03شكراً. نعم، وضع المشكلات (issues) هناك أمر رائع. سيتغير الأمر بسرعة. أعلم أنني وافقتُ
00:54:10على طلب سحب (PR) كبير قبل هذه المكالمة مباشرة.
00:54:14رائع. حسناً، جاكوب، أي أسئلة أخرى منك؟
00:54:20لا، لا، أعتقد أننا غطينا كل شيء في البث المباشر. نعم، شكراً على تقديم
00:54:24عرض توضيحي متعمق ورائع كهذا. أشعر أنني مستعد لبناء إضافات Claude الخاصة بي
00:54:30هنا الآن. وبدلاً من مجرد الصراخ في وجه الوكيل عندما يقرر فرض الدفع (force push) إلى الفرع الرئيسي
00:54:37لي، أعرف الآن أي الروابط (hooks) يجب أن أخبره باستخدامها للتأكد من عدم قيامه
00:54:42بذلك مرة أخرى. لذا هذا مفيد جداً.
00:54:45أدوات ما قبل التنفيذ (pre-tools) هي صديقك وأفضل دفاع لك ضد الأشياء التي لا تريد حدوثها.
00:54:51رائع. شكراً جزيلاً لك يا جون. بالطبع. شكراً للجميع.
00:54:56وشكراً لكم جميعاً لانضمامكم إلينا. يمكنكم العثور على الجلسات القادمة في [community.vercel.com/events](https://community.vercel.com/events).
00:55:01وسنراكم في المرة القادمة.
00:55:05أجل، أجل. سأراكم في المجتمع. طاب يومكم جميعاً.

Key Takeaway

تسمح إضافة Vercel لـ Claude Code لنموذج Haiku المنخفض التكلفة بالتفوق على Opus في دقة البرمجة عبر حقن سياق لحظي يتجاوز تاريخ انقطاع معرفة النماذج بـ 12 شهراً.

Highlights

تتجاوز المكونات الإضافية (Plugins) لـ Claude Code نظام المهارات التقليدي من خلال دمج خطافات (Hooks) برمجية تتحكم في دورة حياة الجلسة بالكامل.

تعالج إضافة Vercel مشكلة انقطاع المعرفة في النماذج (Knowledge Cutoff) التي تتراوح بين 6 أشهر وسنة من خلال حقن أحدث وثائق AI SDK و Next.js و Workflow.

يتفوق نموذج Haiku 4.5 المزود بإضافة Vercel على نموذج Opus 4.6 الخام في دقة كتابة الكود البرمجي لأحدث إصدارات Vercel SDK رغم فارق التكلفة الضخم.

تسمح خطافات ما قبل استخدام الأداة (pre-tool use) بمنع الوكيل برمجياً من تنفيذ أوامر خطيرة مثل Force Push أو كتابة كود قديم قبل حدوث التغيير فعلياً.

يوفر معيار المكونات الإضافية الجاري تطويره توافقاً مستقبلياً يتيح تشغيل نفس الإضافة عبر محررات مختلفة مثل Cursor و CodeX و Claude Code.

Timeline

تطور المكونات الإضافية ومعايير التوافق العالمي

  • تمثل المكونات الإضافية الجيل التالي من مهارات الوكلاء لتمكين مهام معقدة لم تكن متاحة سابقاً.
  • يوجد جهد مستمر لتوحيد معايير المكونات الإضافية لتعمل عبر جميع المحررات مثل Cursor و CodeX.
  • تسمح المعايير الجديدة بحزم المكونات ومشاركتها كأدوات متكاملة بدلاً من مجرد تعليمات نصية.

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

الفرق الجوهري بين المهارات اليدوية والخطافات البرمجية

  • تعتمد المهارات التقليدية على ملفات Markdown واستدعاء يدوي أو اكتشاف مبني على الوصف فقط.
  • توفر المكونات الإضافية خطافات (Hooks) ترتبط بدورة حياة الجلسة من البداية وحتى النهاية.
  • تسمح دورة حياة الجلسة بالتدخل البرمجي عند إرسال الطلبات أو قبل تنفيذ الأدوات وبعدها.

تعتبر المهارات مجرد تلميحات نصية غالباً ما يتجاهلها الوكيل أو يخطئ في توقيت استخدامها. في المقابل، تمنح الخطافات المبرمج سيطرة كاملة على ما يحدث في كل مرحلة من مراحل المحادثة. يتضمن ذلك القدرة على تعديل سلوك الوكيل بناءً على أحداث معينة داخل بيئة التطوير.

حل مشكلة انقطاع معرفة النماذج باستخدام إضافة Vercel

  • تهدف إضافة Vercel إلى منع الوكلاء من كتابة كود قديم أو اتباع ممارسات تقنية تجاوزها الزمن.
  • تعمل الإضافة كجدول محتويات (Table of Contents) يحقن أحدث خرائط المعرفة والوثائق في بداية الجلسة.
  • يتم توجيه الوكيل لاستخدام AI SDK و Workflow و Gateway دون الحاجة لطلب ذلك صراحة.

تعاني معظم النماذج الذكية من فجوة معرفية تصل إلى عام كامل، مما يجعلها غير مدركة للتحديثات السريعة في منصة Vercel. تقوم الإضافة بحقن ملف vercel.md الذي يحتوي على مسرد للمصطلحات وروابط الوثائق الأحدث. هذا يضمن أن الوكيل سيتحدث بلغة المنصة الحالية ويستخدم أحدث الميزات تلقائياً.

إدارة إصدارات المكتبات وفحص سياق المشروع المحلي

  • تفحص الإضافة ملف package.json محلياً لتحديد إصدارات المكتبات المثبتة وتوجيه الوكيل بناءً عليها.
  • تتعامل المكونات الإضافية مع تغيرات واجهة البرمجة (API) بين الإصدارات المختلفة دون تدخل المستخدم.
  • يسمح معرف الجلسة الفريد بتتبع المهارات المحملة ومنع تكرار الجهود أو استهلاك ميزانية الرموز (Tokens) دون داعٍ.

بدلاً من إجبار المستخدم على تحديد الإصدارات، تقوم الإضافة بقراءة بيئة المشروع المحلية وفهم القيود التقنية. إذا كان المشروع يستخدم إصداراً قديماً من SDK، فإن الإضافة تمنع الوكيل من اقتراح دوال لا تعمل إلا في الإصدارات الأحدث. تعمل الجلسة كنظام تخزين مؤقت يحافظ على كفاءة العمل وتناسقه.

خطافات التحكم: منع الأخطاء قبل حدوثها وتنظيف الجلسة

  • يسمح خطاف ما قبل الاستخدام (pre-tool) بمقارنة الفوارق (Diffing) ومنع التغييرات غير الصحيحة برمجياً.
  • يوفر خطاف إرسال الطلب (user prompt submit) إمكانية تشغيل تعبيرات نمطية (Regex) لاكتشاف كلمات مفتاحية وحقن مهارات فورية.
  • تُستخدم نهاية الجلسة (session end) لتنظيف الملفات المؤقتة أو فحص جودة التغييرات النهائية في المشروع.

تعمل هذه الخطافات كخط دفاع أول ضد أخطاء الذكاء الاصطناعي الشائعة. يمكن للمبرمج برمجة الإضافة لتنبيه الوكيل إذا حاول استخدام دالة ملغاة قبل أن يقوم بكتابة الملف فعلياً. كما تتيح نهاية الجلسة فرصة لمراجعة التقدم المحرز والتأكد من عدم وجود زوائد برمجية ناتجة عن عمل الوكيل.

مقارنة الأداء: نموذج Haiku المدعوم مقابل نموذج Opus الخام

  • أظهر العرض التوضيحي أن Haiku المزود بالإضافة استخدم دالة generateText الحديثة بينما اقترح Opus دالة قديمة.
  • تتيح الإضافة للمستخدمين استخدام نماذج أرخص وأسرع مع الحصول على نتائج تفوق النماذج الأغلى في مجالات تخصصية.
  • يوفر المستودع vercel/vercel-plugin وسيلة للمجتمع للمساهمة في تحسين قواعد الكشف والتحويل البرمجي.

في اختبار عملي، نجح نموذج Haiku الصغير في كتابة درس تعليمي دقيق لأحدث إصدارات AI SDK بفضل الإضافة، بينما فشل نموذج Opus الأقوى في ذلك لاعتماده على بيانات تدريبه القديمة. يثبت هذا أن السياق المحقن عبر الإضافات أهم من حجم النموذج في المهام البرمجية المتطورة. الإضافة حالياً في مرحلة تطوير نشطة وتستقبل مساهمات المجتمع لتحسين دقتها.

Community Posts

View all posts