Ratchet Pattern Image: AI generated

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

“انتهيت”

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

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

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

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

LLM يجيد التوليد. لكن لا يمكن الوثوق بحكمه على اكتمال المهمة. أثبت Huang وآخرون تجريبياً أن التصحيح الذاتي لـ LLM بدون تغذية راجعة خارجية قد يؤدي في الواقع إلى تراجع الأداء[1].


السقاطة

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

Ratchet Pattern يطبق هذه الآلية على التحكم بالوكيل. كود التحقق المكتوب بهذا النمط يُسمى ratchet code — كود لا يسمح أبداً بالتراجع إلى ما دون مستوى تحقق سبق اجتيازه.

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

ثلاث قواعد:

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

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


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

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

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

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

في الوكيل المستقل، LLM هو من يحكم بالتوقف. وهو متفائل بطبعه. يُنجز 40 ثم “يشعر” أنها كافية. في تحليل Cemri وآخرين لتتبع 1,600 عملية تشغيل وكيل، شكّل الإنهاء المبكر — إعلان تحقيق الهدف قبل تحقيقه فعلياً — 6.2% من إجمالي أنماط الفشل[2]. في السقاطة، الآلة هي من تحكم. والآلة لا تشعر. تظل تعلن “لم ينتهِ بعد” حتى يصل عدد العناصر المتبقية إلى صفر.


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

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

الدورالمسؤول
التوليد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. أثبت بحث Self-Debug لـ Chen وآخرين أن التصحيح التكراري بإعادة رسائل خطأ المترجم/وقت التشغيل إلى النموذج يحسّن دقة الكود بشكل كبير[3].

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


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

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

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

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


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

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

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

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


أسئلة

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

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

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


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

المصادر

[1] Jie Huang, Xinyun Chen, Swaroop Mishra, Huaixiu Steven Zheng, Adams Wei Yu, Xinying Song, Denny Zhou. “Large Language Models Cannot Self-Correct Reasoning Yet.” ICLR 2024. arXiv:2310.01798

[2] Mert Cemri, Melissa Z. Pan, Shuyi Yang, Lakshya A. Agrawal, Tanay Chopra, Aditya Tiwari, Kurt Keutzer, Aditya Parameswaran, et al. “Why Do Multi-Agent LLM Systems Fail?” NeurIPS 2025 Datasets and Benchmarks Track. arXiv:2503.13657

[3] Xinyun Chen, Maxwell Lin, Nathanael Scharli, Denny Zhou. “Teaching Large Language Models to Self-Debug.” ICLR 2024. arXiv:2304.05128

[4] Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, Shunyu Yao. “Reflexion: Language Agents with Verbal Reinforcement Learning.” NeurIPS 2023. arXiv:2303.11366

[5] Aman Madaan, Niket Tandon, Prakhar Gupta, Skyler Hallinan, Luyu Gao, Sarah Wiegreffe, Uri Alon, Nouha Dziri, Shrimai Prabhumoye, Yiming Yang, et al. “Self-Refine: Iterative Refinement with Self-Feedback.” NeurIPS 2023. arXiv:2303.17651

[6] Yujia Li, David Choi, Junyoung Chung, Nate Kushman, Julian Schrittwieser, Remi Leblond, Tom Eccles, et al. “Competition-Level Code Generation with AlphaCode.” Science 378(6624): 1092-1097, 2022. DOI:10.1126/science.abq1158

[7] Carlos E. Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei, Ofir Press, Karthik R. Narasimhan. “SWE-bench: Can Language Models Resolve Real-World GitHub Issues?” ICLR 2024. arXiv:2310.06770


سجل التغييرات

  • 2026-05-15: الإصدار الأول