Sessions and memory
सत्र छंटाई
सत्र प्रूनिंग प्रत्येक LLM कॉल से पहले संदर्भ से पुराने टूल परिणामों को छाँट देती है। यह सामान्य वार्तालाप टेक्स्ट को दोबारा लिखे बिना संचित टूल आउटपुट (exec परिणाम, फ़ाइल रीड, खोज परिणाम) से संदर्भ में हुई अनावश्यक वृद्धि को कम करती है।
यह क्यों महत्वपूर्ण है
लंबे सत्रों में टूल आउटपुट संचित होता रहता है, जिससे संदर्भ विंडो फूल जाती है। इससे लागत बढ़ती है और आवश्यकता से पहले Compaction करना पड़ सकता है।
प्रूनिंग विशेष रूप से Anthropic प्रॉम्प्ट कैशिंग के लिए उपयोगी है। कैश TTL समाप्त होने के बाद, अगला अनुरोध पूरे प्रॉम्प्ट को फिर से कैश करता है। प्रूनिंग कैश-राइट का आकार घटाती है, जिससे लागत सीधे कम होती है।
यह कैसे काम करती है
प्रूनिंग cache-ttl मोड में चलती है और समय तथा संदर्भ-आकार, दोनों की जाँच पर निर्भर करती है:
- कैश TTL समाप्त होने की प्रतीक्षा करें (मैन्युअल रूप से सेट करने पर डिफ़ॉल्ट 5 मिनट; Anthropic के ऑटो-डिफ़ॉल्ट के लिए स्मार्ट डिफ़ॉल्ट देखें)। TTL बीतने से पहले, आस-पास के टर्न के लिए प्रॉम्प्ट-कैश के पुनः उपयोग को बनाए रखने हेतु प्रूनिंग पूरी तरह छोड़ दी जाती है।
- TTL बीत जाने के बाद, मॉडल की संदर्भ विंडो के सापेक्ष कुल संदर्भ आकार का अनुमान लगाएँ। यदि अनुपात
softTrimRatio(डिफ़ॉल्ट 0.3) से कम है, तो प्रूनिंग छोड़ दें और TTL घड़ी को चालू रखें। - अनुपात से अधिक आकार वाले टूल परिणामों को सॉफ़्ट-ट्रिम करें: आरंभ और अंत को बनाए रखें (डिफ़ॉल्ट रूप से प्रत्येक के 1500 वर्ण, कुल मिलाकर अधिकतम 4000 वर्ण), और बीच में
...डालें। - यदि अनुपात अब भी
hardClearRatio(डिफ़ॉल्ट 0.5) के बराबर या उससे अधिक है और प्रून किए जा सकने वाले टूल कॉन्टेंट का कम-से-कमminPrunableToolChars(डिफ़ॉल्ट 50,000) शेष है, तो उन परिणामों को हार्ड-क्लियर करें: उनके कॉन्टेंट को प्लेसहोल्डर (डिफ़ॉल्ट[Old tool result content cleared]) से बदलें। - TTL घड़ी को केवल तभी रीसेट करें, जब प्रूनिंग ने वास्तव में संदर्भ बदला हो, ताकि बाद के अनुरोध नए कैश का पुनः उपयोग करें।
थ्रेशोल्ड चाहे जो भी हों, दो सुरक्षा नियम लागू होते हैं: सहायक के सबसे हाल के keepLastAssistants टर्न (डिफ़ॉल्ट 3) कभी प्रून नहीं किए जाते, और सत्र के पहले उपयोगकर्ता संदेश से पहले की कोई भी चीज़ कभी प्रून नहीं की जाती (यह SOUL.md/USER.md जैसे बूटस्ट्रैप रीड की रक्षा करता है)।
केवल toolResult संदेश पात्र हैं; सामान्य वार्तालाप टेक्स्ट को नहीं छेड़ा जाता। किन टूल नामों को प्रून किया जा सकता है, इसका दायरा तय करने के लिए agents.defaults.contextPruning.tools.{allow,deny} का उपयोग करें।
पुरानी इमेज की सफ़ाई
OpenClaw उन सत्रों के लिए एक अलग इडेम्पोटेंट रीप्ले व्यू भी बनाता है, जो इतिहास में रॉ इमेज ब्लॉक या प्रॉम्प्ट-हाइड्रेशन मीडिया मार्कर सहेजते हैं।
- यह हाल ही में पूरे हुए 3 टर्न को बाइट-दर-बाइट सुरक्षित रखता है, ताकि हाल के फ़ॉलो-अप के लिए प्रॉम्प्ट कैश प्रीफ़िक्स स्थिर रहें। इस गिनती में पूरे हुए सभी टर्न शामिल होते हैं, केवल इमेज वाले नहीं; इसलिए केवल टेक्स्ट वाले टर्न भी इस विंडो का उपयोग करते हैं।
- रीप्ले व्यू में,
userयाtoolResultइतिहास के पुराने, पहले से प्रोसेस किए गए इमेज ब्लॉक को[image data removed - already processed by model]से बदल दिया जाता है। [media attached: ...],[Image: source: ...], औरmedia://inbound/...जैसे पुराने टेक्स्ट मीडिया संदर्भों को[media reference removed - already processed by model]से बदल दिया जाता है। वर्तमान टर्न के अटैचमेंट मार्कर जस के तस रहते हैं, ताकि विज़न मॉडल नई इमेज को अब भी हाइड्रेट कर सकें।- रॉ सत्र ट्रांसक्रिप्ट को दोबारा नहीं लिखा जाता, इसलिए इतिहास व्यूअर मूल संदेश प्रविष्टियों और उनकी इमेज को अब भी रेंडर कर सकते हैं।
- यह ऊपर दी गई सामान्य कैश-TTL प्रूनिंग से अलग है। इसका उद्देश्य बाद के टर्न में बार-बार आने वाले इमेज पेलोड या पुराने मीडिया संदर्भों को प्रॉम्प्ट कैश अमान्य करने से रोकना है।
स्मार्ट डिफ़ॉल्ट
बंडल किया गया Anthropic Plugin पहली बार किसी Anthropic (या Claude CLI) प्रमाणीकरण प्रोफ़ाइल को रिज़ॉल्व करते समय प्रूनिंग और Heartbeat आवृत्ति को अपने-आप कॉन्फ़िगर करता है, लेकिन केवल उन फ़ील्ड के लिए जिन्हें आपने पहले से स्पष्ट रूप से सेट नहीं किया है:
| प्रमाणीकरण मोड | contextPruning.mode |
contextPruning.ttl |
heartbeat.every |
|---|---|---|---|
| OAuth/टोकन (Claude CLI के पुनः उपयोग सहित) | cache-ttl |
1h |
1h |
| API कुंजी | cache-ttl |
1h |
30m |
यदि आप स्वयं agents.defaults.contextPruning.mode या agents.defaults.heartbeat.every सेट करते हैं, तो OpenClaw उन्हें ओवरराइड नहीं करता। यह ऑटो-डिफ़ॉल्ट केवल Anthropic-परिवार के प्रमाणीकरण के लिए सक्रिय होता है; अन्य प्रदाताओं को प्रूनिंग off मिलती है, जब तक कि आप इसे कॉन्फ़िगर न करें।
सक्षम या अक्षम करना
गैर-Anthropic प्रदाताओं के लिए प्रूनिंग डिफ़ॉल्ट रूप से बंद रहती है। सक्षम करने के लिए:
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" }, }, },}अक्षम करने के लिए: mode: "off" सेट करें।
प्रूनिंग बनाम Compaction
| प्रूनिंग | Compaction | |
|---|---|---|
| क्या | टूल परिणामों को छाँटती है | वार्तालाप का सारांश बनाता है |
| सहेजा गया? | नहीं (प्रति अनुरोध) | हाँ (ट्रांसक्रिप्ट में) |
| दायरा | केवल टूल परिणाम | पूरा वार्तालाप |
दोनों एक-दूसरे के पूरक हैं -- प्रूनिंग Compaction चक्रों के बीच टूल आउटपुट को संक्षिप्त रखती है।
आगे पढ़ें
- Compaction: सारांश-आधारित संदर्भ कटौती
- Gateway कॉन्फ़िगरेशन: प्रूनिंग के सभी कॉन्फ़िगरेशन नियंत्रण (
contextPruning.*)