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أجل، أجل. سأراكم في المجتمع. طاب يومكم جميعاً.