لدى OpenClaw آليتا حماية متعاونتان لأنماط استدعاء الأدوات المتكررة:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- اكتشاف الحلقات (
tools.loopDetection.enabled) — معطل افتراضيًا. يراقب سجل استدعاءات الأدوات المتحرك بحثًا عن الأنماط المتكررة وإعادات المحاولة لأدوات غير معروفة. - حارس ما بعد Compaction (
tools.loopDetection.postCompactionGuard) — مفعّل افتراضيًا ما لم تكنtools.loopDetection.enabledمضبوطة صراحةً علىfalse. يتسلح بعد كل إعادة محاولة بعد Compaction ويجهض التشغيل عندما يصدر الوكيل الثلاثية نفسها(tool, args, result)ضمن النافذة.
tools.loopDetection نفسها، لكن حارس ما بعد Compaction يعمل كلما لم يكن المفتاح الرئيسي متوقفًا صراحةً. اضبط tools.loopDetection.enabled: false لإسكات السطحين كليهما.
سبب وجود هذا
- اكتشاف التسلسلات المتكررة التي لا تحقق تقدمًا.
- اكتشاف حلقات عدم وجود نتائج عالية التكرار (الأداة نفسها، المدخلات نفسها، أخطاء متكررة).
- اكتشاف أنماط استدعاءات متكررة محددة لأدوات polling معروفة.
- منع دورات تجاوز السياق ثم Compaction ثم الحلقة نفسها من الاستمرار إلى أجل غير مسمى.
كتلة التهيئة
الإعدادات الافتراضية العامة، مع عرض كل حقل موثق:سلوك الحقول
| الحقل | الافتراضي | التأثير |
|---|---|---|
enabled | false | المفتاح الرئيسي لكواشف السجل المتحرك. يؤدي ضبطه على false أيضًا إلى تعطيل حارس ما بعد Compaction. |
historySize | 30 | عدد استدعاءات الأدوات الحديثة المحتفظ بها للتحليل. |
warningThreshold | 10 | العتبة التي قبلها يُصنف النمط كتحذير فقط. |
criticalThreshold | 20 | عتبة حظر أنماط حلقات عدم التقدم المتكررة. |
unknownToolThreshold | 10 | حظر الاستدعاءات المتكررة إلى الأداة غير المتاحة نفسها بعد هذا العدد من الإخفاقات. |
globalCircuitBreakerThreshold | 30 | عتبة قاطع عدم التقدم العام عبر جميع الكواشف. |
detectors.genericRepeat | true | يحذر من أنماط تكرار الأداة نفسها + المعلمات نفسها، ويحظر عندما تعيد الاستدعاءات نفسها نتائج متطابقة أيضًا. |
detectors.knownPollNoProgress | true | يكتشف الأنماط المعروفة الشبيهة بـ polling دون تغير في الحالة. |
detectors.pingPong | true | يكتشف أنماط ping-pong المتناوبة. |
postCompactionGuard.windowSize | 3 | عدد استدعاءات الأدوات بعد Compaction التي يبقى الحارس خلالها مسلحًا، وعدد الثلاثيات المتطابقة الذي يجهض التشغيل. |
exec، تقارن فحوص عدم التقدم نتائج الأوامر المستقرة وتتجاهل بيانات وقت التشغيل المتقلبة مثل المدة وPID ومعرّف الجلسة ودليل العمل. عندما يكون معرّف تشغيل متاحًا، يُقيّم سجل استدعاءات الأدوات الحديثة ضمن ذلك التشغيل فقط، بحيث لا ترث دورات Heartbeat المجدولة وعمليات التشغيل الجديدة أعداد حلقات قديمة من عمليات تشغيل سابقة.
الإعداد الموصى به
- للنماذج الأصغر، اضبط
enabled: trueواترك العتبات على قيمها الافتراضية. نادرًا ما تحتاج النماذج الرائدة إلى اكتشاف السجل المتحرك، ويمكنها إبقاء المفتاح الرئيسي علىfalseمع الاستفادة من حارس ما بعد Compaction. - أبقِ العتبات مرتبة على النحو
warningThreshold < criticalThreshold < globalCircuitBreakerThreshold. - إذا حدثت نتائج إيجابية كاذبة:
- ارفع
warningThresholdو/أوcriticalThreshold. - اختياريًا ارفع
globalCircuitBreakerThreshold. - عطّل الكاشف المحدد الذي يسبب المشكلات فقط (
detectors.<name>: false). - قلّل
historySizeلسياق تاريخي أقل صرامة.
- ارفع
- لتعطيل كل شيء (بما في ذلك حارس ما بعد Compaction)، اضبط
tools.loopDetection.enabled: falseصراحةً.
حارس ما بعد Compaction
عندما يكمل المشغّل إعادة محاولة Compaction بعد تجاوز السياق، يسلّح حارسًا قصير النافذة يراقب استدعاءات الأدوات القليلة التالية. إذا أصدر الوكيل الثلاثية نفسها(toolName, argsHash, resultHash) عدة مرات ضمن النافذة، يستنتج الحارس أن Compaction لم يكسر الحلقة ويجهض التشغيل بخطأ compaction_loop_persisted.
يُضبط الحارس عبر علم tools.loopDetection.enabled الرئيسي مع تفصيل واحد: يبقى مفعّلًا عندما يكون العلم غير مضبوط أو true ولا يتعطل إلا عندما يكون العلم false صراحةً. هذا مقصود. يوجد الحارس للخروج من حلقات Compaction التي كانت ستحرق رموزًا غير محدودة، لذا يحصل المستخدم بلا تهيئة على الحماية كذلك.
- قيمة
windowSizeالأقل أكثر صرامة (محاولات أقل قبل الإجهاض). - قيمة
windowSizeالأعلى تمنح الوكيل محاولات تعافٍ أكثر. - لا يجهض الحارس أبدًا عندما تتغير النتائج، بل فقط عندما تكون النتائج متطابقة بايتًا عبر النافذة.
- نطاقه ضيق عمدًا: لا يعمل إلا مباشرةً بعد إعادة محاولة Compaction.
يعمل حارس ما بعد Compaction كلما لم يكن العلم الرئيسي
false صراحةً، حتى إذا لم تكتب كتلة tools.loopDetection مطلقًا. للتحقق، ابحث عن post-compaction guard armed for N attempts في سجل Gateway مباشرةً بعد حدث Compaction.السجلات والسلوك المتوقع
عند اكتشاف حلقة، يبلغ OpenClaw عن حدث حلقة وإما يخفف دورة الأداة التالية أو يحظرها حسب الشدة. يحمي هذا المستخدمين من إنفاق الرموز المنفلت والتوقفات مع الحفاظ على وصول الأدوات الطبيعي.- تأتي التحذيرات أولًا.
- يتبعها الكبح عندما تستمر الأنماط بعد عتبة التحذير.
- تحظر العتبات الحرجة دورة الأداة التالية وتعرض سبب اكتشاف الحلقة بوضوح في سجل التشغيل.
- يصدر حارس ما بعد Compaction أخطاء
compaction_loop_persistedمع اسم الأداة المخالفة وعدد الاستدعاءات المتطابقة.
ذات صلة
موافقات Exec
سياسة السماح/الرفض لتنفيذ shell.
مستويات التفكير
مستويات جهد الاستدلال وتفاعل سياسة المزوّد.
الوكلاء الفرعيون
إنشاء وكلاء معزولين لحصر السلوك المنفلت.
مرجع التهيئة
مخطط
tools.loopDetection الكامل ودلالات الدمج.