Sessions and memory
सत्र प्रबंधन
OpenClaw प्रत्येक आने वाले संदेश को उसके स्रोत के आधार पर एक सत्र में रूट करता है: DM, समूह चैट, Cron कार्य आदि। सत्र की पूरी स्थिति का स्वामित्व Gateway के पास होता है; UI क्लाइंट सत्र डेटा के लिए Gateway से क्वेरी करते हैं।
व्यक्तिगत-एजेंट के डिफ़ॉल्ट व्यवहार — आपके सभी DM चैनलों द्वारा साझा की जाने वाली एक सतत बातचीत, जिसमें समूह गतिविधि और पृष्ठभूमि कार्य भी प्रवाहित होते हैं — के लिए मुख्य सत्र देखें।
संदेश कैसे रूट किए जाते हैं
| स्रोत | व्यवहार |
|---|---|
| प्रत्यक्ष संदेश | डिफ़ॉल्ट रूप से साझा सत्र |
| समूह चैट | प्रत्येक समूह के लिए अलग |
| रूम/चैनल | प्रत्येक रूम के लिए अलग |
| 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 से अपने सेटअप की पुष्टि करें।
गुप्त सत्र
गुप्त सत्र केवल Control UI की नया थ्रेड स्क्रीन से उपलब्ध हैं। थ्रेड शुरू करने से पहले गुप्त चालू करें, ताकि उसकी सत्र प्रविष्टि, ट्रांस्क्रिप्ट और Compaction स्थिति डिस्क के बजाय प्रक्रिया मेमोरी में रखी जाए। Gateway के पुनः आरंभ होने पर थ्रेड गायब हो जाता है, OpenClaw का स्वचालित मेमोरी फ्लश नहीं चलाता और उसे रीसेट या हटाने पर ट्रांस्क्रिप्ट अभिलेख नहीं बनाता। Codex-समर्थित रन अपना हार्नेस थ्रेड भी अस्थायी मोड में शुरू करते हैं, इसलिए Codex कोई रोलआउट या स्थानीय सत्र-स्थिति फ़ाइल नहीं लिखता; अन्य मॉडल प्रदाता HTTP API का उपयोग करते हैं और OpenClaw में कोई स्थानीय प्रदाता ट्रांस्क्रिप्ट नहीं रखते।
incognito- खंड डैशबोर्ड, उप-एजेंट और छिपी हुई आंतरिक सत्र कुंजियों के लिए आरक्षित है; openclaw doctor --fix टकराव वाली किसी भी पुरानी स्थायी कुंजी का नाम बदल देता है।
गुप्त मोड एजेंट के सामान्य टूल को प्रतिबंधित नहीं करता। जानकारी सहेजने का स्पष्ट अनुरोध या टूल द्वारा किया गया कोई भी फ़ाइल लेखन अब भी गुप्त सत्र स्टोर के बाहर डेटा को स्थायी बना सकता है। आपका कॉन्फ़िगर किया गया मॉडल प्रदाता अब भी आपके भेजे गए संदेशों को संसाधित करता है, निदान लॉगिंग अपरिवर्तित रहती है और OpenClaw अब भी HMAC संदर्भ जैसे सामग्री-रहित ऑडिट मेटाडेटा रिकॉर्ड करता है।
बहु-उपयोगकर्ता Gateway पर, गुप्त थ्रेड केवल एडमिन-स्कोप कनेक्शन को दिखाई देते हैं और कभी भी किसी अन्य सत्र के एजेंट सत्र टूल या ट्रांस्क्रिप्ट खोज में नहीं दिखाई देते। यह उन्हें स्टोरेज और Gateway के माध्यम से पहुँचने वाले अन्य उपयोगकर्ताओं से सुरक्षित रखता है, Gateway के स्वामी या प्रक्रिया संचालक से नहीं, जो हमेशा लाइव सत्र देख सकते हैं।
बातचीत के बीच याद रखना
अलग-अलग ट्रांस्क्रिप्ट प्रत्येक बातचीत के स्थानीय इतिहास को नियंत्रित करते हैं। किसी व्यक्तिगत
या पूर्णतः विश्वसनीय एजेंट के लिए, memory.search.rememberAcrossConversations: true
उस एजेंट की अन्य निजी बातचीत में एक वैकल्पिक पुनर्प्राप्ति चरण
जोड़ता है; यह उनके ट्रांस्क्रिप्ट को संयोजित नहीं करता।
निजी प्रत्यक्ष और स्थायी स्पष्ट UI बातचीत एक-दूसरे को प्रासंगिक संदर्भ दे सकती हैं। समूह और चैनल दोनों दिशाओं में अलग रहते हैं: उनके ट्रांस्क्रिप्ट निजी स्मरण स्रोत नहीं होते और उन बातचीत के उत्तरों को निजी ट्रांस्क्रिप्ट संदर्भ नहीं मिलता। वर्तमान बातचीत भी शामिल नहीं होती, क्योंकि उसका इतिहास पहले से लोड है।
यह सेटिंग सत्र कुंजियों, DM स्कोप, रूटिंग, डिलीवरी या
tools.sessions.visibility को नहीं बदलती। MEMORY.md और
memory/*.md में साझा कार्यक्षेत्र मेमोरी भी अपना मौजूदा व्यवहार बनाए रखती है। वर्तमान मेमोरी प्रदाता
को सुरक्षित निजी ट्रांस्क्रिप्ट स्मरण का समर्थन करना आवश्यक है; Lossless Claw जैसे
संदर्भ इंजन स्वतंत्र रहते हैं और इसके साथ चल सकते हैं। सेटअप
और रनटाइम विवरण के लिए Active Memory देखें।
सत्र जीवनचक्र
सत्रों का पुनः उपयोग तब तक किया जाता है, जब तक आप उन्हें मैन्युअल रूप से रीसेट नहीं करते या स्वचालित रीसेट नीति नहीं चुनते:
- कोई स्वचालित रीसेट नहीं (डिफ़ॉल्ट
mode: "none") - सत्र समानsessionIdबनाए रखते हैं; बातचीत बढ़ने पर Compaction सक्रिय संदर्भ को प्रबंधित करता है। - दैनिक रीसेट (
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, group और thread का समर्थन करता है। Doctor पुरानी dm प्रविष्टियों को direct और session.idleMinutes को session.reset.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 पर लौटाया, तो पुरानी पीयर-कुंजी वाली DM पंक्तियों का पूर्वावलोकन
openclaw sessions cleanup --dry-run --fix-dm-scope से करें। समान फ़्लैग लागू करने पर
वे पुरानी प्रत्यक्ष-DM पंक्तियाँ सेवानिवृत्त हो जाती हैं और उनके ट्रांस्क्रिप्ट हटाए गए
अभिलेखों के रूप में बने रहते हैं।
किसी भी रखरखाव रन का पूर्वावलोकन openclaw sessions cleanup --dry-run से करें।
सत्रों का निरीक्षण
| कमांड | क्या दिखाता है |
|---|---|
openclaw status |
सत्र स्टोर पथ और हाल की गतिविधि |
openclaw sessions --json |
सभी सत्र (--active <minutes> से फ़िल्टर करें) |
चैट में /status |
संदर्भ उपयोग, मॉडल और टॉगल |
/context list |
सिस्टम प्रॉम्प्ट में क्या है |
आगे पढ़ें
- सत्र खोज - पिछले ट्रांस्क्रिप्ट में पूर्ण-पाठ स्मरण
- सत्र छँटाई - टूल परिणामों की काट-छाँट
- Compaction - लंबी बातचीत का सारांश बनाना
- सत्र टूल - अंतर-सत्र कार्य के लिए एजेंट टूल
- सत्र प्रबंधन का विस्तृत विवरण - स्टोर स्कीमा, ट्रांस्क्रिप्ट, प्रेषण नीति, मूल मेटाडेटा और उन्नत कॉन्फ़िगरेशन
- बहु-एजेंट - एजेंटों के बीच रूटिंग और सत्र पृथक्करण
- पृष्ठभूमि कार्य - अलग किया गया कार्य सत्र संदर्भों के साथ कार्य रिकॉर्ड कैसे बनाता है
- चैनल रूटिंग - आने वाले संदेश सत्रों में कैसे रूट किए जाते हैं