جدار الثلاثة أشهر


تبني SaaS بـ vibe coding. البداية سريعة. “أنشئ تسجيل الدخول” — 30 ثانية. “أضف المدفوعات” — دقيقتان. MVP يُطلق في ثلاثة أسابيع.

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

هذا يُسمى logic drift — تعديل الذكاء الاصطناعي غير المقصود لمنطق الأعمال الحالي. أخطاء الانحدار موجودة في التطوير التقليدي أيضاً. لكن logic drift مختلف. تغييرات لم يقصدها المطور تحدث بشكل غير مرئي عبر قاعدة الكود بأكملها. كل prompt يبدأ في context window جديدة.


الـ Drift بالأرقام

هذا ليس رأياً. هناك بيانات.

السرعة تكلّف تعقيداً. فريق بحثي من جامعة كارنيجي ميلون قارن 807 مستودعاً على GitHub قبل وبعد تبني Cursor (MSR 2026). زادت إضافات الكود 3-5 أضعاف في الشهر الأول. بعد شهرين، اختفت ميزة السرعة. ما بقي: تحذيرات التحليل الثابت ارتفعت 30%، وتعقيد الكود ارتفع 41% — بشكل دائم.

لم يصبح أسرع — بل أصبح أبطأ. أجرت منظمة METR البحثية غير الربحية تجربة عشوائية محكومة مع 16 مطوراً متمرساً في المصادر المفتوحة (2025). في المشاريع التي يعرفونها جيداً، استغرقت المجموعة التي استخدمت أدوات AI وقتاً أطول بـ 19% لإكمال المهام. ومع ذلك، أدرك المطورون أنفسهم تسارعاً بنسبة 20%. فجوة 39 نقطة مئوية بين الإدراك والواقع. قد تختلف النتائج في المشاريع الجديدة، لكن افتراض “AI = دائماً أسرع” انكسر.

على النطاق الواسع، الاستقرار ينهار. وفقاً لتقرير Google DORA (2025)، كل زيادة 25% في تبني AI ترتبط بانخفاض 7.2% في استقرار تسليم البرمجيات.

وقد انهار فعلاً. فرضت Amazon استخدام أدوات AI coding على مستوى الشركة في 2025 ونشرت 21,000 AI agent. في نفس الفترة، تم تسريح حوالي 30,000 موظف، مما قلّص قدرة المراجعة بشكل كبير. أدى الجمع بين الكود المُولّد بسرعة بواسطة AI وتقليص طاقم المراجعة إلى 4 حوادث Sev-1 في 90 يوماً. في 5 مارس 2026، تسبب انقطاع لمدة 6 ساعات في خسارة تقدر بـ 6.3 مليون طلب. جاء في الوثائق الداخلية: “توليد الكود السريع من GenAI يكشف ثغرات بشكل غير مقصود، والضمانات الحالية غير كافية تماماً.”


“نفّذ TDD” ليس الجواب

النصيحة الشائعة لـ logic drift في vibe coding هي “اكتب اختبارات”. الاتجاه صحيح، لكن كيف تقدّم الاختبارات يحدد النتيجة.

دراسة TDAD (arxiv 2026) اختبرت هذا بدقة. تم تقييم Qwen3-Coder 30B على 100 حالة من SWE-bench Verified.

الشرطمعدل الانحدار
خط الأساس (بدون تعليمات اختبار)6.08%
تعليمات إجرائية “نفّذ TDD”9.94% (أسوأ)
ملفات الاختبار المتأثرة مقدمة في الـ context1.82% (انخفاض 70%)

إخبار الـ agent بـ “نفّذ TDD” يزيد الأمور سوءاً. الـ agent ينحرف عن المهمة الأصلية محاولاً اتباع التعليمات الإجرائية. لكن تقديم “ملفات الاختبار هذه يجب أن تنجح” كـ context ملموس يقلل الانحدارات بنسبة 70%.

الفرق واضح. ليس تعليمات “كيف تختبر”، بل عقود “ما يجب أن ينجح”.


Hurl: عقود في Plain Text

Hurl هي أداة اختبار تعلن طلبات HTTP والاستجابات المتوقعة في plain text. تتم صيانتها من قبل Orange (فرانس تيليكوم)، وهي ملف Rust ثنائي بدون أي تبعيات وقت التشغيل، 18.7 ألف نجمة على GitHub. سريعة بما يكفي للتشغيل في كل commit في CI.

# Login succeeds
POST http://localhost:8080/api/auth/login
{
  "email": "test@example.com",
  "password": "secret123"
}
HTTP 200
[Asserts]
jsonpath "$.token" exists
jsonpath "$.user.email" == "test@example.com"

# Unauthenticated access returns 401
GET http://localhost:8080/api/pages
HTTP 401

عقدان. تسجيل الدخول يجب أن يُرجع 200 مع token. الوصول غير المصادق يجب أن يُرجع 401.

عندما يُودع هذا الملف في git ويُشغّل في كل commit في CI — في اللحظة التي “يُنظّف” فيها الذكاء الاصطناعي منطق المصادقة ويتحول 401 إلى 200، يُرفض الـ commit. يُلتقط الـ drift قبل وصوله إلى الإنتاج.


لماذا Hurl

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

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

اختبارات الوحدةHurl
تتحقق منالدوال الداخليةعقد HTTP
عند إعادة الهيكلة بـ AIتُعدّل معاًبدون تغيير
كشف الـ driftمشروط (إذا مُقفل)طبيعي
الاعتماد على بنية الكودعالٍلا يوجد
قابلية القراءة البشريةمستوى الكودPlain text
التوليد بواسطة LLMيتطلب فهم بنية الكوديحتاج HTTP فقط

ما يتحقق منه Hurl ليس الكود بل السلوك. الكود يمكن تغييره بحرية بواسطة AI. السلوك يجب ألا يتغير. هذا التمييز هو مفتاح التقاط الـ drift.


قفل Ratchet

عندما تنجح اختبارات Hurl، أقفلها. هذا هو الـ ratchet.

1. Write Hurl tests for current API (or auto-extract)
2. Run on every commit in CI
3. Passing tests cannot be deleted or modified
4. New features require new Hurl tests
5. All existing + all new tests must pass to merge

أخبر الـ agent “أعد هيكلة هذا الكود” وسيغيّر الكود بحرية. لكن إذا فشلت اختبارات Hurl، يُرفض الـ commit. يجب على الـ agent الحفاظ على جميع السلوكيات الحالية أثناء إعادة الهيكلة. drift في الحالات الحدية غير المغطاة بـ Hurl لا يزال ممكناً، لكن للسلوكيات المغطاة، يُكبح الـ drift هيكلياً.

هذا يتوافق تماماً مع نتائج دراسة TDAD. ليست تعليمات إجرائية “اكتب اختبارات”، بل عقد ملموس “ملفات Hurl هذه يجب أن تنجح”. الـ agent يمكنه اختيار الطريقة، لكن لا يمكنه انتهاك العقد.


يعمل على الأنظمة القديمة أيضاً

تشغّل بالفعل برمجيات vibe coding في الإنتاج؟ لا حاجة للبدء من جديد.

الخطوة 1: التقط السلوك الحالي في Hurl.

إذا كانت وثائق API موجودة، ترجمها مباشرة إلى Hurl. إذا لم تكن، اجعل agent يقرأ الكود الحالي ويكتب اختبارات Hurl. الهدف هو إعلان “هكذا يعمل حالياً” في plain text لكل endpoint.

الخطوة 2: اربطها بـ CI.

تحقق من نجاح جميع اختبارات Hurl وأضفها كشروط merge.

الخطوة 3: أنت آمن الآن.

سواء أعاد AI الهيكلة أو أضاف ميزات، Hurl يحمي السلوك الحالي. إذا حدث drift، يلتقطه CI فوراً.

ليس عمل أساسات — تقوية زلزالية. تعزيز المبنى دون إغلاق المحل.


ليست نهاية Vibe Coding — بل تطوّره

أعلن Andrej Karpathy، الذي صاغ مصطلح “vibe coding”، بعد عام بالضبط في فبراير 2026 أن “عصر vibe coding انتهى”. النموذج الجديد هو agentic engineering — البشر لا يكتبون الكود، بل ينسّقون agents تخطط وتنفذ وتختبر بشكل مستقل.

وضع Thoughtworks Technology Radar (2025) Spec-Driven Development عند مستوى “Assess”. نشر فريق Martin Fowler تحليلاً لأدوات SDD. الصناعة تتقارب في نفس الاتجاه.

اختبارات Hurl هي أصغر وحدة في هذا التحول. لا تحتاج 10 مواصفات. لا تحتاج لتعلم OpenAPI. ملف Hurl واحد هو عقد واحد. وهذا العقد يمنع الـ drift هيكلياً دون تقييد حرية الـ agent.

لا تغيّر النموذج. أضف عقداً.


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


References