انتقل للمحتوى
علي هيثم·TECH·يردّ خلال أقل من ساعة
  • الرئيسيةابدأ من هنا
  • الأعمالدراسات حالة، مشاريع
  • الخدماتما الذي سأبنيه لك
  • المدونةمقالات، سلاسل
  • التدريبدورات، مختبرات، دورات
  • عنّيالمهندس وراء هذا الموقع
تسجيل الدخولابدأ مشروع
علي هيثم · TECH
  • الرئيسية↗
  • الأعمال↗
  • الخدمات↗
  • المدونة↗
  • التدريب↗
  • عنّي↗
تسجيل الدخولابدأ مشروع
متاح
علي هيثم·TECH

استوديو هندسي. دمشق، GMT+3.

aliyosef.online

الاستوديو

  • الأعمال
  • المدونة
  • التدريب
  • عنّي
  • تواصل معي

البوابة

  • تسجيل الدخول
  • فتح تذكرة دعم
  • متابعة مشروع
  • حسابي

مصادر

  • الوثائق
  • حالة الأنظمة
  • سجلّ التغييرات
  • حزمة العلامة
  • الخصوصية
  • الشروط

النشرة

ملاحظات تقنية وأخبار، أسبوعياً. بدون حشو.

مجاني. إلغاء الاشتراك متى ما حبيت.

تابعني على
© 2026 علي هيثم يوسف. جميع الحقوق محفوظة.مبنيّ يدويًا بـ React 19.آخر نشر · 2026-05-08كل الأنظمة تعمل
  1. الرئيسية/
  2. المدوّنة/
  3. هندسة AI
هندسة AI

الهندسة المقترنة بـ AI، الجزء الأول: آليّة العمل

افتتاح السلسلة. وين بساعد النموذج، وين بكذب، وكيف بنينا إيقاع يومي حول الاثنين.

٢ شباط ٢٠٢٦·11 دقيقة·بقلم علي يوسف
جزء منai-paired→

جاري تحميل المقال…

شاركXLinkedInRSS
استلم المقال التالي في بريدك.مقال جديد كل أحد. هندسة بلغة واضحة. مجاني، يمكنك إلغاء الاشتراك في أي وقت.اشترك→
AY
علي هيثم يوسف

مهندس وكاتب. أبني منصات متعدّدة المستأجرين، محرّكات مزامنة، وأنظمة موثوقة بهدوء. أكثر من ٦٠٠ مشروع مُسلَّم منذ ٢٠١٥.

اشتركابدأ مشروعاً→

اقرأ بعدها

  • SD
    ٢٦ كانون الثاني ٢٠٢٦·هندسة AI

    تطوير مدفوع بالمواصفات مع LLMs

    spec النموذج فيه يشتغل بدون rework. البنية، الـ anti-patterns، والـ diff الفعلي.

    9 دقائق
  • ES
    ١٨ كانون الثاني ٢٠٢٦·هندسة AI

    Eval suites للأدوات غير الحتمية

    كيف تختبر شي بيعطي جواب مختلف مرّتين. الـ harness، الـ tolerances، والـ budget.

    8 دقائق
  • CG
    ١٠ كانون الثاني ٢٠٢٦·هندسة AI

    حواجز تكلفة لـ آليّات الـ AI

    مكتبة محاسبة صغيرة بترجع تكلفتها بثلاث أسابيع. Tokens، retries، وإنذار الـ budget.

    6 دقائق
←العودة إلى كل المقالات

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

كيف يبدو «مقترن مع نموذج لغوي» فعلاً#

تخلّص من التسويق. يوماً بيوم، النموذج يفعل ثلاثة أشياء على فريقنا:

  1. يصيغ كوداً من spec مهيكل. بإعطائه وصفاً واضحاً لما يُبنى، متضمّناً الأنواع والحالات الحدّيّة، ينتج تمريرة أولى عادة ٧٠–٩٠٪ صحيحة. نحرّر، نختبر، نشحن.
  2. يراجع كوداً كتبناه. بإعطائه diff والسياق المحيط، يلتقط حالات حدّيّة، يقترح أسماء اختبارات، وأحياناً يلتقط bug حقيقيّاً. معدّل الإيجابيّات الكاذبة عالٍ لكنّ كلفة الإيجابيّ الكاذب منخفضة.
  3. يمشي في كود غير مألوف. حين يقرأ شخص ما ملفّاً لم يكتبه، النموذج جيّد في إنتاج ملخّص «ماذا يفعل هذا، في فقرة واحدة» يوجّه دون أن يكذب كثيراً.

سيّئ في ثلاثة أشياء:

  1. التصميم المفتوح. بإعطائه «صمّم محرّك مزامنة»، ينتج نصّاً سطحيّاً معقولاً ويُفوّت تقريباً دائماً القيد الذي يهمّ. التصميم الحقيقيّ يحدث في محادثة مع شخص شغّل النظام في الإنتاج.
  2. تقدير الجهد. متفائل بشكل جامح. لا نسأل.
  3. إنتاج قرارات جديدة حيث الإجابة الصحيحة هي «لا». حين يُسأل عن مساعدة في ميزة، لا يقول تقريباً أبداً «لا يجب أن تبني هذا». سيساعد. تلك المساعدة أحياناً فخّ.

شكل سير العمل الذي يعمل#

استقررنا على نمط من أربع خطوات، بهذا الترتيب:

١. spec  →  ٢. تمريرة أولى  →  ٣. تحرير + اختبار  →  ٤. مراجعة
   أنت          النموذج             أنت (في الغالب)         النموذج

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

الخطوة ١: Spec#

الـ spec وثيقة مهيكلة. نستخدم قالباً من أربعة أقسام:

## الهدف
جملة واحدة.

## المدخلات
أنواع، قيود، حالات حدّيّة تستحقّ التسمية.

## المخرجات
أنواع، ماذا يعني «النجاح»، ماذا يعيد «الفشل».

## أمثلة
ثلاثة: مسار سعيد، حالة حدّيّة، حالة فشل.

هذا ليس اختياريّاً. الـ spec هو ما يصنع الفرق بين «النموذج أنتج شيئاً مفيداً» و «النموذج أنتج هراء يبدو معقولاً». معظم المهندسين الذين يقولون «النموذج لا يكتب كوداً جيّداً» تخطّوا الخطوة ١.

الخطوة ٢: تمريرة أولى#

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

القاعدة التي استقررنا عليها: إن كانت التمريرة الأولى أكثر من ٣٠٪ خاطئة، لا نُكرّر مع النموذج عليها. نُعيد كتابة الـ spec ليكون أحكم ونحاول مرّة أخرى. التكرار مع النموذج على تمريرة أولى سيّئة يميل لإنتاج ثلاث تمريرات سيّئة أخرى تبتعد تدريجيّاً عمّا نريد.

الخطوة ٣: تحرير + اختبار#

نحرّر التمريرة الأولى يدويّاً. نكتب الاختبارات يدويّاً. النموذج يساعد في أسماء الاختبارات لكن ليس في التأكيدات. السبب: اختبارات النموذج لها ميل لتأكيد ما يفعله الكود بدلاً من ما قاله الـ spec.

bug الـ AI الأكثر شيوعاً

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

الخطوة ٤: مراجعة#

بعد الانتهاء، نُلصق الـ diff عائداً في النموذج بسياق جديد ونسأل «أيّ حالات حدّيّة فاتتنا؟». معدّل الإصابة هنا حوالي ١ من ٥: معظم ما يقترحه مغطّى أصلاً أو خارج النطاق، لكنّ الواحد الذي يصل أحياناً bug حقيقيّ.

ما نقيسه#

ثلاثة أرقام، شهريّاً:

  1. الوقت إلى أوّل commit على ميزة جديدة. انخفض ~٣٥٪ مقابل السنة التي سبقت اعتمادنا لهذا سير العمل.
  2. اختبارات مكتوبة لكلّ ميزة. ارتفع ~٢٠٪، في الغالب لأنّ الخطوة ٤ تُظهر حالات حدّيّة كنّا سنتخطّاها.
  3. bugs مُبَلَّغ عنها لكلّ ميزة في أوّل ٣٠ يوماً. مسطّح تقريباً. لم ينخفض. تفاجأنا في البداية؛ التفسير هو أنّ الـ bugs مختلفة (أخطاء طباعيّة أقلّ، «طلبت الشيء الخطأ» أكثر)، والعدد متشابه.

الرقم الأخير هو الذي علّمنا أكثر. النموذج لا يزيل الـ bugs من النظام. ينقلها صعوداً إلى الـ spec. هذا جيّد إن عاملت الـ spec كقطعة الأثر، لا الكود.

ما لا يعمل#

ثلاثة أنماط تخلّينا عنها:

وضع «الطيّار الآليّ»#

ترك النموذج يكتب الكود، يشغّل الاختبارات، يصلح الإخفاقات، يشغّل الاختبارات مجدّداً، في حلقة بلا إشراف. هذا يعمل للحالات التافهة ويفشل بصمت على أيّ شيء مهمّ. وضع الفشل هو أنّ النموذج «يصلح» الاختبارات بإضعافها. لم نجد حاجزاً يلتقط هذا بشكل موثوق.

الترميز المدفوع بالمحادثة#

ذهاب وإياب طويل مع النموذج على نفس قطعة الكود، أكثر من ١٠ دورات. هذا ينتج كوداً غريباً بنيويّاً لأنّ النموذج يأخذ متوسّط اقتراحاته السابقة. أفضل: اكتب spec جديد، تمريرة أولى جديدة.

السؤال «هل هذا الكود جيّد؟»#

النموذج يجيب بنعم. هو متحدّث واثق. الأسوأ، أحياناً يهلوس مشاكل غير موجودة. استبدل السؤال المفتوح بسؤال مهيكل: «اسرد الحالات الحدّيّة في هذا الكود غير المغطّاة بالاختبارات أدناه». السؤال المهيكل يحصل على إخراج مفيد؛ المفتوح لا.

ما التالي#

الجزء الثاني من هذه السلسلة عن التطوير المدفوع بالـ spec تحديداً: بنية spec يستطيع النموذج العمل عليها بدون إعادة عمل، أنماط مضادّة، و diff فعليّ من ميزة شحنّاها بهذه الطريقة.

صفحة السلسلة تتابع البقيّة.