00:00:00[موسيقى]
00:00:02مرحباً، اسمي ماريو.
00:00:04أنا آتٍ من بلاد أرنولد شوارزنيجر،
00:00:06وهو أمر ربما لم تلاحظوه بعد
00:00:09بناءً على لغتي الإنجليزية الممتازة.
00:00:12أود أن أمهد لهذا بالقول إننا
00:00:13كنا نركض خلف طفلنا البالغ من العمر أربع سنوات طوال اليوم
00:00:16في أنحاء لندن.
00:00:17لذا ذهبنا لرؤية الديناصورات، والمومياوات، ومطعم ناندوز بالطبع،
00:00:24وأشياء أخرى نسيتها بالفعل.
00:00:26أنا متعب جداً جداً.
00:00:28وإذا لم تفهموا أي شيء أقوله،
00:00:31فقط ارفعوا أيديكم وقولوا: استيقظ يا جدي.
00:00:36السبب في وجودي هنا هو في الواقع شخص آخر،
00:00:39موجود هنا في "كوكنفيل" اليوم.
00:00:40دعونا نسميه "شتيتر باينبرجر".
00:00:44في عام 2025، أعتقد في شهر أبريل تقريباً،
00:00:53أخبرني أنا وأرمين روناشا، الذي ربما تعرفونه أيضاً
00:00:58من شهرة Flask وSentry، قائلاً: يا رجل، وكلاء البرمجة هؤلاء،
00:01:02إنهم يعملون فعلياً الآن.
00:01:04فقلت له: أوه، اصمت بحق الجحيم.
00:01:06عذراً، أنا أستخدم كلمات نابية أيضاً.
00:01:09بالطبع لا.
00:01:10وبعد شهر، اجتمعنا في هذه الشقة لمدة 24 ساعة
00:01:13طوال الليل وانغمسنا تماماً في عالم الآلات،
00:01:19وفي عالم مسح الأكواد والبرمجة السريعة.
00:01:21ومنذ ذلك الحين، لم ينم أي منا--
00:01:23لم نعد ننام حقاً، بشكل أساسي.
00:01:27لذا كنا نبني أشياء، الكثير من الأشياء، ومعظمها
00:01:32لم نستخدمه أبداً، لأن هذا هو الشيء الجديد في عام 2025،
00:01:36عام 26.
00:01:37نحن نبني الكثير من الأشياء، لكننا لا نبني الكثير من الأشياء
00:01:39التي نستخدمها بالفعل.
00:01:40كتبنا الكثير من الأشياء.
00:01:42وفي النهاية، توج ذلك بتفكيري،
00:01:46مهلاً، أنا أكره كل وكلاء البرمجة أو الأطر الموجودة حالياً.
00:01:50ما مدى صعوبة كتابة واحد بنفسي؟
00:01:53وكان بيتر يقول: أوه، أريد فقط القيام بشيء ما.
00:01:56ربما لن يسمع عنه أحد.
00:01:58وسيكون بمثابة مساعد شخصي،
00:02:01لأن هذا ما أردت دائماً الحصول عليه.
00:02:03معظمكم يعرف على الأرجح كيف سارت قصته.
00:02:05لذا سأخبركم اليوم بقصتي الأقل إثارة للإعجاب بكثير.
00:02:08لكنني آمل أن أتمكن من نقل بعض الدروس،
00:02:11كما نقول في الصناعة، التي تمكنت من جمعها
00:02:16في الأشهر القليلة الماضية.
00:02:17لذا، باي (Pi).
00:02:19في البداية، كان هناك Cloud Code.
00:02:21في الواقع، كان هناك النسخ واللصق من ChatGPT.
00:02:25لقد فعلنا جميعاً ذلك في البداية، في عام 2023.
00:02:27ثم كان هناك-- من يتذكر GitHub Copilot الأصلي؟
00:02:32نعم، في الواقع، كم منكم مهندسون؟
00:02:35وكم منكم يستخدم وكلاء البرمجة،
00:02:37مثل Cursor وCloud Code؟
00:02:39حسناً.
00:02:40اختبار شعبية، من يستخدم Cloud Code؟
00:02:43Codex CLI؟
00:02:45Cursor؟
00:02:48أوبن--
00:02:48[غير مسموع]
00:02:49نعم.
00:02:50Open Code؟
00:02:50Anti-gravity.
00:02:51أوه، هذا ليس عدداً كبيراً.
00:02:52هل يستخدم أي شخص هذا؟
00:02:55أنا معجب بك.
00:02:56سنتناول مشروباً معاً لاحقاً.
00:02:58على أي حال، كان هذا أساساً ما حدث في عام 2025
00:03:03وما قبله.
00:03:04بدأ الأمر بالنسخ واللصق من ChatGPT.
00:03:06كان جله معطلاً في الغالب.
00:03:07كان معظمه عبارة عن دوال برمجية منفردة، أشياء لا ترغب في كتابتها.
00:03:10ثم حصلت على GitHub Copilot داخل
00:03:13Visual Studio Code، حيث تكتفي بالضغط باستمرار للوصول للحل،
00:03:15وهو ما نجح أحياناً، وفشل في أغلب الأوقات.
00:03:17أحياناً كان أيضاً يكتفي باسترجاع كود GPL،
00:03:22مثل خوارزمية الجذر التربيعي العكسي لجون كارماك
00:03:25وأشياء من هذا القبيل، وهو ما كان ممتعاً جداً.
00:03:29ثم كان هناك Adir.
00:03:30هل يتذكر أحد Adir؟
00:03:31نعم.
00:03:32يا كبار السن.
00:03:33مرحباً بكم.
00:03:33نعم.
00:03:37لديك شعر رمادي.
00:03:37أنت تعرف Adir بالتأكيد.
00:03:41كان هناك أيضاً AutoGPT.
00:03:43ربما ليس لعدد كبير.
00:03:44نعم، حسناً.
00:03:45إنه يعرف كل هذه الأشياء.
00:03:48وفي النهاية ظهر Cloud Code.
00:03:51أعتقد أنهم أطلقوه في نوفمبر،
00:03:52في الواقع، كنسخة تجريبية في عام 2024.
00:03:55لكنه بدأ في الانتشار فعلياً، متى قلت؟
00:03:59فبراير فقط.
00:04:01نعم، فبراير أو مارس، في حدود ذلك الوقت من عام 2025.
00:04:03وكنت أقول: أنا أحبه.
00:04:05إنه رائع.
00:04:06فريق Cloud رائع أيضاً.
00:04:07إنهم متواجدون على وسائل التواصل.
00:04:08وجميعهم أشخاص طيبون وموهوبون جداً.
00:04:13وهم أساساً من ابتكر هذا النوع من الأدوات بالكامل.
00:04:15أعلم أنه كانت هناك بوادر مثل Adir وAutoGPT،
00:04:18لكن لم يسبق لشيء أن فعل هذا.
00:04:20وكان هذا أساساً هو مفهوم البحث القائم على الوكلاء.
00:04:22فبدلاً من قيام Cursor بالدخول إلى قاعدة الكود الخاصة بك،
00:04:25وفهرسة الأشياء، وبناء أشجار بنية مجردة (ASTs)، وفهرستها أيضاً.
00:04:29وهو أمر لم يكن يعمل حقاً.
00:04:31لقد قالوا ببساطة: لا بأس.
00:04:33لقد قمنا بتدريب نماذجنا عبر التعلم المعزز
00:04:35على استخدام أدوات الملفات وأدوات bash،
00:04:37لاستكشاف قاعدة الكود الخاصة بك بشكل فوري وإيجاد الأماكن التي
00:04:41تحتاج إليها لفهم الكود ومن ثم تعديله.
00:04:44وقد نجح هذا بشكل جيد لدرجة أننا، نعم،
00:04:46توقفنا عن النوم لأننا فجأة
00:04:48أصبح بإمكاننا إنتاج كود أكثر بكثير مما كنا ننتجه يدوياً.
00:04:52في ذلك الوقت، كان الأمر بسيطاً ومتوقعاً
00:04:54وكان يناسب سير عملي تماماً.
00:04:57جميل.
00:04:58لكنهم وقعوا بعد ذلك في الفخ الذي يقع فيه معظمنا
00:05:05على الأرجح.
00:05:06بإمكان هذه الآلات كتابة الكثير من الأكواد.
00:05:08لماذا لا نجعلها تكتب كل الميزات التي قد نتخيلها، أليس كذلك؟
00:05:11أليس هذا رائعاً؟
00:05:11لنضف هذه الميزة، وتلك الميزة،
00:05:12وهذه الميزة، وتلك الميزة.
00:05:14وفي النهاية، ينتهي بك الأمر مع شيء مثل سيارة هومر سيمبسون--
00:05:15لا أعرف حتى ماذا يطلقون عليها.
00:05:18أنا أسميها سفينة فضاء.
00:05:20وأصبح Cloud Code الآن بمثابة سفينة فضاء.
00:05:21فهو يفعل الكثير من الأشياء التي ربما تستخدم منها
00:05:23فقط 5% مما يقدمه.
00:05:26أنت تعرف فقط حوالي 10% منها في المجمل.
00:05:28أما الباقي، الـ 90% المتبقية،
00:05:30فهي تشبه المادة المظلمة في عالم الذكاء الاصطناعي والوكلاء.
00:05:33لا أحد يعرف ما الذي تفعله حقاً.
00:05:36وأنا شخصياً أجد أن هذا ليس مفيداً جداً
00:05:37لأنني ما زلت أعتقد أنك بحاجة
00:05:40لمعرفة ما يفعله الوكيل.
00:05:43هذا الشخص قد يختلف معي إلى حد ما.
00:05:45ونحن هنا في TESOL، وهم يحبون أيضاً
00:05:49إدارة السياق أو هندسة السياق،
00:05:51كما أطلقنا عليها.
00:05:54وفي النهاية وجدت أن Cloud Code لم يكن
00:05:55أداة جيدة عندما يتعلق الأمر بقابلية الملاحظة
00:05:58وإدارة سياقك فعلياً.
00:06:01ثم كان هناك هذا أيضاً.
00:06:04من يحب هذا في Cloud Code، مثل الكميات الهائلة
00:06:06من الوميض غير المبرر؟
00:06:09حسناً، في الواقع، أنا أعرف كيف أشرحه ولماذا يحدث،
00:06:10لكنهم لم يصلحوه بعد.
00:06:13هذا طارق.
00:06:15إنه رائع حقاً.
00:06:16أنا أحبه.
00:06:16إنه مسؤول علاقات المطورين لديهم، غالباً على تويتر، وهو مذهل.
00:06:17لكنه أحياناً يقول أشياء مثيرة للجدل
00:06:21مثل: واجهة المستخدم الطرفية الخاصة بنا أصبحت الآن محرك ألعاب.
00:06:24الآن، يجب أن تعرفوا أن لدي خلفية في تطوير الألعاب.
00:06:27هذا هو المجال الذي أتيت منه.
00:06:30وعندما أقرأ شيئاً كهذا،
00:06:31فإنه يؤلمني قليلاً
00:06:32لأنها مجرد واجهة مستخدم طرفية عادية يا رجل.
00:06:34ليست محرك ألعاب.
00:06:37صدقني.
00:06:38السبب الوحيد الذي يجعلك تعتقد أنها محرك ألعاب
00:06:39هو أنك تستخدم React في واجهتك الطرفية،
00:06:41ويستغرق الأمر حوالي 12 ميلي ثانية
00:06:44لإعادة رسم مخطط واجهة المستخدم بالكامل.
00:06:45فقط لا تفعل ذلك يا رجل.
00:06:49إنه ليس محرك ألعاب، أليس كذلك؟
00:06:51وبعد ذلك ميتشل، الذي يكتب Ghosty،
00:06:54قال: يا رجل، هذا مهين.
00:06:56لا تلم Ghosty أو أي محطة طرفية أخرى.
00:06:59كودك هو القمامة.
00:07:02المحطات الطرفية يمكنها العرض بمئات
00:07:04الإطارات في الثانية، وبأقل من ميلي ثانية للإطار الواحد.
00:07:05لذا لا تفعل ذلك، حسناً؟
00:07:09وفي النهاية قاموا بإصلاح الوميض.
00:07:12لكن بعد ذلك حدثت أشياء أخرى.
00:07:15كأنهم استسلموا تماماً لفكرة البرمجة بالحدس.
00:07:16ويمكنك الشعور بذلك كل يوم عند استخدام Cloud Code.
00:07:20الآن، مرة أخرى، لا أريد التقليل من جهودهم
00:07:23ونتائجهم.
00:07:27فما زال Cloud Code هو الرائد في فئته لسبب وجيه.
00:07:28هم من اخترعوا هذا الشيء، ويقومون بعمل رائع.
00:07:30أنا شخصياً مجرد شخص مسن
00:07:32يحب الأدوات البسيطة التي يمكن توقع نتائجها.
00:07:34وهذا ببساطة لم يعد يناسب سير عملي واحتياجاتي.
00:07:37لذا، نعم.
00:07:41أيضاً، هم يقومون بالكثير من الأشياء في الخلفية،
00:07:42ويتلاعبون بسياقك.
00:07:44لقد بنيت مجموعة من الأدوات في صيف 2025
00:07:46تسمح لي باعتراض الطلبات التي يتم إرسالها
00:07:50إلى خادمهم من Cloud Code واكتشاف
00:07:52أي نوع من النصوص الإضافية الصغيرة
00:07:55التي يتم حقنها في سياقك من وراء ظهرك.
00:07:58وكل ذلك كان ضاراً جداً
00:08:00وكان يتغير طوال الوقت أيضاً.
00:08:01فكأنما كل يوم أو يومين، يكون
00:08:04هناك إصدار جديد يغير ما يتم حقنه ومتى،
00:08:06سيكون هناك إصدار جديد يغير ما
00:08:08يتم حقنه وفي أي نقطة، مما قد يفسد
00:08:11سير عملك الحالي.
00:08:13لم تكن أداة مستقرة ببساطة.
00:08:14والآن أفهم الأمر من منظورهم.
00:08:16إنهم بحاجة إلى التجربة.
00:08:17ولديهم قاعدة مستخدمين ضخمة.
00:08:18ومن الصعب جداً التجربة
00:08:19عندما يكون لديك قاعدة مستخدمين ضخمة.
00:08:21لكنهم لم يكترثوا.
00:08:23لذا كان علينا جميعاً أن نعاني.
00:08:25أنت تعمل مع هذه الأداة الجديدة.
00:08:27وتحاول إنشاء سير عمل يمكن التنبؤ به.
00:08:31ثم يغير بائع الأداة شيئاً صغيراً جداً
00:08:35في الخفاء يجعل نموذج اللغة الكبير
00:08:36يجن جنونه مع سير عملك الحالي.
00:08:38هذا ليس مستداماً ببساطة.
00:08:39أحتاج إلى السيطرة على ذلك.
00:08:40لا يمكنني الاعتماد عليهم لتوفير شيء مستقر.
00:08:46لذا أعتقد، كنتيجة لتصميم واجهة المستخدم،
00:08:52يحتاجون إلى تقليل مقدار الرؤية المتاحة لك.
00:08:54شخصياً لا أحب ذلك كثيراً.
00:08:56لكن هذا مجرد تفضيل شخصي.
00:08:57أفهم أن معظم الناس سيكونون
00:08:58سعداء بكمية المعلومات
00:09:00التي سيقدمها لك Cloud Code.
00:09:03لا يوجد خيار للطراز بالطبع،
00:09:06لأنها أداة أصلية من Anthropic، إذا جاز التعبير.
00:09:09هذا ليس الجانب السلبي، لأن نماذج Claude هي--
00:09:12أنا أحبها.
00:09:13إنها جيدة حقاً.
00:09:15وهناك تقريباً صفر من القلق حول الحساسية.
00:09:17وقد تجد هذا مضحكاً نوعاً ما، لأن لديهم
00:09:19نظام الخطافات (hook) هذا وكل ذلك.
00:09:21ولكن إذا قارنتها بما يسمح لك Pi بفعله،
00:09:25فهي ليست متكاملة بنفس العمق.
00:09:28كما أنها تعتمد بشكل أساسي على تشغيل عملية عندما
00:09:32يبدأ حدث الخطاف، وهو أمر مكلف للغاية إذا
00:09:36كان عليك بدء تلك العملية مراراً وتكراراً.
00:09:40لذا في النهاية، سئمت من Cloud Code،
00:09:42ليس لأنه كان سيئاً.
00:09:44بل لأنه لم يعد مناسباً لي.
00:09:47لقد أصبح مناسباً لمزيد من الأشخاص خلال تلك الفترة.
00:09:50لذا فمن الواضح أنهم يفعلون الأشياء بشكل صحيح، ولكن ليس من أجلي،
00:09:54لأنني أصبحت قديماً.
00:09:56لذا بدأت أبحث عن خيارات أخرى.
00:09:59وهناك Codex CLI، الذي لم يعجبني حقاً.
00:10:01في البداية، سواء واجهة المستخدم أو النموذج،
00:10:05لقد تغير ذلك، على الأقل فيما يتعلق بالنموذج.
00:10:08أصبح Codex جيداً جداً الآن.
00:10:10ثم هناك AMP.
00:10:12الفريق الذي يقف خلفه كان يعمل في Sourcegraph.
00:10:15لقد انفصلوا عن Sourcegraph.
00:10:20وهم مهندسون ممتازون حقاً.
00:10:21لقد نجحوا في بناء بيئة برمجة تجارية حيث
00:10:25يقومون بإزالة الميزات بدلاً من إضافتها.
00:10:28ومعظم خياراتهم تبدو منطقية جداً بالنسبة لي.
00:10:33لذا نعم، إذا كنت تبحث عن بيئة برمجة تجارية،
00:10:36فإنني أوصيك بالتأكيد بـ AMP، لأنه جيد حقاً.
00:10:39Factory Troye، قصة مماثلة نوعاً ما، وجيد أيضاً،
00:10:44رغم أنهم ليسوا تجريبيين مثل AMP.
00:10:47ثم هناك OpenCode، وهو بيئة البرمجة
00:10:50مفتوحة المصدر التي يستخدمها الكثير من الناس.
00:10:53لدي تاريخ مع البرمجيات مفتوحة المصدر.
00:10:55لقد كنت في هذا المجال لمدة، حسناً، 17 عاماً.
00:11:00لقد أدرت مشاريع مفتوحة المصدر كبيرة وصغيرة.
00:11:04لذا فهذا الأمر قريب وعزيز على قلبي.
00:11:05لذا فكرت، سأعطي OpenCode فرصة،
00:11:08لأنه قريب مني.
00:11:12وبجانب AMP، لديهم أحد أكثر الفرق واقعية
00:11:15أو عملية في هذا المجال.
00:11:16إنهم لا يغمرونك بالوعود حول ميزات
00:11:18ربما لن تستخدمها أبداً.
00:11:20إنهم يحاولون الحفاظ على مسار ناجح
00:11:23ومستقر للغاية.
00:11:26ولديهم أيضاً أفكار جيدة جداً
00:11:27حول ما تعنيه وكلاء البرمجة لنا
00:11:29كمهنة، وهو ما يمكنني شخصياً التماهي معه.
00:11:32المشكلة في OpenCode هي أنه ليس جيداً جداً أيضاً
00:11:37في إدارة السياق الخاص بك.
00:11:38على سبيل المثال، في كل دورة، يقوم باستدعاء sessionCompaction.prune،
00:11:44والذي يفعل ما يلي.
00:11:46يقوم بتقليص جميع النتائج قبل آخر 40,000 رمز توكين.
00:11:52الآن، من هنا يعرف ما هو التخزين المؤقت للمطالبات (prompt caching)؟
00:11:56ماذا يفعل هذا بمخزن المطالبات الخاص بك؟
00:11:58لذا كان لـ OpenCode و Anthropic تاريخ مثير للاهتمام.
00:12:05وفي النهاية، قالت Anthropic، في رأيي، وبحق،
00:12:11يا رفاق، هذا لن يحدث ببساطة.
00:12:14ولم يكن هناك أي شيء علني حول هذا الموضوع.
00:12:17لكن طارق يشرح الأمر هنا.
00:12:19إذا جئت إلى صالة رياضية ولم تحسن التصرف وأسأت
00:12:22استخدام البنية التحتية، إذا جاز التعبير، فسيتم حظرك.
00:12:25وأعتقد--
00:12:27ليس لدي أي دليل على ذلك،
00:12:28لكنني أعتقد أن هذا هو السبب وراء
00:12:30هذا العداء بين Anthropic و OpenCode.
00:12:33ويمكنني أن أتفق تماماً، أو على الأقل
00:12:36أعتقد أن Anthropic محقة تماماً هنا.
00:12:39لا تعبث بالبنية التحتية.
00:12:42ثم هناك أيضاً أشياء أخرى، مثل أن OpenCode
00:12:44يأتي مع دعم بروتوكول خادم اللغة (LSP)،
00:12:46بشكل افتراضي.
00:12:48بالعودة إلى هندسة السياق،
00:12:51لنفترض أنك أعطيت وكيلك مهمة
00:12:53تعديل مجموعة من الملفات.
00:12:55ماذا يعني ذلك في الممارسة العملية؟
00:12:57سيقوم بإجراء سلسلة من التعديلات، واحداً تلو الآخر،
00:13:02على مجموعة من الملفات.
00:13:03ما مدى احتمالية أن الكود سيتم تجميعه (compile)
00:13:09بعد التعديل الأول من أصل 10 تعديلات؟
00:13:12ماذا يحدث إذا قمت بتعديل الكود سطراً بسطر؟
00:13:15كم يستغرق من الوقت ليستقر مرة أخرى
00:13:17ويتم تجميعه بشكل نظيف؟
00:13:19لن يفعل. لن يستقر.
00:13:20لن يتم تجميعه بعد التعديل الأول، وربما لا
00:13:22بعد التعديل الثاني، وهكذا دواليك.
00:13:24لذا إذا التفتّ وقلت، مهلاً، عزيزي خادم LSP،
00:13:28لقد قمت للتو بتعديل سطر واحد في هذا الملف.
00:13:30هل هو معطل؟
00:13:31فسيقول خادم LSP، نعم، إنه معطل حقاً.
00:13:34وما تفعله هذه الميزة هو أنها تقوم بعد ذلك
00:13:36بحقن هذا الخطأ مباشرة بعد استدعاء الأداة
00:13:39كنوع من التغذية الراجعة للنموذج.
00:13:43أوه، ما فعلته للتو خاطئ.
00:13:45والنموذج يقول، تباً لك يا رجل،
00:13:47لم أنتهِ من تعديل الأشياء بعد.
00:13:49لماذا تخبرني بهذا؟
00:13:50من الواضح أنه ليس خطأ.
00:13:51ولكن إذا فعلت هذا مراراً كافياً، فسيستسلم النموذج.
00:13:54وهذا يؤدي إلى نتائج سيئة للغاية.
00:13:58لذا لست من محبي LSP.
00:13:59أعتقد أنها فكرة سيئة للغاية أن يتم تفعيل ذلك.
00:14:02هناك نقاط مزامنة طبيعية
00:14:03حيث تريد إجراء فحص الأخطاء (linting) والتحقق من النوع
00:14:06وكل ذلك.
00:14:07وذلك فقط عندما يعتقد الوكيل أنه انتهى، عندها فقط.
00:14:10لقد تغير هذا مؤخراً.
00:14:14هذه جلسة واحدة لـ OpenCode، حيث كل رسالة
00:14:20تصبح ملف JSON خاصاً بها.
00:14:22كل رسالة مفردة تصبح ملف JSON خاصاً بها على القرص.
00:14:26هذا يشير لي إلى أنه لم يكن هناك الكثير من التفكير
00:14:29في هندسة المعمارية للشيء بأكمله.
00:14:31وإذا فقدت الثقة في ذلك، فلن
00:14:33أرغب في استخدام تلك الأداة بعد الآن.
00:14:35مرة أخرى، أعتقد أن الفريق جيد حقاً.
00:14:37أعتقد أنهم تطوروا بسرعة فائقة
00:14:39وبنوا شيئاً مفيداً جداً للكثير من الناس،
00:14:42بكل وضوح.
00:14:43إنها فقط، مرة أخرى، قرارات لم أكن لأتخذها
00:14:46جعلتني أقرر بناء أداتي الخاصة.
00:14:50ثم كان هناك هذا أيضاً.
00:14:51يأتي OpenCode مع خادم بشكل افتراضي.
00:14:54لذا فإن الهندسة الأساسية تعتمد على خادم.
00:14:56والعملاء يتصلون به.
00:14:57وواجهة مستخدم الطرفية (terminal) هي أحد هؤلاء العملاء.
00:15:00هناك أيضاً واجهة سطح مكتب.
00:15:01ولا أعرف.
00:15:03تبين أن ذلك يمثل ثغرة أمنية
00:15:05مع إمكانية تنفيذ تعليمات برمجية عن بعد مدمجة افتراضياً.
00:15:09وهذا أيضاً-- إذا كنت فخوراً جداً ببنية
00:15:12خادمك التحتية أو هندسة خادمك،
00:15:15فسأفترض أنكم مهندسون ناضجون
00:15:18فكرتم في الأمان أيضاً.
00:15:20ومن الواضح أن هذا لم يحدث.
00:15:21وقد ظل هذا مفتوحاً لفترة طويلة.
00:15:23ومرة أخرى، أنا لا ألوم أحداً هنا.
00:15:25هذه أشياء تحدث فقط إذا كنت
00:15:27تعمل في صناعة تعمل بسرعة مذهلة
00:15:31لم نشهدها من قبل.
00:15:33فقط لا أريد استخدام تلك الأداة إذا كان الأمر كذلك.
00:15:36كانت هذه ملاحظاتي فيما يتعلق بمراجع
00:15:42البرمجة الحالية.
00:15:42AMP و Droid كانا شيئين يمكنني استخدامهما.
00:15:45ولكن مرة أخرى، لا توجد سيطرة.
00:15:47في حالة AMP، هم حتى من يقررون ما هي النماذج التي يمكنك استخدامها.
00:15:50وهو نموذج واحد فقط لنوع واحد من المهام.
00:15:53وهذا لا يناسبني.
00:15:55بالنسبة لـ Droid، أعتقد أنه أكثر انفتاحاً قليلاً.
00:15:58ولكن في الوقت الذي جربته فيه،
00:16:00لم يكن--
00:16:02لم أرَ ميزة كبيرة له على Cloud Code.
00:16:07وبعد ذلك بحثت في الاختبارات المعيارية لأسباب مختلفة تماماً
00:16:10ووجدت Terminal Bench.
00:16:12من يعرف ما هو Terminal Bench؟
00:16:15حسناً، في الأساس، هو عبارة عن بيئة تقييم
00:16:20للبرمجة أو الوكلاء، والتي تحتوي على مجموعة من المهام المتعلقة باستخدام الكمبيوتر والبرمجة--
00:16:24عذراً، أنا عجوز ومتعب بسبب ابني ذو الـ 4 سنوات.
00:16:24إنه يحتوي على مجموعة من المهام المتعلقة باستخدام الكمبيوتر والبرمجة
00:16:31التي يتعين على الوكيل أو نموذج اللغة داخل بيئة الوكيل
00:16:35تنفيذها.
00:16:39أعتقد أنها حوالي 82 مهمة أو نحو ذلك.
00:16:40وهي متنوعة جداً.
00:16:43فهي تبدأ من إصلاح إعدادات النافذة لديّ إلى برمجة
00:16:44محاكاة مونتي كارلو أو شيء من هذا القبيل.
00:16:48ولديهم لوحة صدارة.
00:16:51وعلى لوحة الصدارة تلك، ترى مزيجاً
00:16:52من بيئة وكيل البرمجة والنموذج.
00:16:54ولديهم وكيل برمجة خاص بهم يسمى Terminus.
00:16:57وأعتقد أنه رائع لأنه
00:17:03واحد من أفضل البيئات أداءً في الاختبار المعياري.
00:17:06أحد أفضل بيئات التشغيل أداءً في هذا الاختبار.
00:17:09سوف نرى ذلك لاحقاً.
00:17:11ماذا يفعل بالضبط؟
00:17:12حسناً، كل ما يحصل عليه النموذج هو جلسة TMUX.
00:17:17وكل ما يمكنه فعله هو إرسال ضربات مفاتيح إليها
00:17:19وقراءة تسلسلات أكواد VT التي يتم إصدارها.
00:17:23لذا، هذه هي أصغر وأبسط واجهة
00:17:27يمكن للنموذج الحصول عليها للتعامل مع حاسوبك.
00:17:31وهذا يحقق أداءً يتصدر قائمة المتصدرين بأكملها.
00:17:36إذن ماذا يخبرنا هذا عن بيئات وكلاء البرمجة الحالية؟
00:17:39هل نحتاج فعلاً لكل هذه الميزات للنماذج
00:17:41كي تؤدي عملها حقاً؟
00:17:43بالنسبة لي شخصياً، الأمر لا يتعلق فقط بكون النموذج
00:17:48جيداً بالفعل.
00:17:49بل يتعلق أيضاً بي كمستخدم، كإنسان،
00:17:51بامتلاك وسيلة للتفاعل مع وكيلي ومع النموذج.
00:17:54ومن الواضح أن Terminus ليس هو تجربة المستخدم أو المطور
00:17:58التي أريدها.
00:18:00لكنه يخبرنا أن كل هذه الميزات، التي تمتلكها كل بيئات
00:18:03البرمجة هذه، قد لا تكون ضرورية للحصول
00:18:08على نتائج جيدة من الوكلاء.
00:18:10أي لا أدوات ملفات، ولا وكلاء فرعيين، ولا بحث ويب، لا شيء.
00:18:13ثمة فرضيتان بناءً على كل هذه النتائج.
00:18:16نحن في مرحلة التجربة والاستكشاف العشوائي.
00:18:18ولا أحد لديه أي فكرة عما يجب أن يبدو عليه وكيل البرمجة المثالي
00:18:21أو كيف يجب أن تبدو بيئة البرمجة المثالية.
00:18:23نحن نجرب كلاً من البساطة المفرطة والتوجه الكامل نحو أساطيل
00:18:27وفرق من الوكلاء، تارة بلا تحكم وتارة باستقلالية كاملة
00:18:30وما إلى ذلك.
00:18:31أعتقد أن هذا لم ينتهِ بعد.
00:18:33لم نجب بعد على سؤال كيف يجب أن يبدو هذا
00:18:35بشكل مثالي، وما الذي سيصبح المعيار السائد
00:18:37في هذه الصناعة.
00:18:38والأمر الثاني هو أننا بحاجة لطرق أفضل
00:18:40للتجربة والعبث مع وكلاء البرمجة.
00:18:42أي أننا بحاجة لأن يكونوا قادرين على تعديل أنفسهم
00:18:47وأن يصبحوا قابلين للتطويع.
00:18:48حتى نتمكن من تجربة الأفكار بسرعة
00:18:50ونرى ما إذا كان هذا شيئاً يمكننا جعله
00:18:53معياراً للصناعة، سير عمل جديداً ربما سنتبناه جميعاً.
00:18:58لذا كانت الفكرة الأساسية هي—
00:18:59وهي بسيطة جداً، وليست علماً معقداً—
00:19:01تجريد كل شيء وبناء نواة بسيطة قابلة للتوسعة.
00:19:05هناك بعض سبل الراحة.
00:19:06إنها ليست لوحة بيضاء تماماً.
00:19:09هذا هو مشروع Pi.
00:19:10والشعار العام هو: طوّع وكيل البرمجة الخاص بك
00:19:13ليناسب احتياجاتك بدلاً من العكس.
00:19:16إنه يأتي مع أربع حزم: حزمة ذكاء اصطناعي، وهي في الأساس
00:19:21مجرد تجريد بسيط لمقدمي خدمات متعددين، والذين
00:19:24يتحدثون جميعاً بروتوكولات نقل مختلفة.
00:19:27لذا من السهل جداً التحدث إلى جميع المزودين
00:19:29والتبديل بينهم في نفس السياق أو نفس الجلسة.
00:19:34نواة الوكيل، وهي مجرد حلقة وكيل عامة
00:19:36مع استدعاء الأدوات، والتحقق،
00:19:38وما إلى ذلك.
00:19:39والبث (streaming)، واجهة مستخدم طرفية (TUI)
00:19:42تتكون من حوالي 600 سطر برمجي وتعمل بشكل جيد حقاً،
00:19:47بشكل مفاجئ، لأنها لم تُكتب بواسطة آلة.
00:19:51ووكيل البرمجة نفسه، وهو عبارة عن حزمة تطوير برمجيات (SDK)
00:19:54يمكنك استخدامه في وضع التشغيل الخفي (headless)
00:19:57أو كوكيل برمجة بواجهة مستخدم طرفية كاملة.
00:20:02هذا هو موجّه النظام (system prompt) بالكامل.
00:20:05لا يوجد شيء أكثر من ذلك مقارنة بموجهات
00:20:08النظام الأخرى لوكلاء البرمجة.
00:20:10هذا مقدّر بالرموز (tokens).
00:20:13اتضح أن النماذج الرائدة مدربة بكثافة عبر التعلم المعزز لتعرف
00:20:16ما هو وكيل البرمجة.
00:20:18فلماذا تستمر في إخبارهم بأنهم وكلاء برمجة
00:20:21وكيف يجب عليهم أداء مهام البرمجة، أليس كذلك؟
00:20:27وضع "YOLO" (افعل ما تريد) بشكل افتراضي، لماذا؟
00:20:30معظم بيئات وكلاء البرمجة حالياً لها وضعان.
00:20:33إما أن يفعل الوكيل ما يشاء
00:20:36أو يضطر الوكيل لسؤالك: هل تريد حقاً
00:20:40حذف هذا الملف؟
00:20:41هل تريد حقاً عرض الملفات في هذا المجلد،
00:20:44وهكذا دواليك.
00:20:44وهناك درجات متفاوتة من هذا الأمر.
00:20:47لكن في نهاية المطاف، يتلخص الأمر في أن المستخدم
00:20:49يحتاج للموافقة على إجراء يقوم به الوكيل.
00:20:52وعندها نكون في أمان.
00:20:53وأعتقد أن هذا خطأ لأنه يؤدي إلى الإرهاق.
00:20:55وسيقوم الناس إما بإيقاف التشغيل تماماً، وضع YOLO،
00:20:58أو سيجلسون هناك ويضغطون "إدخال" دون قراءة أي شيء.
00:21:01لذا لا أعتقد أن هذا هو الحل.
00:21:02كما أن الحاويات (Containerization) ليست حلاً
00:21:04إذا كنت قلقاً بشأن تسريب البيانات
00:21:06وحقن الأوامر (prompt injections).
00:21:07لكنني أعتقد أن هذا هو الشيء الوحيد الذي—
00:21:10أعتقد أنه أفضل أساس مقارنة بالحواجز الوقائية
00:21:14مثل الموافقة أو حوارات التأكيد.
00:21:17إنه يمتلك أربع أدوات فقط: قراءة ملف، كتابة ملف،
00:21:19تعديل ملف، و Bash.
00:21:21Bash هو كل ما تحتاجه.
00:21:22ما الذي ليس موجوداً هناك؟
00:21:23لا يوجد بروتوكول MCP، ولا وكلاء فرعيون، ولا خطة، ولا خلفية،
00:21:25فقط Bash، ولا مهام "To-do" مدمجة.
00:21:26إليك ما يمكنك فعله بدلاً من ذلك.
00:21:28بدلاً من MCP، استخدم أدوات CLI بالإضافة للمهارات،
00:21:30أو قم ببناء إضافة، وسنرى ذلك بعد قليل.
00:21:34لماذا لا يوجد وكلاء فرعيون؟
00:21:35لأنهم غير قابلين للمراقبة.
00:21:36بدلاً من ذلك، استخدم tmux وقم بتشغيل الوكيل مرة أخرى.
00:21:41سيكون لديك تحكم كامل في مخرجات ومدخلات الوكيل
00:21:44ويمكنك رؤية كل ما يحدث في الوكيل الفرعي.
00:21:48من المثير للاهتمام أن Code Spawn—
00:21:50وضع الفريق فيه الآن يفعل هذا بالضبط أيضاً، في الأساس.
00:21:55لا يوجد وضع خطة، اكتب ملف plan.md.
00:21:57سيكون لديك أثر باقٍ بدلاً
00:21:59من واجهة مستخدم رديئة لا تناسب
00:22:02مساحة عرض الطرفية (terminal) الخاصة بك.
00:22:04ويمكنك إعادة استخدامه عبر جلسات متعددة.
00:22:07لا حاجة لـ Bash في الخلفية، لدينا tmux.
00:22:09إنه نفس الشيء.
00:22:11ولا توجد مهام مدمجة، اكتب ملف todo.md.
00:22:13نفس الشيء.
00:22:14أو قم ببناء كل هذا بنفسك بالطريقة التي تحبها.
00:22:17وهذا ما يسمح به Pi، كونه قابلاً للتوسع للغاية.
00:22:21لذا يمكنك توسيع الأدوات بشكل مخصص.
00:22:22يمكنك إعطاء النموذج أدوات تقوم بتعريفها.
00:22:26أعتقد أنه لا توجد بيئة وكلاء برمجة أخرى
00:22:28توفر ذلك حالياً، ما لم تقم بنسخ كود مفتوح المصدر.
00:22:31لست بحاجة لفعل ذلك هنا.
00:22:32أنت فقط تكتب ملف TypeScript بسيطاً،
00:22:34ويتم تحميله تلقائياً.
00:22:37يمكنك أيضاً كتابة واجهة مستخدم مخصصة.
00:22:39المهارات موجودة بوضوح في قوالب التوجيه، والسمات (themes).
00:22:43ويمكنك حزم كل ذلك، ووضعه على NPM أو Git،
00:22:46وتثبيته بأمر واحد، وهو أمر رائع جداً.
00:22:49وكل شيء يتم تحديثه فورياً (hot reloads).
00:22:51لذا قمت بتطوير إضافاتي الخاصة
00:22:53المخصصة لمشروع أو مهمة معينة في Pi داخل المشروع.
00:22:59وبينما يقوم الوكيل بتعديل الإضافة، أقوم فقط بإعادة التحميل.
00:23:05ويقوم فوراً بتحديث كل الكود الذي يتم تشغيله،
00:23:10وهو أمر لطيف للغاية.
00:23:11وفي الممارسة العملية، هذا يعني أنه يمكنك عمل ضغط (compaction) مخصص.
00:23:14أعتقد أن هذا أحد الأشياء التي يجب على الناس التجربة
00:23:16فيها أكثر، لأن كل تطبيقات الضغط
00:23:19الحالية ليست جيدة.
00:23:21بوابات الأذونات، يمكنك تنفيذها بسهولة
00:23:23في 50 سطر برمجي، وتغطي تقريباً
00:23:24ما تفعله كل بيئات الوكلاء الأخرى إذا كنت تريد ذلك.
00:23:27مزودون مخصصون، تسجيل وكلاء (proxies) لنماذج مستضافة ذاتياً.
00:23:31لا يهمني.
00:23:32لا تحتاج مني أن أفعل هذا لك.
00:23:33يمكنك القيام بذلك، وبالفعل، يمكن لبرنامجك القيام به نيابة عنك.
00:23:37أو استبدال أي أداة مدمجة.
00:23:38تعديل طريقة عمل القراءة، والكتابة، والتعديل، و Bash.
00:23:41لا يهمني.
00:23:42لدي نسخة من القراءة والكتابة والتعديل و Bash
00:23:43تعلم عبر SSH على جهاز بعيد.
00:23:47استغرق الأمر مني خمس دقائق لتنفيذها، لكنها تعمل.
00:23:51ولديك وصول كامل لـ TUI، لذا يمكنك فعلياً
00:23:54كتابة واجهة مستخدم مخصصة بالكامل في وكيل البرمجة.
00:23:58بالمناسبة، استغرق الأمر من شخص ما خمس دقائق
00:24:02ليحاكي ذلك في Pi بميزات أكثر.
00:24:05PyMessenger، ليس لدي أدنى فكرة عما يفعله،
00:24:07لكن يبدو أنه مثل غرفة دردشة لعدة وكلاء Pi
00:24:10يتواصلون فيما بينهم، ومن ثم لديه واجهة مستخدم مخصصة.
00:24:13يمكننا رؤية ما يفعلونه، ونعم، إنه يعمل فحسب.
00:24:18أو PyMess، إذا كنت تشعر بالملل، فقط العب لعبة
00:24:23بينما يعمل الوكيل، أليس كذلك؟
00:24:24يمكنك فعل ذلك.
00:24:25أو PyAnnotate، افتح الموقع الإلكتروني
00:24:28الذي تعمل عليه حالياً، وقم بوضع تعليقات توضيحية في الواجهة الأمامية،
00:24:31وأعطِ ملاحظات للوكيل مباشرة وبشكل متزامن.
00:24:35أعد إدخالها في السياق، واجعل الوكيل يعدل الشيء.
00:24:39أو شيء أستخدمه وهو File Switch It.
00:24:42لا أريد الانتقال إلى بيئة تطوير متكاملة (IDE) أو محرر.
00:24:43أريد فقط إلقاء نظرة سريعة على الملف الذي تم تعديله.
00:24:46إذن كل هذه إضافات.
00:24:48لا يوجد أي منها مدمج، وعادة ما يستغرق الأمر من الناس
00:24:50بضع دقائق إلى فترة ما بعد الظهيرة
00:24:52لبناء كل هذا بالطريقة التي يريدونها.
00:24:56PyWavic يقول أيضاً، لا أعرف ماذا يفعل.
00:25:00يأتي Pi أيضاً مع هيكلية شجرية.
00:25:01لن أشرح ذلك.
00:25:03فقط انظر إلى py.dev.
00:25:04جلستك هي شجرة، وليست قائمة خطية من الدردشات.
00:25:07لذا يمكنك في الأساس عمل بعض الوكلاء
00:25:09عبر قراءة كل الملفات في المجلد،
00:25:11تلخيص هذا، والعودة إلى جذر المحادثة،
00:25:14وأخذ الملخص معي، والقيام بالعمل الفعلي.
00:25:19لا يتم حقن أي شيء من وراء ظهرك.
00:25:22وكلاء، مهارات، وتتبع كامل للتكاليف.
00:25:24الكثير من بيئات التشغيل لا تفعل هذا هنا.
00:25:26الكود المفتوح لا يفعله بشكل جيد.
00:25:29تصدير HTML، تنسيق JSON، بث JSON خفي، وإلى ما هنالك.
00:25:33هل يعمل حقاً؟
00:25:34حسناً، اختبار Terminal Bench.
00:25:35دعوني أقوم بالتكبير هنا.
00:25:36لا أستطيع.
00:25:37هذا مذهل.
00:25:38هنا Pi مباشرة خلف Terminus 2 باستخدام Claude Opus 4.5.
00:25:45كان ذلك في أكتوبر عندما لم يكن Pi يمتلك حتى خاصية الضغط.
00:25:49وقت العرض التوضيحي، سأتخطى ذلك، ضد "الآلات"
00:25:51لأنهم يدمرون المصادر المفتوحة.
00:25:54إذا كنت مرتبطاً بمشروع هؤلاء الأشخاص،
00:25:56فسيأتي مئات الأشخاص من OpenClaw
00:26:02إلى مستودعك ويغرقونك بالترهات والقوانين الواهية.
00:26:06لذا اضطررت لابتكار بضعة تدابير.
00:26:09اخترعت ما أسميته "عطلة المصدر المفتوح" (OSS vacation).
00:26:11حيث قمت فقط بإغلاق المشكلات وطلبات الدمج (PRs) لبضعة أسابيع
00:26:14وعملت على الأشياء بمفردي.
00:26:16أي شيء مهم سيتم الإبلاغ عنه لاحقاً على أي حال
00:26:20أو في Discord.
00:26:21ثم قمت أيضاً بتنفيذ نظام وصول مخصص
00:26:26حيث لدي ملف markdown في المستودع.
00:26:28إذا قام شخص ما بفتح طلب دمج دون أن يكون اسم حسابه
00:26:32موجوداً في ملف markdown هذا، فسيتم إغلاق الطلب تلقائياً.
00:26:34لا أهتم.
00:26:35أولاً، عرّف عن نفسك بصوت بشري عبر طرح مشكلة (issue).
00:26:39اكتب مشكلة لا تكون أطول من طول العرض
00:26:42لأن أي شيء آخر هو على الأرجح من عمل الآلات.
00:26:45وبمجرد قيامك بذلك، سأكون سعيداً بالموافقة عليك.
00:26:47بذلك تدخل في ذلك الملف ويمكنك الآن تقديم طلبات دمج
00:26:50إلى المستودع.
00:26:51كل ما أطلبه هو تحقق بشري.
00:26:53وميتشل من Ghosty أخذ هذا وبنى
00:26:57مشروعاً يسمى Vouch، وهو أكثر قابلية للتطبيق بسهولة
00:27:00على مستودعات المصادر المفتوحة الخاصة بك.
00:27:02وهذا هو مشروع Pi.
00:27:03انطلقوا وجربوه.
00:27:05هذا كل ما لدي.
00:27:06[تصفيق]
00:27:07[موسيقى]