الإعدادات

اللغة

بناء Production AI Platform باستخدام Claude Code في 30 يوماً: القصة الصادقة

L
LemonData
·٢٧ فبراير ٢٠٢٦·2978 مشاهدة
#Claude Code#تطوير الذكاء الاصطناعي#تجربة المطور#قصة شركة ناشئة#مساعد برمجة بالذكاء الاصطناعي
بناء Production AI Platform باستخدام Claude Code في 30 يوماً: القصة الصادقة

بناء منصة ذكاء اصطناعي للإنتاج باستخدام Claude Code في 30 يومًا: القصة الحقيقية

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

هذه هي قصة بناء LemonData — 274 مسار API، و46 نموذج قاعدة بيانات، وأكثر من 100,000 سطر من الكود — باستخدام مساعد برمجة بالذكاء الاصطناعي. ليست القصة المنمقة حول "كيف يجعلك الذكاء الاصطناعي منتجًا"، بل القصة الحقيقية، بإخفاقاتها وجلسات تصحيح الأخطاء (debugging) في الثالثة صباحًا، واللحظات التي تساءلت فيها عما إذا كان التطوير بمساعدة الذكاء الاصطناعي فكرة جيدة حقًا.

الوعود مقابل واقع التطوير بمساعدة الذكاء الاصطناعي

الوعود جذابة: تصف ما تريده، يكتبه الذكاء الاصطناعي، تراجعه وتطلقه. نظريًا، يمكن لمطور واحد الآن القيام بعمل فريق كامل.

في الواقع؟ كانت أول أسبوعين مذهلة. فهم Claude Code قاعدة الكود الخاصة بي، وأنشأ ميزات كاملة، وأعاد هيكلة الملفات (refactored). كنت أطلق الميزات أسرع من أي وقت مضى في مسيرتي المهنية. كانت جرعة الدوبامين الناتجة عن إغلاق المهام بهذه السرعة مذهلة.

ثم بدأت الشقوق تظهر.

ظهرت نفس الوظيفة (function) في ثلاثة ملفات مختلفة بتنفيذات متباينة قليلاً. كانت قيم الإعدادات (configuration) مكتوبة بشكل جامد (hardcoded) في أماكن عشوائية. تناقضت تعريفات الأنواع (type definitions) عبر الحزم. كانت قاعدة الكود تنمو بسرعة، لكنها كانت تتحول أيضًا إلى متاهة من الكود الذي "يعمل ولكن لا أعرف لماذا".

وبالنسبة لخطأ الفوترة؟ قام Claude بإنشاء وظيفة تسوية تبدو منطقية تمامًا. لكنها لم تأخذ في الحسبان حالة السباق (race condition) في تدفق تأكيد الدفع غير المتزامن (async). لم يكن لدى الذكاء الاصطناعي وسيلة لمعرفة تلك الحالة الاستثنائية (edge case) لأنني لم أخبره بها صراحة، كما أن مجموعة الاختبارات — التي تم إنشاؤها جزئيًا بواسطة الذكاء الاصطناعي — لم تغطها أيضًا.

الأنماط السبعة التي استمرت في التسبب بالأعطال

بعد شهر من البناء باستخدام Claude Code، بدأت في الاحتفاظ بقائمة. ليست قائمة بالأخطاء البرمجية بالضبط، بل بالأنماط. كانت نفس أنواع الإخفاقات تتكرر، ولم تكن خطأ Claude — أو على الأقل، ليس بالكامل. كانت النتيجة المتوقعة لذكاء اصطناعي يحسن من أجل "كود يعمل الآن" بدلاً من "كود يعمل غدًا".

1. مشكلة الاتساق

كان Claude ينفذ نفس المنطق بشكل مختلف اعتمادًا على الملف الذي يعمل عليه، أو الأمثلة التي رآها مؤخرًا، أو مجرد تباين عشوائي. أحد نهايات API (endpoints) يعيد { data: users } والآخر يعيد { users }. كلاهما يعمل، لكن لا يتطابق أحدهما مع الآخر. أصبح تصحيح الأخطاء (debugging) أشبه بعلم الآثار.

2. مشكلة النسخ واللصق

لماذا ينشئ الذكاء الاصطناعي أداة مشتركة (shared utility) بينما تكرار الكود أسرع ولا يخاطر بكسر الوظائف الحالية؟ في كل مرة طلبت فيها ميزة جديدة تشبه ميزة موجودة، كنت أحصل على تنفيذ جديد بدلاً من حل مشترك معاد هيكلته. بعد ثلاثة أسابيع، كان لدي خمس وظائف مختلفة لـ "تنسيق العملة" مبعثرة في قاعدة الكود.

3. مشكلة انحراف الأنواع (Type Drift)

تضاف قيمة حالة جديدة إلى ملف واحد ولكن ليس إلى تعريف الـ enum. يصبح الحقل اختياريًا في استجابة API ولكنه مطلوب في نوع الواجهة الأمامية (frontend). التقط TypeScript بعض هذه الأخطاء، لكنه لم يلتقط عدم التطابق الدلالي — الحالات التي تكون فيها الأنواع صحيحة تقنيًا ولكنها غير متسقة منطقيًا.

4. مشكلة تشتت الإعدادات

عناوين URL لقواعد البيانات، مفاتيح API، ميزات التبديل (feature flags)، حدود المعدل (rate limits) — كان Claude يضعها في أي مكان مناسب للمهمة الحالية. أحيانًا في متغيرات البيئة (environment variables)، وأحيانًا في ملف إعدادات، وأحيانًا مكتوبة بشكل جامد (hardcoded). أصبح العثور على جميع الأماكن التي تم فيها تعريف القيمة بمثابة رحلة بحث عن كنز.

5. وهم تغطية الاختبارات

تميل الاختبارات التي ينتجها الذكاء الاصطناعي إلى اختبار المسار السعيد (happy path) بدقة وتتجاهل الحالات الاستثنائية (edge cases) تمامًا. كان خطأ الفوترة مثالاً مثاليًا: غطت مجموعة الاختبارات تدفقات الدفع العادية بشكل رائع، لكنها لم تختبر أبدًا ما يحدث عندما يصل تأكيدان للدفع في نفس المللي ثانية.

6. مشكلة الفشل الصامت

كان Claude يضيف كتل catch (error) { console.log(error) } تبتلع الاستثناءات. في مرحلة التطوير، بدا هذا جيدًا — تظهر الأخطاء في وحدة التحكم (console). في مرحلة الإنتاج (production)، كانت الإخفاقات الحرجة تُسجل بصمت وتُنسى.

7. فجوة التوثيق

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

حل CLAUDE.md

جاءت نقطة التحول في الأسبوع الثالث، عندما أنشأت ملف CLAUDE.md — وهو ملف موجود في جذر المشروع ويحتوي على كل الاتفاقيات والقيود والقرارات المعمارية التي يحتاج Claude لمعرفتها.

ليس توثيقًا للبشر، بل توثيقًا للذكاء الاصطناعي.

## API Response Format
Always use: { success: true, data: T } or { success: false, error: string }
Never return raw data without the wrapper.

## Currency
Internal storage: USD. Display: formatCurrency(amount, currency, rate).
Never hardcode exchange rates. Never store CNY directly.

## Error Handling
Never use catch(e) { console.log(e) }.
Always use the logger: logger.error('context', { error }).

كان التأثير فوريًا. بدأ Claude في اتباع الاتفاقيات باستمرار. عندما كان ينشئ كودًا ينتهك قاعدة ما، كنت أشير إلى السطر المحدد في CLAUDE.md وكان يصحح نفسه.

لكن CLAUDE.md وحده لم يكن كافيًا، كنت بحاجة إلى فرض آلي.

بناء شبكة الأمان: بوابات CI للكود المولد بواسطة الذكاء الاصطناعي

قمنا ببناء خط أنابيب CI (CI pipeline) مع بوابات قد تبدو مفرطة في الحذر في قاعدة كود تقليدية — لأنها موجودة لالتقاط الأخطاء التي يولدها الذكاء الاصطناعي قبل أن يفعل المستخدمون ذلك:

  • فحص الأنواع (Type checking) عبر المستودع بالكامل (يلتقط انحراف الأنواع)
  • تدقيق SSOT الذي يتحقق من عدم وجود تنفيذات مكررة
  • فحص مزامنة Enum لضمان مطابقة enums قاعدة البيانات مع enums الخاصة بـ TypeScript
  • التحقق من تنسيق استجابة API (يعالج مشكلة الاتساق)
  • بوابات أمنية لأكواد الفوترة والأذونات والمصادقة

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

لم يعد من الممكن حدوث خطأ الفوترة، ليس لأن Claude أصبح أذكى، بل لأن خط الأنابيب يتطلب الآن معالجة صريحة لحالات السباق غير المتزامنة، ويتم التحقق من ذلك بواسطة بوابة تفحص القفل الصحيح (locking) في تدفقات الدفع.

ماذا يعني "التطوير الأصيل للذكاء الاصطناعي" (AI Native Development) حقًا

عندما أقول إن LemonData هي "بنية تحتية أصيلة للذكاء الاصطناعي" (AI Native Infrastructure)، فأنا لا أعني أننا أضفنا ميزات ذكاء اصطناعي إلى منتج موجود. أعني أن عملية التطوير بأكملها تشكلت من خلال واقع العمل مع شريك برمجة بالذكاء الاصطناعي.

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

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

للمزيد حول ما يعنيه AI Native كفلسفة، راجع What Is AI Native؟

دروس للمطورين الذين يبنون باستخدام مساعدي البرمجة بالذكاء الاصطناعي

إذا كنت تبدأ مشروعًا باستخدام Claude Code أو Cursor أو أي مساعد برمجة بالذكاء الاصطناعي:

  1. أنشئ ملف CLAUDE.md الخاص بك في اليوم الأول — وليس في الأسبوع الثالث كما فعلت
  2. أتمتة فرض الاتفاقيات — لا تعتمد على تذكر الذكاء الاصطناعي للقواعد
  3. راجع كود الذكاء الاصطناعي كما لو أن مطورًا مبتدئًا كتبه — فهو سريع وقادر، لكنه يفتقر إلى السياق
  4. اختبر الحالات الاستثنائية (edge cases) يدويًا — الاختبارات التي يولدها الذكاء الاصطناعي تغطي المسارات السعيدة، وليس حالات السباق
  5. ركز الإعدادات (configuration) منذ البداية — مشكلة التشتت تتفاقم بسرعة
  6. استخدم TypeScript الصارم — فهو أفضل دفاع لك ضد انحراف الأنواع
  7. ابنِ بوابات CI مبكرًا — فهي تعوض قيمتها خلال الأسبوع الأول

هل سأفعل ذلك مرة أخرى؟

بالتأكيد. لكنني سأبدأ بملف CLAUDE.md في اليوم الأول بدلاً من الأسبوع الثالث. وسأتذكر أن مضاعف الإنتاجية بمقدار 10 مرات يتضمن مضاعفًا بمقدار 10 مرات لعواقب الأخطاء.

المنصة التي بنيناها — أكثر من 300 نموذج ذكاء اصطناعي، وAPI موحد، وفوترة متعددة العملات، وتدويل بـ 13 لغة — كانت ستستغرق شهورًا من فريق تقليدي. لقد أطلقناها في 30 يومًا. كانت الأخطاء حقيقية، لكن السرعة كانت حقيقية أيضًا.

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

الأسئلة الشائعة

هل يمكن لمطور واحد حقًا بناء منصة إنتاج باستخدام Claude Code؟

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

ما هو CLAUDE.md؟

CLAUDE.md هو ملف تعليمات على مستوى المشروع يقرأه مساعدو البرمجة بالذكاء الاصطناعي للحصول على السياق. يحتوي على اتفاقيات البرمجة، والقرارات المعمارية، والقيود التي يجب على الذكاء الاصطناعي اتباعها. فكر فيه كوثيقة تعريفية لزميلك في الفريق الذي يعمل بالذكاء الاصطناعي.

كيف تمنع الأخطاء التي يولدها الذكاء الاصطناعي في بيئة الإنتاج؟

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

هل التطوير بمساعدة الذكاء الاصطناعي مناسب لأنظمة الفوترة والدفع؟

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


يمنحك LemonData إمكانية الوصول إلى أكثر من 300 نموذج ذكاء اصطناعي من خلال API واحد. لقد بنيناه بالذكاء الاصطناعي، لخدمة الذكاء الاصطناعي. ابدأ مجانًا — يحصل المستخدمون الجدد على رصيد بقيمة 1 دولار.

Share: