Sessions and memory
Compaction
हर मॉडल की एक कॉन्टेक्स्ट विंडो होती है: वह अधिकतम टोकन संख्या जिसे वह प्रोसेस कर सकता है। जब कोई वार्तालाप उस सीमा के निकट पहुँचता है, तो OpenClaw पुराने संदेशों को एक सारांश में संक्षिप्त करता है, ताकि चैट जारी रह सके।
यह कैसे काम करता है
- वार्तालाप के पुराने चरणों को एक संक्षिप्त प्रविष्टि में सारांशित किया जाता है।
- सारांश को सत्र ट्रांसक्रिप्ट में सहेजा जाता है।
- हाल के संदेशों को यथावत रखा जाता है।
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_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokens(Bedrock)input is too long for the modelollama error: context length exceeded
मैन्युअल Compaction
Compaction को बाध्य करने के लिए किसी भी चैट में /compact टाइप करें। सारांश का मार्गदर्शन करने के लिए निर्देश जोड़ें:
/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 के अंतर्गत कॉन्फ़िगर किया गया साधारण उपनाम स्वीकार करता है:
{ "agents": { "defaults": { "compaction": { "model": "openrouter/anthropic/claude-sonnet-4-6" } } }}Compaction शुरू होने से पहले कॉन्फ़िगर किए गए साधारण उपनाम अपने कैनोनिकल प्रदाता और मॉडल में रिज़ॉल्व होते हैं। यदि कोई साधारण मान उपनाम और कॉन्फ़िगर किए गए शाब्दिक मॉडल ID, दोनों से मेल खाता है, तो शाब्दिक मॉडल ID को प्राथमिकता मिलती है। मेल न खाने वाला साधारण मान सक्रिय प्रदाता पर मॉडल ID बना रहता है।
यह स्थानीय मॉडलों के साथ भी काम करता है, उदाहरण के लिए सारांश बनाने के लिए समर्पित दूसरा Ollama मॉडल:
{ "agents": { "defaults": { "compaction": { "model": "ollama/llama3.1:8b" } } }}सेट न होने पर Compaction सक्रिय सत्र मॉडल से शुरू होता है। यदि मॉडल-फ़ॉलबैक-योग्य प्रदाता त्रुटि के कारण सारांश बनाना विफल होता है, तो OpenClaw सत्र की मौजूदा मॉडल फ़ॉलबैक शृंखला के माध्यम से उस Compaction प्रयास को दोबारा करता है। फ़ॉलबैक चयन अस्थायी होता है और सत्र स्थिति में वापस नहीं लिखा जाता। स्पष्ट agents.defaults.compaction.model ओवरराइड यथार्थ बना रहता है और सत्र की फ़ॉलबैक शृंखला प्राप्त नहीं करता।
पहचानकर्ता संरक्षण
Compaction सारांशीकरण डिफ़ॉल्ट रूप से अपारदर्शी पहचानकर्ताओं को सुरक्षित रखता है (identifierPolicy: "strict")। इसे अक्षम करने के लिए identifierPolicy: "off", या कस्टम मार्गदर्शन के लिए identifierPolicy: "custom" के साथ identifierInstructions का उपयोग करें।
सक्रिय ट्रांसक्रिप्ट बाइट सुरक्षा सीमा
जब agents.defaults.compaction.maxActiveTranscriptBytes सेट हो, तो ट्रांसक्रिप्ट इतिहास के उस आकार तक पहुँचने पर OpenClaw किसी रन से पहले सामान्य स्थानीय Compaction शुरू करता है। यह लंबे समय तक चलने वाले उन सत्रों के लिए उपयोगी है, जहाँ प्रदाता-पक्षीय कॉन्टेक्स्ट प्रबंधन मॉडल कॉन्टेक्स्ट को स्वस्थ बनाए रख सकता है, जबकि स्थायी ट्रांसक्रिप्ट इतिहास बढ़ता रहता है। यह रॉ बाइट्स को विभाजित नहीं करता; यह सामान्य Compaction पाइपलाइन से अर्थपूर्ण सारांश बनाने के लिए कहता है।
उत्तराधिकारी ट्रांसक्रिप्ट
जब agents.defaults.compaction.truncateAfterCompaction सक्षम हो, तो OpenClaw मौजूदा ट्रांसक्रिप्ट को उसी स्थान पर दोबारा नहीं लिखता। यह Compaction सारांश, संरक्षित स्थिति और असारांशित अंतिम भाग से नया सक्रिय उत्तराधिकारी ट्रांसक्रिप्ट बनाता है, फिर चेकपॉइंट मेटाडेटा दर्ज करता है जो शाखा/पुनर्स्थापना प्रवाहों को उस संक्षिप्त उत्तराधिकारी की ओर निर्देशित करता है।
उत्तराधिकारी ट्रांसक्रिप्ट, छोटी पुनः प्रयास अवधि के भीतर आने वाले बिल्कुल समान लंबे उपयोगकर्ता चरणों को भी हटा देते हैं, ताकि चैनल पुनः प्रयासों की बाढ़ Compaction के बाद अगले सक्रिय ट्रांसक्रिप्ट में न जाए।
OpenClaw अब नए Compaction के लिए अलग .checkpoint.*.jsonl प्रतियाँ नहीं लिखता। मौजूदा पुराने चेकपॉइंट फ़ाइलों को संदर्भित रहने तक उपयोग किया जा सकता है और सामान्य सत्र सफ़ाई द्वारा उनकी छँटाई की जाती है।
Compaction सूचनाएँ
डिफ़ॉल्ट रूप से, Compaction चुपचाप चलता है। Compaction शुरू और पूरा होने पर संक्षिप्त स्थिति संदेश दिखाने तथा Compaction-पूर्व मेमोरी फ़्लश समाप्त हो जाने पर भी उत्तर जारी रहने की स्थिति में अवक्रमित सूचना दिखाने के लिए notifyUser सेट करें:
{ agents: { defaults: { compaction: { notifyUser: true, }, }, },}मेमोरी फ़्लश
Compaction से पहले, OpenClaw स्थायी नोट डिस्क पर संग्रहीत करने के लिए एक मौन मेमोरी फ़्लश चरण चला सकता है। जब इस रखरखाव चरण को सक्रिय वार्तालाप मॉडल के बजाय स्थानीय मॉडल का उपयोग करना चाहिए, तब agents.defaults.compaction.memoryFlush.model सेट करें:
{ "agents": { "defaults": { "compaction": { "memoryFlush": { "model": "ollama/qwen3:8b" } } } }}मेमोरी-फ़्लश मॉडल ओवरराइड यथार्थ होता है और सक्रिय सत्र की फ़ॉलबैक शृंखला प्राप्त नहीं करता। विवरण और कॉन्फ़िगरेशन के लिए मेमोरी देखें।
प्लग करने योग्य Compaction प्रदाता
Plugins, Plugin API पर registerCompactionProvider() के माध्यम से कस्टम Compaction प्रदाता पंजीकृत कर सकते हैं। जब कोई प्रदाता पंजीकृत और कॉन्फ़िगर होता है, तो OpenClaw अंतर्निर्मित LLM पाइपलाइन के बजाय सारांश बनाने का काम उसे सौंपता है।
किसी पंजीकृत प्रदाता का उपयोग करने के लिए, उसकी id अपनी कॉन्फ़िगरेशन में सेट करें:
{ "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)।