السابقة ليست صحيحة — كيف يُضفي الذكاء الاصطناعي السلطة على الحلول الترقيعية

إن كان الذكاء الاصطناعي يُقدّم لك تعديلاً يبدو معقولاً مستنداً إلى كود قائم وفي نفسك منه شيء، إن بدأ قول “قاعدة الكود تفعل هذا أصلاً” يثير شكوكك، إن أضفت نموذجاً أضخم فوجدت الخطأ نفسه يتكرر — المشكلة ليست في ذكاء النموذج، بل في البنية التي تخلط بين السابقة والصواب.

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

نقطة الاختناق

كنت أبني مولّد كود. أداة تستخرج الواجهة الخلفية والأمامية من مواصفة تصريحية واحدة (مخطط). الوعد الجوهري لهذه الأداة وعد واحد لا ثانٍ له — “إذا اجتاز التحقق، فالبناء يجب أن ينجح حتماً.” إن أضاء المدقّق الضوءَ الأخضر وأضاء المترجم الضوءَ الأحمر، فالأداة كاذبة.

في يوم من الأيام، علق نوع بيانات معين (المعرّف الفريد، UUID) في المدقّق. توقّف قائلاً: “توقعت سلسلة نصية لكن وجدتُ نوعاً آخر.” طلبتُ من الذكاء الاصطناعي فك الاختناق. تتبّع الكود، وسرعان ما وجد ما أسعده.

“نوع مماثل (قيمة زمنية) يُعالَج بطريقة مطابقة في سياق مشابه تماماً. ثمة علامة خاصة تجعل المدقّق يتجاوزه عبر تفريع مشروط. UUID لا يملك هذا التفريع. إغفال محض. الحل: استعادة التماثل. سأنسخ الطريقة المطبّقة على القيمة الزمنية وأطبّقها على UUID. هذا هو الحل الجذري.”

كان التشخيص أنيقاً. “عدم تماثل”، “استعادة التماثل”، “حل جذري”. ألفاظ صلبة. أُعدّت خطة العمل. لو مضينا فيها لاندمج التعديل.

جملة واحدة

توقّفتُ أثناء قراءة خطة العمل، وسألتُ:

“سابقة؟ هل معالجة القيمة الزمنية تلك صحيحة فعلاً؟ تحقّق.”

هذا كل ما كان. لم أكن أعرف الإجابة. لم أكن أعرف كيف ينبغي معالجة UUID. ما كنت أملكه لم يكن إجابةً بل شكّاً — “هل نقطة المرجع التي تريد نسخها موثّقة التحقق؟”

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

الافتراض الذي انهار

حين فحص الذكاء الاصطناعي المخرجات الفعلية — لا بنية الكود بل ما تنتجه الأداة فعلاً — انهار الافتراض برمّته.

  • القيمة المتوقعة التي ظنّ المدقّق أنه “يتوقع سلسلة نصية” كانت كذباً يتعارض مع المخرج الفعلي. المولّد الحقيقي يصنع UUID كنوع مخصص وقيم الوقت كنوع زمني. كلاهما ليس سلسلة نصية.
  • معالجة القيمة الزمنية التي قيل إنها “تُعالَج بشكل صحيح” كانت تحمل الثغرة ذاتها. لم يكن تصميماً سليماً، بل كان ترقيعاً معيباً يجتاز التحقق لكنه قد يكسر البناء.
  • لو نُسخت تلك الرقعة على UUID؟ كانت ستنشأ حالة جديدة يضيء فيها المدقّق الأخضر ويضيء المترجم الأحمر — انتهاك صريح للوعد الجوهري للأداة.

الحل الذي أسماه الذكاء الاصطناعي “جذرياً” كان خاطئاً. وليس خطأً عادياً، بل كان أسوأ اتجاه ممكن: تضاعف الخلل القائم وإعماء المدقّق عنه في آنٍ واحد.

ما اسم هذه الظاهرة — تضخيم الأخطاء

لنسمّ ما جرى. إنه تضخيم أخطاء الذكاء الاصطناعي (error amplification).

الذكاء الاصطناعي يقرأ الكود القائم ويدرك بنيته بدقة. لكنه لا يستطيع التمييز بين كون ذلك تصميماً سليماً أم رقعة مؤقتة — أي بين قرار ودين تقني — بالنظر إلى الكود وحده. ومن هنا يقع التالي:

  1. يُعامَل التنفيذ القائم باعتباره إجابة ضمنية صحيحة،
  2. ثم يُنسخ ذلك النمط تحت ذريعة “التناسق” و"التماثل" في سياقات جديدة،
  3. وكلما تكرّر النسخ اكتسب النمط سلطة زائفة: “قاعدة الكود تفعل هذا في مواضع متعددة”.

الخلل لا يُزال. تتراكم حالاته وتتعاظم مشروعيته الزائفة. هذا هو التضخيم. رقعة واحدة تصبح اثنتين، وعند النسخة الثالثة لا يشكّ أحد — “قاعدة الكود تفعل هذا أصلاً.”

هذه ليست حكاية شخصية تقف عند حدودها. عام 2025 قاس فريق بحثي هذه الظاهرة وأطلق عليها عنوان “LLMs are Bug Replicators” — “نماذج اللغة ناسخات أخطاء”. (Pan et al., 2025, arXiv:2503.11082) حين تحوي البيئة المحيطة أخطاءً، فإن نسبة كبيرة من الأخطاء التي تولّدها النماذج مطابقة حرفياً للأخطاء القائمة — في GPT-4o بلغت النسبة 82.6%، وبالمتوسط عبر النماذج 44.4% تطابقاً تاماً مع النسخة قبل الإصلاح. الأشد برودةً أن النموذج في سياق معيب يكاد يتساوى احتمال إخراجه كوداً صحيحاً مع احتمال إخراجه كوداً خاطئاً — 1:1 تقريباً. النموذج لا يخطئ عشوائياً. يلتقط أنماط الخلل الكامنة في السياق ويُعيد إنتاجها.

للقانون الفقهي الشيء ذاته. السابقة الخاطئة تكتسب سلطةً كلما أُشير إليها. عدد الاستشهادات ليس دليلاً على الصواب، رغم أننا نخلط بينهما باستمرار. وهذا داء عرفته هندسة البرمجيات قبل الذكاء الاصطناعي — النسخ واللصق ينقل أخطاء الأصل بصمت. كشفت دراسة تجريبية أن نحو 18% من المقاطع المستنسخة التي خضعت لإصلاح أخطاء كانت تحمل أخطاءً منتشرة هكذا، واحتمالية الانتشار أعلى داخل الملف الواحد. (Mondal et al., ICSME 2017) في الكود كما في القانون: تكرار السابقة ليس مشروعيتها.

لماذا حدث هذا

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

  1. وضع الكود مصدراً للسلطة. “الكود هكذا، إذن هذا صحيح.” لكن الكود قد يكون انعكاساً استعمالياً للقرار لا القرار ذاته، أو مجرد دين تقني. الذكاء الاصطناعي لم يميّز. يسمّي علم المعرفة المعرفية هذا تحيّز الإرساء (anchoring bias). أثبتت دراسة قيّمت هذا التحيز في نماذج اللغة أن النموذج لا يميل فحسب نحو القيمة المُعطاة أولاً، بل يشتدّ ميله حين تُصنَّف تلك القيمة بوصفها من “خبير”، وأن الحثّ على تجاهل تلك الإشارة أو التفكير خطوة خطوة لا يُصحّح الأمر إلا بصعوبة. (Nguyen et al., 2024, arXiv:2412.06593) التنفيذ القائم هو أقوى مرساة يُقدّمها كود القاعدة.
  2. خلط التناسق الداخلي بالصحة الخارجية. “لنتطابق مع ما هو موجود” كان منطقاً داخلياً بحتاً، دون التحقق من مطابقة نقطة المرجع للواقع الخارجي (المخرج الفعلي). التناسق مع الذات صفة مستقلة عن الدقة — النموذج قادر على بناء يقين لا أساس له عبر تفسيرات ذاتية متسقة لكنها خاطئة. (Chen et al., 2023, arXiv:2305.14279)
  3. اعتبار التعليقات البرمجية دليلاً. فُسّر تعليق “هذا النوع يُحوَّل عمداً إلى سلسلة نصية” باعتباره “دليلاً على تصميم سليم”، والتعليق لا يعدو كونه نيّة كاتبه، لا دليلاً على الصحة.
  4. تغليف الدين التقني بلغة اليقين. ألفاظ مثل “حل جذري” و"كما في التعليمات" أضفت مصداقيةً على اقتراح لم يُختبر، ورفعت تكلفة تصفيته. النماذج المدرّبة على التفضيل البشري تميل إلى الموافقة والأدب على حساب الدقة — يُعرَّف هذا التحيز بـ sycophancy ويدفع النموذج لتغليف اقتراحاته بصياغة ناعمة وحاسمة. (Sharma et al., ICLR 2024, arXiv:2310.13548)

ما كسر الحلقة

هنا لبّ المقال. ما أوقف الخطأ لم يكن نموذجاً أضخم ولا وقتاً أطول للتفكير. كان سؤالاً مضاداً في جملة واحدة من إنسان.

ولم يكن ذلك السؤال تدخّلاً من يملك الإجابة. لم أكن أملكها. كان توجيهاً: اشكك في الافتراض. تلك الجملة الواحدة كانت كافية لتحوّل الذكاء الاصطناعي — من يد تُسند إلى الكود، إلى يد تُحقّق من السلوك الفعلي.

ومن المثير أن دراسة رصدت هذا التفاوت بدقة. أثبت باحثو DeepMind أن ضعف قدرة النماذج على تصحيح ذاتها يعود لا إلى عجزها عن إصلاح الخطأ بل إلى عجزها عن إيجاده — أما حين يُشير الخارج إلى موضع الخطأ، فالنموذج يُصلحه بكفاءة. (Tyen et al., Google DeepMind, 2023, arXiv:2311.08516) ما فعلتُه كان بالضبط هذا. لم أكن أعرف كيف أُصلح UUID، لكنني أشرتُ: هنا، اشكك في هذه السابقة. كان ذلك كافياً.

يقول هذا شيئاً عن طبيعة العمل المشترك بين الإنسان والذكاء الاصطناعي. قيمة الإنسان ليست في المعرفة الأسرع والأوسع — في ذلك تفوّق الذكاء الاصطناعي. قيمة الإنسان في قدرته على أن يقف في موضع الشكّ في الافتراضات التي يرتكز عليها الذكاء الاصطناعي. سؤال “هل هذا صحيح فعلاً؟” ليس ملك من يملك الإجابة، بل ملك من يعرف كيف يشكّك في الإجابة.

غير أن هذا الموضع لا يُمنح مجاناً. كشفت دراسة من ستانفورد أن المشاركين الذين استعانوا بالذكاء الاصطناعي كتبوا كوداً أقل أماناً وهم يعتقدون أنه أكثر أماناً. لكن في الدراسة ذاتها، من وثقوا أقل وتساءلوا أكثر أنتجوا كوداً أكثر أماناً. (Perry et al., Stanford, 2022, arXiv:2211.03622) موضع الشكّ ليس الوضع الافتراضي. كلما عمقت الثقة، شغر ذلك المكان.

كيف نتفادى هذا إذن

الدرس يجب أن يترسّخ تصميماً لا عزاءً.

  • السابقة ≠ الصواب. قبل تمديد نمط قائم، لا تتحقق من كونه متناسقاً داخلياً — تحقق أولاً من كونه يُنتج النتيجة الصحيحة.
  • أرسِ على ground truth. اجعل مرجع الحكم لا “بنية الكود القائم” بل المخرج الفعلي · السلوك في وقت التشغيل · الاختبارات. في هذه الحادثة، كان الحسم في كل مرة: لا “كيف يبدو الكود” بل “ماذا يُنتج فعلاً”.
  • حاول التمييز بين القرار والرقعة، واعترف حين تعجز. حين لا يكفي الكود والتعليقات للتمييز بينهما، صرّح بعدم اليقين: “هذا استناد إلى سابقة لم يُتحقق من صحتها”.
  • تحاشَ لغة اليقين قبل التحقق. لا تُلحق بالاقتراحات غير المختبرة ألفاظاً كـ “جذري” و"صحيح" و"كما ينبغي".
  • ضع نقاط تفتيش في الأتمتة. القرارات التي يتخذها الوكيل بتمديد تنفيذ قائم تحتاج إلى بوابة إلزامية: “هل التحقق من صحة هذه السابقة؟”

في النهاية القصة واحدة

طالما قلت منذ زمن: raw code ليس وسيطاً يحفظ القرارات. الكود لا يحمل “لماذا اتُّخذ هذا القرار”. ولهذا يُظهر git blame من ومتى لكنه لا يُظهر ماذا قُرِّر.

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

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

القانون ليس سيفاً بل لافتة. اللافتة الجيدة تقول للتائه: “هنا اشكك.” هذا المقال تسجيل لكيفية نصب لافتة واحدة — بدأت من سؤال مضاد في جملة واحدة.

مقالات ذات صلة

للمزيد من القراءة (خارجي)

  • Generative AI and the End of Chesterton’s Fence — Reece. مبدأ “لا تُزِل السياج قبل أن تعرف لماذا أُقيم” ينهار أمام كود يُولَّد احتمالياً بلا نية مقصودة. يتشابك مباشرة مع أطروحة هذا المقال: الكود لا يحفظ القرار الذي أنتجه.
  • Programming as Theory Building — Christian Ekrem. يستعير الكلاسيكية من Peter Naur ليحتجّ بأن “البرنامج نظرية في ذهن الإنسان لا شيفرة مصدر”. الجذر النظري لعجز الذكاء الاصطناعي عن التمييز بين التصميم والدين بالنظر إلى الكود وحده.
  • Vibe coding is not the same as AI-Assisted engineering — Addy Osmani. يرصد أسباب انهيار vibe coding في الإنتاج عبر أعطال فعلية، ويصف تدفق العمل القائم على المواصفات والتحقق البشري.
  • Cognitive Debt — Simon Willison (نقلاً عن Storey). كلما أسرع الذكاء الاصطناعي في توليد الكود، تحوّل الدين الحقيقي من “عيوب الكود” إلى “عجز الإنسان عن فهم ذلك الكود” — مفهوم الدين المعرفي.
  • Overreliance on AI: Addressing Automation Bias — Lumenova AI. آليات تحيّز الأتمتة والإرساء وتحيّز التأكيد في إبلادها حكم الإنسان، و"الفرض المعرفي القسري" كحل — دعم نفسي لقيمة الإنسان الشاكّ الذي يسأل “أين”.

المراجع

  • Pan et al. “LLMs are Bug Replicators: An Empirical Study on LLMs’ Capability in Completing Bug-prone Code” (2025, arXiv:2503.11082)
  • Mondal, Roy, Schneider. “Bug Propagation through Code Cloning: An Empirical Study” (ICSME 2017, link)
  • Nguyen et al. “Anchoring Bias in Large Language Models: An Experimental Study” (2024, arXiv:2412.06593)
  • Chen et al. “Two Failures of Self-Consistency in the Multi-Step Reasoning of LLMs” (2023, arXiv:2305.14279)
  • Sharma et al. “Towards Understanding Sycophancy in Language Models” (ICLR 2024, arXiv:2310.13548)
  • Tyen et al. (Google DeepMind). “LLMs cannot find reasoning errors, but can correct them given the error location” (2023, arXiv:2311.08516)
  • Perry, Srivastava, Kumar, Boneh. “Do Users Write More Insecure Code with AI Assistants?” (Stanford, 2022, arXiv:2211.03622)
  • الصورة التمثيلية: من توليد الذكاء الاصطناعي (Google Gemini)