Tools

टूल-लूप की पहचान

OpenClaw में दो सहयोगी सुरक्षा-नियंत्रण हैं जो दोहराव वाले टूल-कॉल पैटर्न से बचाते हैं, दोनों को tools.loopDetection के अंतर्गत कॉन्फ़िगर किया जाता है:

  1. लूप पहचान (enabled) - डिफ़ॉल्ट रूप से अक्षम। दोहराए गए पैटर्न और अज्ञात-टूल पुनः प्रयासों के लिए क्रमिक टूल-कॉल इतिहास की निगरानी करती है।
  2. पोस्ट-कॉम्पैक्शन सुरक्षा-नियंत्रण - जब भी enabled स्पष्ट रूप से false नहीं होता, तब सक्षम रहता है। प्रत्येक कॉम्पैक्शन-पुनः प्रयास के बाद सक्रिय होता है और यदि एजेंट विंडो के भीतर उसी (tool, args, result) त्रिक को दोहराता है, तो रन को निरस्त कर देता है।

दोनों सुरक्षा-नियंत्रणों को निष्क्रिय करने के लिए tools.loopDetection.enabled: false सेट करें।

यह क्यों मौजूद है

  • ऐसे दोहराव वाले क्रमों का पता लगाना जो कोई प्रगति नहीं करते।
  • उच्च-आवृत्ति वाले परिणाम-विहीन लूप का पता लगाना (समान टूल, समान इनपुट, दोहराई गई त्रुटियाँ)।
  • ज्ञात पोलिंग टूल के विशिष्ट दोहराए गए-कॉल पैटर्न का पता लगाना।
  • कॉन्टेक्स्ट-ओवरफ़्लो -> कॉम्पैक्शन -> समान-लूप चक्रों को अनिश्चित काल तक चलने देने के बजाय तोड़ना।

कॉन्फ़िगरेशन ब्लॉक

वैश्विक सेटिंग:

json5
{  tools: {    loopDetection: {      enabled: false, // क्रमिक-इतिहास डिटेक्टरों के लिए मुख्य स्विच    },  },}

प्रति-एजेंट ओवरराइड (वैकल्पिक, agents.list[].tools.loopDetection पर):

json5
{  agents: {    list: [      {        id: "safe-runner",        tools: {          loopDetection: {            enabled: true,          },        },      },    ],  },}

प्रति-एजेंट सेटिंग वैश्विक सेटिंग को ओवरराइड करती है।

फ़ील्ड व्यवहार

फ़ील्ड डिफ़ॉल्ट प्रभाव
enabled false क्रमिक-इतिहास डिटेक्टरों के लिए मुख्य स्विच। false पोस्ट-कॉम्पैक्शन सुरक्षा-नियंत्रण को भी अक्षम करता है।

exec के लिए, प्रगति-विहीन हैशिंग स्थिर कमांड परिणामों (स्थिति, निकास कोड, समय-समाप्ति फ़्लैग, आउटपुट) की तुलना करती है और अवधि, PID, सत्र ID तथा कार्यशील निर्देशिका जैसे परिवर्तनशील रनटाइम मेटाडेटा को अनदेखा करती है। आउटबाउंड संदेश-प्रेषण परिणामों को प्रत्येक कॉल के परिवर्तनशील ID (संदेश ID, फ़ाइल ID, टाइमस्टैम्प) हटाकर हैश किया जाता है, इसलिए एक "भेजा गया" परिणाम किसी दूसरे "भेजा गया" परिणाम के समान नहीं दिखता। जब रन ID उपलब्ध होती है, तो इतिहास का मूल्यांकन केवल उसी रन के भीतर किया जाता है, इसलिए निर्धारित Heartbeat चक्र और नए रन पहले के रन से पुराने लूप काउंट प्राप्त नहीं करते।

अनुशंसित सेटअप

  • छोटे मॉडल के लिए, enabled: true सेट करें। प्रमुख मॉडल को क्रमिक-इतिहास पहचान की आवश्यकता बहुत कम होती है और वे पोस्ट-कॉम्पैक्शन सुरक्षा-नियंत्रण से लाभ लेते हुए भी मुख्य स्विच को false छोड़ सकते हैं।
  • पोस्ट-कॉम्पैक्शन सुरक्षा-नियंत्रण सहित सब कुछ अक्षम करने के लिए, tools.loopDetection.enabled: false को स्पष्ट रूप से सेट करें।

पोस्ट-कॉम्पैक्शन सुरक्षा-नियंत्रण

कॉन्टेक्स्ट-ओवरफ़्लो के बाद कॉम्पैक्शन-पुनः प्रयास होने पर, रनर अगले कुछ टूल कॉल पर छोटी विंडो वाला सुरक्षा-नियंत्रण सक्रिय करता है। यदि एजेंट उस विंडो में समान (toolName, argsHash, resultHash) त्रिक पर्याप्त बार उत्सर्जित करता है, तो सुरक्षा-नियंत्रण निष्कर्ष निकालता है कि कॉम्पैक्शन ने लूप को नहीं तोड़ा और compaction_loop_persisted त्रुटि के साथ रन को निरस्त कर देता है।

सुरक्षा-नियंत्रण मुख्य tools.loopDetection.enabled फ़्लैग द्वारा नियंत्रित होता है, लेकिन इसमें एक विशेषता है: फ़्लैग सेट न होने या true होने पर यह सक्षम रहता है, और केवल तभी बंद होता है जब फ़्लैग स्पष्ट रूप से false हो। यह जानबूझकर किया गया है - सुरक्षा-नियंत्रण उन कॉम्पैक्शन लूप से बाहर निकलने के लिए मौजूद है जो अन्यथा असीमित टोकन खर्च करेंगे, इसलिए बिना कॉन्फ़िगरेशन वाले उपयोगकर्ता को भी सुरक्षा मिलती है।

json5
{  tools: {    loopDetection: {      // मुख्य स्विच; क्रमिक डिटेक्टरों के साथ सुरक्षा-नियंत्रण को अक्षम करने के लिए false सेट करें      enabled: true,    },  },}
  • परिणाम बदलते रहने पर सुरक्षा-नियंत्रण कभी निरस्त नहीं करता; केवल विंडो में बाइट-दर-बाइट समान परिणाम इसे ट्रिगर करते हैं।
  • यह केवल कॉम्पैक्शन-पुनः प्रयास के ठीक बाद सक्रिय होता है, रन के अन्य बिंदुओं पर नहीं।

लॉग और अपेक्षित व्यवहार

जब किसी लूप का पता चलता है, तो OpenClaw एक लूप घटना लॉग करता है और गंभीरता के आधार पर अगले टूल-चक्र के लिए चेतावनी देता है या उसे अवरुद्ध करता है, जिससे सामान्य टूल एक्सेस बनाए रखते हुए अनियंत्रित टोकन खर्च और अवरोध से सुरक्षा मिलती है।

  • पहले चेतावनियाँ आती हैं।
  • जब कोई पैटर्न चेतावनी सीमा के बाद भी बना रहता है, तो अवरोधन होता है।
  • गंभीर सीमाएँ अगले टूल-चक्र को अवरुद्ध करती हैं और रन रिकॉर्ड में स्पष्ट लूप-पहचान कारण प्रदर्शित करती हैं।
  • पोस्ट-कॉम्पैक्शन सुरक्षा-नियंत्रण आपत्तिजनक टूल और समान-कॉल संख्या का नाम देते हुए compaction_loop_persisted त्रुटियाँ उत्सर्जित करता है।

संबंधित

Was this useful?
On this page

On this page