Sessions and memory

Compaction

हर मॉडल की एक संदर्भ विंडो होती है: उसके द्वारा संसाधित किए जा सकने वाले टोकन की अधिकतम संख्या। जब कोई वार्तालाप उस सीमा के पास पहुँचता है, तो OpenClaw पुराने संदेशों को एक सारांश में संक्षिप्त करता है, ताकि चैट जारी रह सके।

यह कैसे काम करता है

  1. वार्तालाप के पुराने चरणों को एक संक्षिप्त प्रविष्टि में सारांशित किया जाता है।
  2. सारांश को सत्र ट्रांस्क्रिप्ट में सहेजा जाता है।
  3. हाल के संदेशों को ज्यों का त्यों रखा जाता है।

Compaction विभाजन बिंदु चुनते समय OpenClaw सहायक के टूल कॉल को उनकी संगत toolResult प्रविष्टियों के साथ जोड़े रखता है। यदि बिंदु किसी टूल ब्लॉक के भीतर पड़ता है, तो OpenClaw सीमा को खिसका देता है, ताकि जोड़ी साथ रहे और वर्तमान असारांशित अंतिम भाग सुरक्षित रहे।

वार्तालाप का पूरा इतिहास डिस्क पर रहता है। Compaction केवल यह बदलता है कि मॉडल अगले चरण में क्या देखता है।

स्वचालित Compaction

स्वचालित Compaction डिफ़ॉल्ट रूप से चालू होता है। यह तब चलता है, जब सत्र संदर्भ सीमा के पास पहुँचता है या मॉडल संदर्भ-ओवरफ़्लो त्रुटि लौटाता है (इस स्थिति में OpenClaw Compaction करके दोबारा प्रयास करता है)।

आपको यह दिखाई देगा:

  • सामान्य Gateway लॉग में embedded run auto-compaction start / complete
  • विस्तृत मोड में 🧹 Auto-compaction complete
  • 🧹 Compactions: <count> दिखाता हुआ /status
OpenClaw द्वारा पहचाने जाने वाले ओवरफ़्लो त्रुटि पैटर्न

OpenClaw दर्जनों प्रदाता-विशिष्ट ओवरफ़्लो त्रुटि स्ट्रिंग से मिलान करता है (Anthropic, OpenAI, Bedrock, Gemini, Ollama, OpenRouter और अन्य)। सामान्य उदाहरण:

  • request_too_large
  • context length exceeded
  • input exceeds the maximum number of tokens
  • input token count exceeds the maximum number of input tokens (Bedrock)
  • input is too long for the model
  • ollama error: context length exceeded

मैन्युअल Compaction

Compaction को बाध्य करने के लिए किसी भी चैट में /compact टाइप करें। सारांश का मार्गदर्शन करने के लिए निर्देश जोड़ें:

text
/compact API डिज़ाइन संबंधी निर्णयों पर ध्यान दें

जब agents.defaults.compaction.keepRecentTokens सेट हो (डिफ़ॉल्ट: 20,000), तो मैन्युअल Compaction उस कट-पॉइंट का पालन करता है और पुनर्निर्मित संदर्भ में हाल के अंतिम भाग को बनाए रखता है। स्पष्ट रखरखाव बजट के बिना, मैन्युअल Compaction एक कठोर चेकपॉइंट की तरह व्यवहार करता है और केवल नए सारांश से आगे बढ़ता है।

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

अपने openclaw.json में agents.defaults.compaction के अंतर्गत Compaction कॉन्फ़िगर करें। सबसे सामान्य विकल्प नीचे सूचीबद्ध हैं; पूरे संदर्भ के लिए सत्र प्रबंधन का विस्तृत विवरण देखें।

किसी भिन्न मॉडल का उपयोग

डिफ़ॉल्ट रूप से, Compaction एजेंट के प्राथमिक मॉडल का उपयोग करता है। सारांशीकरण को किसी अधिक सक्षम या विशिष्ट मॉडल को सौंपने के लिए agents.defaults.compaction.model सेट करें। ओवरराइड एक provider/model-id स्ट्रिंग या agents.defaults.models के अंतर्गत कॉन्फ़िगर किया गया सामान्य उपनाम स्वीकार करता है:

json
{  "agents": {    "defaults": {      "compaction": {        "model": "openrouter/anthropic/claude-sonnet-4-6"      }    }  }}

Compaction शुरू होने से पहले कॉन्फ़िगर किए गए सामान्य उपनाम उनके कैनोनिकल प्रदाता और मॉडल में समाधान किए जाते हैं। यदि कोई सामान्य मान उपनाम और कॉन्फ़िगर किए गए शाब्दिक मॉडल ID—दोनों से मेल खाता है, तो शाब्दिक मॉडल ID को प्राथमिकता मिलती है। मेल न खाने वाला सामान्य मान सक्रिय प्रदाता पर मॉडल ID बना रहता है।

यह स्थानीय मॉडल के साथ भी काम करता है, उदाहरण के लिए सारांशीकरण के लिए समर्पित दूसरा Ollama मॉडल:

json
{  "agents": {    "defaults": {      "compaction": {        "model": "ollama/llama3.1:8b"      }    }  }}

सेट न होने पर, Compaction सक्रिय सत्र मॉडल से शुरू होता है। यदि सारांशीकरण किसी ऐसे प्रदाता त्रुटि के कारण विफल होता है जो मॉडल फ़ॉलबैक के योग्य है, तो OpenClaw सत्र की मौजूदा मॉडल फ़ॉलबैक शृंखला के माध्यम से उस Compaction प्रयास को दोहराता है। फ़ॉलबैक चयन अस्थायी होता है और सत्र स्थिति में वापस नहीं लिखा जाता। स्पष्ट agents.defaults.compaction.model ओवरराइड सटीक रहता है और सत्र की फ़ॉलबैक शृंखला प्राप्त नहीं करता।

पहचानकर्ता संरक्षण

Compaction सारांशीकरण डिफ़ॉल्ट रूप से अपारदर्शी पहचानकर्ताओं को सुरक्षित रखता है (identifierPolicy: "strict")। अक्षम करने के लिए identifierPolicy: "off" से ओवरराइड करें। कस्टम मार्गदर्शन Compaction प्रदाता के summarize() कार्यान्वयन में होना चाहिए।

सक्रिय ट्रांस्क्रिप्ट बाइट सुरक्षा सीमा

जब agents.defaults.compaction.maxActiveTranscriptBytes सेट हो, तो ट्रांस्क्रिप्ट इतिहास के उस आकार तक पहुँचने पर OpenClaw रन से पहले सामान्य स्थानीय Compaction ट्रिगर करता है। यह लंबे समय तक चलने वाले उन सत्रों के लिए उपयोगी है, जहाँ प्रदाता-पक्षीय संदर्भ प्रबंधन मॉडल संदर्भ को स्वस्थ बनाए रख सकता है, जबकि स्थायी ट्रांस्क्रिप्ट इतिहास बढ़ता रहता है। यह अपरिष्कृत बाइट को विभाजित नहीं करता; यह सामान्य Compaction पाइपलाइन से एक अर्थपूर्ण सारांश बनाने के लिए कहता है।

उत्तराधिकारी ट्रांस्क्रिप्ट

जब agents.defaults.compaction.truncateAfterCompaction सक्षम हो, तो OpenClaw मौजूदा ट्रांस्क्रिप्ट को उसी स्थान पर दोबारा नहीं लिखता। यह Compaction सारांश, सुरक्षित स्थिति और असारांशित अंतिम भाग से एक नया सक्रिय उत्तराधिकारी ट्रांस्क्रिप्ट बनाता है, फिर वह चेकपॉइंट मेटाडेटा दर्ज करता है जो शाखा/पुनर्स्थापना प्रवाहों को उस संक्षिप्त उत्तराधिकारी की ओर इंगित करता है। उत्तराधिकारी ट्रांस्क्रिप्ट कम समय की पुनर्प्रयास विंडो के भीतर आने वाले लंबे उपयोगकर्ता चरणों की हूबहू डुप्लिकेट प्रतियाँ भी हटा देते हैं, ताकि चैनल पुनर्प्रयासों की बाढ़ Compaction के बाद अगले सक्रिय ट्रांस्क्रिप्ट में न पहुँचे।

OpenClaw अब नए Compaction के लिए अलग .checkpoint.*.jsonl प्रतियाँ नहीं लिखता। मौजूदा पुराने चेकपॉइंट फ़ाइलों को संदर्भित रहने तक उपयोग किया जा सकता है और सामान्य सत्र सफ़ाई द्वारा हटाया जाता है।

Compaction सूचनाएँ

डिफ़ॉल्ट रूप से, Compaction बिना सूचना के चलता है। Compaction शुरू और पूरा होने पर संक्षिप्त स्थिति संदेश दिखाने तथा Compaction-पूर्व मेमोरी फ़्लश समाप्त हो जाने पर, लेकिन उत्तर फिर भी जारी रहने की स्थिति में, सीमित क्षमता की सूचना प्रदर्शित करने के लिए notifyUser सेट करें:

json5
{  agents: {    defaults: {      compaction: {        notifyUser: true,      },    },  },}

मेमोरी फ़्लश

Compaction से पहले, OpenClaw स्थायी नोट्स को डिस्क पर संग्रहीत करने के लिए एक मौन मेमोरी फ़्लश चरण चला सकता है। जब इस रखरखाव चरण को सक्रिय वार्तालाप मॉडल के बजाय स्थानीय मॉडल का उपयोग करना चाहिए, तब agents.defaults.compaction.memoryFlush.model सेट करें:

json
{  "agents": {    "defaults": {      "compaction": {        "memoryFlush": {          "model": "ollama/qwen3:8b"        }      }    }  }}

मेमोरी-फ़्लश मॉडल ओवरराइड सटीक होता है और सक्रिय सत्र की फ़ॉलबैक शृंखला प्राप्त नहीं करता। विवरण और कॉन्फ़िगरेशन के लिए मेमोरी देखें।

प्लग करने योग्य Compaction प्रदाता

Plugins, Plugin API पर registerCompactionProvider() के माध्यम से कस्टम Compaction प्रदाता पंजीकृत कर सकते हैं। जब कोई प्रदाता पंजीकृत और कॉन्फ़िगर किया जाता है, तो OpenClaw अंतर्निहित LLM पाइपलाइन के बजाय उसे सारांशीकरण सौंपता है।

पंजीकृत प्रदाता का उपयोग करने के लिए, अपनी कॉन्फ़िगरेशन में उसकी ID सेट करें:

json
{  "agents": {    "defaults": {      "compaction": {        "provider": "my-provider"      }    }  }}

provider सेट करने पर mode: "safeguard" स्वतः बाध्य हो जाता है। प्रदाताओं को अंतर्निहित पथ के समान Compaction निर्देश और पहचानकर्ता-संरक्षण नीति मिलती है, और प्रदाता आउटपुट के बाद भी OpenClaw हाल के चरण और विभाजित चरण के प्रत्यय संदर्भ को सुरक्षित रखता है।

Compaction बनाम प्रूनिंग

Compaction प्रूनिंग
यह क्या करता है पुराने वार्तालाप का सारांश बनाता है पुराने टूल परिणामों को छोटा करता है
सहेजा जाता है? हाँ (सत्र ट्रांस्क्रिप्ट में) नहीं (केवल मेमोरी में, प्रति अनुरोध)
दायरा पूरा वार्तालाप केवल टूल परिणाम

सत्र प्रूनिंग एक हल्का पूरक है, जो सारांश बनाए बिना टूल आउटपुट को छोटा करता है।

समस्या निवारण

Compaction बहुत बार हो रहा है? मॉडल की संदर्भ विंडो छोटी हो सकती है या टूल आउटपुट बड़े हो सकते हैं। सत्र प्रूनिंग सक्षम करने का प्रयास करें।

Compaction के बाद संदर्भ पुराना लग रहा है? सारांश का मार्गदर्शन करने के लिए /compact Focus on <topic> का उपयोग करें या मेमोरी फ़्लश सक्षम करें, ताकि नोट्स सुरक्षित रहें।

नई शुरुआत चाहिए? /new Compaction किए बिना नया सत्र शुरू करता है।

उन्नत कॉन्फ़िगरेशन (आरक्षित टोकन, पहचानकर्ता संरक्षण, कस्टम संदर्भ इंजन, OpenAI सर्वर-पक्षीय Compaction) के लिए सत्र प्रबंधन का विस्तृत विवरण देखें।

संबंधित

  • सत्र: सत्र प्रबंधन और जीवनचक्र।
  • सत्र प्रूनिंग: टूल परिणामों को छोटा करना।
  • संदर्भ: एजेंट चरणों के लिए संदर्भ कैसे बनाया जाता है।
  • हुक: Compaction जीवनचक्र हुक (before_compaction, after_compaction)।
Was this useful?
On this page

On this page