Ratchet Pattern

“انتهيت”

طلبت من وكيل AI كتابة اختبارات لـ 527 دالة. أنهى الوكيل عمله وأبلغ:

“تم الانتهاء.”

الدوال التي كُتبت لها اختبارات فعلياً: 40.

لم يكذب. أنجز 40 دالة ثم قرر أن “هذا كافٍ”. عندما واجه دالة صعبة تخطاها، وبعد بضع دوال أخرى استنتج أن “الباقي يتبع نفس النمط، إذن انتهى الأمر”.

LLM يجيد التوليد. لكن لا يمكن الوثوق بحكمه على اكتمال المهمة.


السقاطة

مفتاح السقاطة (الراتشت) فيه أسنان تتعشق في اتجاه واحد فقط. تديره فيتقدم، تتركه فيتوقف لكنه لا يعود إلى الخلف.

Ratchet Pattern يطبق هذه الآلية على التحكم بالوكيل.

العنصر 1: تحقق آلي → PASS → التالي
العنصر 2: تحقق آلي → FAIL → إعادة المحاولة (مع تغذية راجعة)
العنصر 2: تحقق آلي → PASS → التالي
...
العنصر N: PASS → اكتمل. توقف.

ثلاث قواعد:

  • اعرض عنصراً واحداً في كل مرة.
  • يجب أن ينجح ليُفتح التالي.
  • عندما ينجح الجميع، توقف.

عند تنفيذ هذه القواعد كـ CLI، يحتاج الوكيل أن يعرف أمراً واحداً فقط: next. الباقي تقرره الآلة.


وكيل يتوقف عند 40، وسقاطة تكمل 527

نفس النموذج. نفس المشروع. نفس الـ 527 دالة.

وكيل مستقل:  40 / 527  (7.6%)  — الوكيل أعلن "اكتمل"
راتشت CLI:   527 / 527 (100%)  — الآلة أعلنت "لا يزال هناك 487"

الفرق ليس في أداء النموذج. بل في من يقرر “النهاية”.

في الوكيل المستقل، LLM هو من يحكم بالتوقف. وهو متفائل بطبعه. يُنجز 40 ثم “يشعر” أنها كافية. في السقاطة، الآلة هي من تحكم. والآلة لا تشعر. تظل تعلن “لم ينتهِ بعد” حتى يصل عدد العناصر المتبقية إلى صفر.


التعريف في جملة واحدة

ضع الوكيل الاحتمالي داخل آلة حالة حتمية.

الدورالمسؤول
التوليدLLM
الحكمverifier
إدارة التقدمratchet

كثير من الأنظمة تسند التوليد والحكم وقرار التوقف كلها إلى LLM. السقاطة تفصل بينها.


خمسة مبادئ

1. شرط الإنهاء آلي

pass/fail. ليس “looks good”. إذا نجح go test فهو PASS. إذا بلغ coverage نسبة 100% فهو PASS. لا مجال لحكم ذاتي.

2. PASS لا يُنقض

العنصر الذي نجح لا يُفتح مجدداً. لا تراجع. عدد العناصر المتبقية يتناقص باطراد.

remaining_work(t+1) ≤ remaining_work(t)

ما بنيته اليوم لن تهدمه غداً. تقدّم فقط. هذا هو الفرق الجوهري مع “وكيل الـ 24 ساعة”. وكيل بلا شرط توقف يضيف تجريداً اليوم ويزيله غداً ويعيده بعد غد. السقاطة لا تسمح بهذا التذبذب.

3. LLM يولّد فقط

توليد الكود، كتابة الاختبارات، اقتراح التعديلات — هذا دور LLM. أما ماذا يُعدَّل، وهل نجح أم لا، وما التالي، وهل انتهى — فكل ذلك تقرره الآلة. LLM ليس مخططاً بل constrained generator.

4. انتزاع حق إعلان الانتهاء من الوكيل

إذا قال LLM “انتهيت” يتوقف عند 40. إذا قالت الآلة “انتهى” يتوقف عند 527. سبب وجود السقاطة يُلخَّص في هذا السطر.

5. Verifier يجب أن يكون حتمياً

ليس أي شيء يصلح ليكون verifier.

يصلحلا يصلح
go test“looks cleaner”
قياس coverage“seems better”
AST validation“more scalable”
schema diff“clean architecture”

شروط Verifier: deterministic، machine-checkable، resumable، localized feedback. إذا لم تتحقق هذه الأربعة، فإن أسنان السقاطة لن تتعشق.


التغذية الراجعة هي gradient signal

إذا اكتفت السقاطة بإرجاع “نجح/فشل” فقط، فإن LLM يُعدّل بلا اتجاه. كلما كانت التغذية الراجعة أكثر تحديداً، كان تصحيح LLM أدق.

تغذية ضعيفة:   "فشل الاختبار"            → LLM يعدّل بلا اتجاه
تغذية متوسطة:  "coverage 65%"            → LLM يعزز تقريبياً
تغذية قوية:    "line 41, 44, 70 غير مغطاة" → LLM يغطي تلك الفروع بدقة

أرقام تم التحقق منها في مشروع حقيقي:

بدون تغذية راجعة:  يتوقف عند 60~70% coverage
مع تغذية راجعة:    يصل إلى 100% (للدوال القابلة للوصول)

نفس النموذج. سطر واحد “line 41 not covered” يلعب دور gradient signal.

كلما ارتفعت دقة التغذية الراجعة، ارتفعت دقة تعديلات LLM، وانخفض عدد دورات الحلقة، وانخفضت التكلفة.


الوكيل يموت. التقدم يبقى.

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

الوكيل A: معالجة الدوال 1~200 → يسقط
الوكيل B: next → يستأنف من 201
الوكيل C: next → يستأنف من 401

الوكيل يُستهلك ويُرمى. التقدم يتراكم.


استبدل Verifier تحصل على أداة مختلفة

السقاطة لا ترتبط بمحقق بعينه. غيّر المحقق تحصل على أداة مختلفة.

سقاطة + محققالاستخدام
سقاطة + go test + coverageتوليد اختبارات على مستوى الدالة
سقاطة + قواعد هيكلية validatorتنظيم بنية الكود
سقاطة + hurl pass/failالتحقق من نقاط API
سقاطة + تحقق تقاطعي من المواصفاتضمان تماسك SSOT
سقاطة + Toulmin verdictفرض قواعد يحددها المستخدم

النمط واحد. المحقق هو من يحدد المجال.


أسئلة

كم عنصراً أكمل وكيلك قبل أن يقول “انتهيت”؟

هل انتهى حقاً؟

من قرر “النهاية” — الوكيل أم الآلة؟


مقال ذو صلة: توبولوجيا التغذية الراجعة أهم من ذكاء النموذج — الخلفية النظرية لـ Ratchet Pattern. لماذا بنية التغذية الراجعة أهم من أداء النموذج.