Sessions and memory
सत्र प्रबंधन
OpenClaw प्रत्येक आने वाले संदेश को उसके स्रोत—DM, समूह चैट, cron जॉब आदि—के आधार पर एक सत्र में रूट करता है। सत्र की पूरी स्थिति का स्वामित्व Gateway के पास होता है; UI क्लाइंट सत्र डेटा के लिए Gateway से क्वेरी करते हैं।
संदेश कैसे रूट किए जाते हैं
| स्रोत | व्यवहार |
|---|---|
| सीधे संदेश | डिफ़ॉल्ट रूप से साझा सत्र |
| समूह चैट | प्रत्येक समूह के लिए अलग |
| रूम/चैनल | प्रत्येक रूम के लिए अलग |
| Cron जॉब | प्रत्येक रन के लिए नया सत्र |
| Webhook | प्रत्येक हुक के लिए अलग |
DM पृथक्करण
डिफ़ॉल्ट रूप से, निरंतरता बनाए रखने के लिए सभी DM एक ही सत्र साझा करते हैं, जो एकल-उपयोगकर्ता सेटअप के लिए उपयुक्त है।
{ session: { dmScope: "per-channel-peer", // चैनल + प्रेषक के आधार पर अलग करें },}session.dmScope विकल्प:
| मान | व्यवहार |
|---|---|
main (डिफ़ॉल्ट) |
सभी DM एक ही सत्र साझा करते हैं |
per-peer |
सभी चैनलों में प्रेषक के आधार पर अलग करें |
per-channel-peer |
चैनल + प्रेषक के आधार पर अलग करें (अनुशंसित) |
per-account-channel-peer |
खाते + चैनल + प्रेषक के आधार पर अलग करें |
लिंक किए गए चैनल डॉक करना
डॉक कमांड नया सत्र शुरू किए बिना वर्तमान सीधे-चैट सत्र के उत्तर रूट को किसी अन्य लिंक किए गए चैनल पर ले जाते हैं। उदाहरणों, कॉन्फ़िगरेशन और समस्या निवारण के लिए चैनल डॉकिंग देखें।
openclaw security audit से अपने सेटअप की पुष्टि करें।
सत्र जीवनचक्र
सत्रों को session.reset के अंतर्गत उनकी समय-सीमा समाप्त होने तक पुनः उपयोग किया जाता है:
- दैनिक रीसेट (डिफ़ॉल्ट
mode: "daily") - Gateway होस्ट पर कॉन्फ़िगर किए गए स्थानीय घंटे (session.reset.atHour, डिफ़ॉल्ट4, 0-23) पर नया सत्र। दैनिक नवीनता इस पर आधारित होती है कि वर्तमानsessionIdकब शुरू हुआ था, न कि बाद के मेटाडेटा लेखन पर। - निष्क्रियता रीसेट (
mode: "idle") -session.reset.idleMinutesकी निष्क्रियता के बाद नया सत्र। निष्क्रियता की नवीनता अंतिम वास्तविक उपयोगकर्ता/चैनल इंटरैक्शन पर आधारित होती है, इसलिए Heartbeat, Cron और exec सिस्टम इवेंट सत्र को सक्रिय नहीं रखते। - मैन्युअल रीसेट - चैट में
/newया/resetटाइप करें।/new <model>मॉडल भी बदलता है।
जब दैनिक और निष्क्रियता, दोनों रीसेट कॉन्फ़िगर किए गए हों, तो जिसकी समय-सीमा पहले समाप्त होती है वही लागू होता है। Heartbeat, Cron, exec और अन्य सिस्टम-इवेंट टर्न सत्र मेटाडेटा लिख सकते हैं, लेकिन वे लेखन दैनिक या निष्क्रियता रीसेट की नवीनता को नहीं बढ़ाते। रीसेट द्वारा सत्र बदलने पर पुराने सत्र के लिए कतारबद्ध सिस्टम-इवेंट सूचनाएँ हटा दी जाती हैं, ताकि पुराने पृष्ठभूमि अपडेट नए सत्र के पहले प्रॉम्प्ट के आरंभ में न जोड़े जाएँ।
सक्रिय प्रदाता-स्वामित्व वाले CLI सत्र वाले सत्रों को अंतर्निहित दैनिक डिफ़ॉल्ट द्वारा समाप्त नहीं किया जाता। जब ऐसे सत्रों की समय-सीमा टाइमर पर समाप्त होनी चाहिए, तो /reset का उपयोग करें या session.reset को स्पष्ट रूप से कॉन्फ़िगर करें।
प्रत्येक चैट प्रकार या प्रत्येक चैनल के लिए डिफ़ॉल्ट को ओवरराइड करें:
{ session: { reset: { mode: "daily", atHour: 4 }, resetByType: { group: { mode: "idle", idleMinutes: 120 }, thread: { mode: "daily", atHour: 6 }, }, resetByChannel: { discord: { mode: "idle", idleMinutes: 10080 }, }, },}resetByType, direct (पुराना उपनाम dm), group और thread का समर्थन करता है।
जब कोई session.reset/resetByType ब्लॉक सेट न हो, तब पुराना शीर्ष-स्तरीय session.idleMinutes निष्क्रियता-मोड डिफ़ॉल्ट के संगतता उपनाम के रूप में अब भी काम करता है।
स्थिति कहाँ रहती है
- रनटाइम सत्र पंक्तियाँ:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite - संग्रहीत ट्रांसक्रिप्ट फ़ाइलें:
~/.openclaw/agents/<agentId>/sessions/ - पुरानी पंक्ति के माइग्रेशन का स्रोत:
~/.openclaw/agents/<agentId>/sessions/sessions.json
प्रत्येक एजेंट के SQLite डेटाबेस में सत्र पंक्तियाँ अलग-अलग जीवनचक्र टाइमस्टैम्प रखती हैं:
sessionStartedAt: वर्तमानsessionIdकब शुरू हुआ; दैनिक रीसेट इसका उपयोग करता है।lastInteractionAt: अंतिम उपयोगकर्ता/चैनल इंटरैक्शन, जो निष्क्रियता अवधि बढ़ाता है।updatedAt: स्टोर पंक्ति में अंतिम बदलाव; सूचीबद्ध करने और छँटाई के लिए उपयोगी, लेकिन दैनिक/निष्क्रियता रीसेट की नवीनता के लिए प्रामाणिक नहीं।
पुराने इंस्टॉलेशन से माइग्रेशन के दौरान, Gateway स्टार्टअप और openclaw doctor --fix पुरानी sessions.json पंक्तियों तथा सक्रिय ट्रांसक्रिप्ट JSONL इतिहास को स्वचालित रूप से SQLite में आयात करते हैं। sessionStartedAt के बिना पंक्तियों को उपलब्ध होने पर पुराने ट्रांसक्रिप्ट JSONL सत्र हेडर से निर्धारित किया जाता है। यदि किसी पुरानी पंक्ति में lastInteractionAt भी नहीं है, तो निष्क्रियता की नवीनता बाद के बहीखाता लेखन के बजाय उस सत्र के आरंभ समय पर वापस जाती है। जब स्पष्ट निरीक्षण या सत्यापन प्रमाण चाहिए, तो openclaw doctor --session-sqlite inspect --session-sqlite-all-agents और Doctor माइग्रेशन क्रम का उपयोग करें।
सत्र रखरखाव
OpenClaw समय के साथ session.maintenance के माध्यम से सत्र भंडारण को सीमित करता है; डिफ़ॉल्ट नीचे दिखाए गए हैं:
{ session: { maintenance: { mode: "enforce", // "enforce" सफ़ाई लागू करता है; "warn" केवल रिपोर्ट करता है pruneAfter: "30d", maxEntries: 500, }, },}उत्पादन-स्तरीय maxEntries सीमाओं के लिए, Gateway रनटाइम लेखन एक छोटे उच्च-जल-चिह्न बफ़र का उपयोग करते हैं और बैच में कॉन्फ़िगर की गई सीमा तक वापस सफ़ाई करते हैं। Gateway स्टार्टअप के दौरान सत्र स्टोर पठन प्रविष्टियों की छँटाई या सीमा लागू नहीं करते, इसलिए स्टार्टअप और पृथक Cron सत्रों को पूरे स्टोर की सफ़ाई का भार नहीं उठाना पड़ता। openclaw sessions cleanup --enforce सीमा को तुरंत लागू करता है।
Gateway मॉडल-रन प्रोब सत्र डिफ़ॉल्ट रूप से अल्पकालिक होते हैं। agent:*:explicit:model-run-<uuid> से मेल खाने वाली पंक्तियाँ निश्चित 24h अवधारण का उपयोग करती हैं, लेकिन सफ़ाई दबाव-नियंत्रित होती है: यह पुराने प्रोब पंक्तियों को केवल तभी हटाती है जब सत्र-प्रविष्टि रखरखाव/सीमा दबाव पहुँच जाता है, और व्यापक पुरानी-प्रविष्टि आयु कटऑफ़ तथा प्रविष्टि सीमा से पहले चलती है। सामान्य सीधे, समूह, थ्रेड, Cron, हुक, Heartbeat, ACP और उप-एजेंट सत्र इस 24h अवधारण को प्राप्त नहीं करते।
रखरखाव स्थायी बाहरी वार्तालाप पॉइंटर सुरक्षित रखता है, जिनमें समूह सत्र और थ्रेड-स्कोप वाले चैट सत्र शामिल हैं, जबकि सिंथेटिक Cron, हुक, Heartbeat, ACP और उप-एजेंट प्रविष्टियों को समय के साथ हटने की अनुमति देता है।
यदि आपने पहले DM पृथक्करण का उपयोग किया था और बाद में session.dmScope को main पर वापस किया, तो openclaw sessions cleanup --dry-run --fix-dm-scope से पुराने पीयर-कुंजी वाले DM पंक्तियों का पूर्वावलोकन करें। यही फ़्लैग लागू करने पर वे पुरानी सीधी-DM पंक्तियाँ सेवा-निवृत्त हो जाती हैं और उनके ट्रांसक्रिप्ट हटाए गए अभिलेखों के रूप में बने रहते हैं।
openclaw sessions cleanup --dry-run से किसी भी रखरखाव रन का पूर्वावलोकन करें।
सत्रों का निरीक्षण
| कमांड | क्या दिखाता है |
|---|---|
openclaw status |
सत्र स्टोर पथ और हाल की गतिविधि |
openclaw sessions --json |
सभी सत्र (--active <minutes> से फ़िल्टर करें) |
चैट में /status |
संदर्भ उपयोग, मॉडल और टॉगल |
/context list |
सिस्टम प्रॉम्प्ट में क्या है |
आगे पढ़ें
- सत्र खोज - पिछले ट्रांसक्रिप्ट में पूर्ण-पाठ पुनर्प्राप्ति
- सत्र छँटाई - टूल परिणामों को छोटा करना
- Compaction - लंबी वार्ताओं का सारांश बनाना
- सत्र टूल - सत्रों के बीच कार्य के लिए एजेंट टूल
- सत्र प्रबंधन का विस्तृत विवरण - स्टोर स्कीमा, ट्रांसक्रिप्ट, प्रेषण नीति, मूल मेटाडेटा और उन्नत कॉन्फ़िगरेशन
- बहु-एजेंट - एजेंटों के बीच रूटिंग और सत्र पृथक्करण
- पृष्ठभूमि कार्य - अलग किए गए कार्य सत्र संदर्भों वाले कार्य रिकॉर्ड कैसे बनाते हैं
- चैनल रूटिंग - आने वाले संदेश सत्रों में कैसे रूट किए जाते हैं