मेमोरी अवलोकन
मेमोरी कैसे काम करती है।
अंतर्निहित इंजन
डिफ़ॉल्ट SQLite बैकएंड।
QMD इंजन
लोकल-फ़र्स्ट साइडकार।
मेमोरी खोज
खोज पाइपलाइन और ट्यूनिंग।
Active Memory
इंटरैक्टिव सत्रों के लिए मेमोरी उप-एजेंट।
memory के अंतर्गत openclaw.json में रहती हैं। खोज के डिफ़ॉल्ट memory.search का उपयोग करते हैं; प्रति-एजेंट खोज ओवरराइड agents.entries.*.memory.search का उपयोग करते हैं।
अनुशंसित व्यक्तिगत-एजेंट कार्यप्रवाह के लिए,
memory.search.rememberAcrossConversations का उपयोग करें। उन्नत Active Memory लक्ष्यीकरण,
मॉडल, प्रॉम्प्ट और विलंबता नियंत्रण plugins.entries.active-memory के अंतर्गत रहते हैं।सक्रियण के दोनों मार्गों, ट्रांस्क्रिप्ट स्थायित्व और सुरक्षित रोलआउट मार्गदर्शन के लिए
Active Memory देखें।वार्तालापों के बीच याद रखना
जब केवल किसी विश्वसनीय व्यक्तिगत एजेंट को वार्तालापों के बीच ट्रांस्क्रिप्ट स्मरण का उपयोग करना चाहिए, तो इसे प्रति एजेंट कॉन्फ़िगर करें:
memory.search इनहेरिटेंस का पालन करता है। सेट न होने पर, यह केवल तभी डिफ़ॉल्ट रूप से चालू होता है जब वैश्विक
session.dmScope सेट न हो या "main" हो और किसी भी बाइंडिंग में session.dmScope
ओवरराइड न हो। कॉन्फ़िगर किया गया कोई भी DM पृथक्करण इसे डिफ़ॉल्ट रूप से बंद कर देता है। स्पष्ट true या
false हमेशा प्राथमिकता लेता है। इसे सक्षम करने पर सत्र ट्रांस्क्रिप्ट अनुक्रमण निहित होता है और
एजेंट के समाधान किए गए मेमोरी स्रोतों में sessions जुड़ जाता है। QMD के साथ, यह उस एजेंट का सत्र निर्यात भी
सक्षम करता है; इस मोड के लिए अलग
memory.qmd.sessions.enabled सेटिंग आवश्यक नहीं है।
OpenClaw का अंतर्निहित मेमोरी प्रदाता, अंतर्निहित और QMD दोनों बैकएंड के साथ इस संरक्षित मार्ग का समर्थन करता है। वैकल्पिक मेमोरी प्रदाता अपने स्वयं के
स्मरण हुक और उन्नत Active Memory टूल का उपयोग जारी रख सकते हैं, लेकिन यह सेटिंग तब तक छोड़ दी जाती है
जब तक वर्तमान प्रदाता संरक्षित निजी ट्रांस्क्रिप्ट स्मरण का समर्थन न करे।
openclaw doctor किसी असमर्थित प्रदाता या ऐसी स्पष्ट Active Memory
toolsAllow सूची की रिपोर्ट करता है जिसमें memory_search शामिल नहीं है।
पुनर्प्राप्ति सीमा सामान्य सत्र खोज से अधिक संकीर्ण है:
- केवल उसी एजेंट के पहचाने गए निजी वार्तालाप पात्र हैं
- जिस वार्तालाप का उत्तर दिया जा रहा है, उसे बाहर रखा जाता है
- समूहों और चैनलों को स्रोतों और गंतव्यों के रूप में बाहर रखा जाता है
- अज्ञात वार्तालाप प्रकार विफल होने पर बंद रहते हैं
- सैंडबॉक्स किया गया स्मरण विशेष वार्तालाप-पार प्राधिकरण का उपयोग नहीं कर सकता
tools.sessions.visibility, सत्र कुंजियों,
ट्रांस्क्रिप्ट संग्रहण, वितरण रूटिंग या sessions_list,
sessions_history और sessions_send की अनुमतियों को नहीं बदलती। Active Memory एक सीमित
केवल-पठन पुनर्प्राप्ति पास निष्पादित करता है; अनुपलब्ध या समय-सीमा समाप्त पुनर्प्राप्ति
उत्तर को अवरुद्ध नहीं करती।
प्रदाता चयन
जब
provider सेट नहीं होता, तब OpenClaw OpenAI एम्बेडिंग का उपयोग करता है। Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama,
Voyage, स्थानीय GGUF मॉडल या OpenAI-संगत /v1/embeddings एंडपॉइंट का उपयोग करने के लिए provider
स्पष्ट रूप से सेट करें।
जो पुराने कॉन्फ़िगरेशन अभी भी provider: "auto" कहते हैं, वे openai में समाधान होते हैं।
जब provider सेट न हो, पुराना provider: "auto" मौजूद हो, या
provider: "none" जानबूझकर केवल-FTS मोड चुने, तब एम्बेडिंग अनुपलब्ध होने पर भी मेमोरी स्मरण
शाब्दिक FTS रैंकिंग का उपयोग कर सकता है।
स्पष्ट गैर-स्थानीय प्रदाता विफल होने पर बंद रहते हैं। यदि आप memory.search.provider को
Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, Mistral, Ollama, OpenAI, Voyage या OpenAI-संगत
कस्टम प्रदाता जैसे किसी ठोस रिमोट-समर्थित प्रदाता पर सेट करते हैं और वह प्रदाता रनटाइम पर अनुपलब्ध है, तो memory_search
चुपचाप केवल-FTS स्मरण का उपयोग करने के बजाय अनुपलब्ध परिणाम लौटाता है। प्रदाता/प्रमाणीकरण कॉन्फ़िगरेशन ठीक करें, किसी पहुँच योग्य प्रदाता पर स्विच करें, या यदि आप जानबूझकर केवल-FTS स्मरण चाहते हैं, तो
provider: "none" सेट करें।
कस्टम प्रदाता ID
memory.search.provider मेमोरी-विशिष्ट प्रदाता अडैप्टरों, जैसे ollama, या OpenAI-संगत मॉडल API, जैसे openai-responses / openai-completions, के लिए किसी कस्टम models.providers.<id> प्रविष्टि की ओर संकेत कर सकता है। OpenClaw एंडपॉइंट, प्रमाणीकरण और मॉडल-प्रीफ़िक्स प्रबंधन के लिए कस्टम प्रदाता ID सुरक्षित रखते हुए एम्बेडिंग अडैप्टर के लिए उस प्रदाता के api स्वामी का समाधान करता है। इससे मल्टी-GPU या मल्टी-होस्ट सेटअप मेमोरी एम्बेडिंग को किसी विशिष्ट स्थानीय एंडपॉइंट को समर्पित कर सकते हैं:
API कुंजी समाधान
रिमोट एम्बेडिंग के लिए API कुंजी आवश्यक है। इसके बजाय Bedrock AWS SDK डिफ़ॉल्ट क्रेडेंशियल शृंखला का उपयोग करता है (इंस्टेंस भूमिकाएँ, SSO, एक्सेस कुंजियाँ या Bedrock API कुंजी)।Codex OAuth केवल चैट/पूर्णताओं को कवर करता है और एम्बेडिंग अनुरोधों को पूरा नहीं करता।
रिमोट एंडपॉइंट कॉन्फ़िगरेशन
ऐसे सामान्य OpenAI-संगत/v1/embeddings सर्वर के लिए provider: "openai-compatible" का उपयोग करें, जिसे वैश्विक OpenAI चैट क्रेडेंशियल इनहेरिट नहीं करने चाहिए।
string
कस्टम API बेस URL।
string
API कुंजी ओवरराइड करें।
object
अतिरिक्त HTTP हेडर (प्रदाता डिफ़ॉल्ट के साथ मर्ज किए जाते हैं)।
प्रदाता-विशिष्ट कॉन्फ़िगरेशन
Gemini
Gemini
OpenAI-संगत इनपुट प्रकार
OpenAI-संगत इनपुट प्रकार
OpenAI-संगत एम्बेडिंग एंडपॉइंट प्रदाता-विशिष्ट इन मानों को बदलने से प्रदाता बैच इंडेक्सिंग के लिए एम्बेडिंग कैश पहचान प्रभावित होती है और यदि अपस्ट्रीम मॉडल लेबल को अलग तरह से मानता है, तो इसके बाद मेमोरी को पुनः इंडेक्स किया जाना चाहिए।
input_type अनुरोध फ़ील्ड का विकल्प चुन सकते हैं। यह उन असममित एम्बेडिंग मॉडलों के लिए उपयोगी है जिन्हें क्वेरी और दस्तावेज़ एम्बेडिंग के लिए अलग-अलग लेबल की आवश्यकता होती है।Bedrock
Bedrock
Bedrock एम्बेडिंग कॉन्फ़िगरेशन
Bedrock, AWS SDK की डिफ़ॉल्ट क्रेडेंशियल शृंखला के साथ OpenClaw द्वारा जाँचे गए बेयरर टोकन का उपयोग करता है, इसलिए कॉन्फ़िगरेशन में कोई API कुंजी संग्रहीत नहीं की जाती। यदि OpenClaw, Bedrock-सक्षम इंस्टेंस भूमिका वाले EC2 पर चलता है, तो केवल प्रदाता और मॉडल सेट करें:समर्थित मॉडल (फ़ैमिली पहचान और डाइमेंशन डिफ़ॉल्ट सहित):
थ्रूपुट-प्रत्यय वाले वेरिएंट (जैसे,
amazon.titan-embed-text-v1:2:8k) और क्षेत्र-उपसर्ग वाले इन्फ़रेंस प्रोफ़ाइल ID (जैसे, us.amazon.titan-embed-text-v2:0) बेस मॉडल का कॉन्फ़िगरेशन इनहेरिट करते हैं।क्षेत्र: इस क्रम में निर्धारित किया जाता है: memory.search.remote.baseUrl ओवरराइड, models.providers.amazon-bedrock.baseUrl कॉन्फ़िगरेशन, AWS_REGION, AWS_DEFAULT_REGION, फिर us-east-1 का डिफ़ॉल्ट।प्रमाणीकरण: OpenClaw पहले AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY या AWS_BEARER_TOKEN_BEDROCK की जाँच करता है, फिर मानक AWS SDK डिफ़ॉल्ट क्रेडेंशियल प्रदाता शृंखला का उपयोग करता है:- पर्यावरण चर (
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY), जब तकAWS_PROFILEभी सेट न हो - SSO (केवल जब SSO फ़ील्ड कॉन्फ़िगर हों)
- साझा क्रेडेंशियल और कॉन्फ़िगरेशन फ़ाइलें (
fromIni, जिसमेंAWS_PROFILEशामिल है) - क्रेडेंशियल प्रक्रिया (AWS कॉन्फ़िगरेशन फ़ाइल में
credential_process) - वेब आइडेंटिटी टोकन क्रेडेंशियल
- ECS या EC2 इंस्टेंस मेटाडेटा क्रेडेंशियल
InvokeModel को विशिष्ट मॉडल तक सीमित करें:स्थानीय (GGUF + llama.cpp)
स्थानीय (GGUF + llama.cpp)
पहले आधिकारिक llama.cpp प्रदाता इंस्टॉल करें:
openclaw plugins install @openclaw/llama-cpp-provider।
डिफ़ॉल्ट मॉडल: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, स्वतः डाउनलोड किया गया)। स्रोत चेकआउट के लिए अब भी नेटिव बिल्ड अनुमोदन आवश्यक है: pnpm approve-builds, फिर pnpm rebuild node-llama-cpp।Gateway द्वारा उपयोग किए जाने वाले उसी प्रदाता पथ को सत्यापित करने के लिए स्टैंडअलोन CLI का उपयोग करें:local.contextSize मान node-llama-cpp के स्वचालित GPU-लेयर प्लेसमेंट को भी सूचित करते हैं, ताकि मॉडल वेट और अनुरोधित एम्बेडिंग कॉन्टेक्स्ट को एक साथ समायोजित किया जा सके। रनटाइम लोड होने के बाद openclaw memory status --deep अंतिम ज्ञात llama.cpp बैकएंड, डिवाइस, ऑफ़लोड, अनुरोधित कॉन्टेक्स्ट और टाइमस्टैम्प वाले मेमोरी तथ्य रिपोर्ट करता है; निष्क्रिय स्थिति किसी मॉडल को लोड नहीं करती।स्थानीय GGUF एम्बेडिंग के लिए provider: "local" को स्पष्ट रूप से सेट करें। स्पष्ट स्थानीय कॉन्फ़िगरेशन के लिए hf: और HTTP(S) मॉडल संदर्भ समर्थित हैं (node-llama-cpp के मॉडल रिज़ॉल्यूशन के माध्यम से), लेकिन वे डिफ़ॉल्ट प्रदाता को नहीं बदलते।इंडेक्सिंग व्यवहार
मेमोरी इंजन सिंक्रोनाइज़ेशन, बैचिंग, निगरानी और Compaction के बाद की इंडेक्सिंग ह्यूरिस्टिक्स के स्वामी होते हैं। OpenClaw प्रति-इंस्टॉलेशन समय-निर्धारण स्विच उजागर करने के बजाय इन व्यवहारों को अनुरक्षित डिफ़ॉल्ट के साथ सक्षम रखता है।हाइब्रिड खोज कॉन्फ़िगरेशन
सभीmemory.search.query के अंतर्गत:
हाइब्रिड पुनर्प्राप्ति सक्षम रहती है; अंतर्निहित इंजन नीति द्वारा MMR और कालगत क्षय
अक्षम रहते हैं।
पूर्ण उदाहरण
अतिरिक्त मेमोरी पथ
.md फ़ाइलों के लिए डायरेक्टरियों को पुनरावर्ती रूप से स्कैन किया जाता है। सिमलिंक प्रबंधन सक्रिय बैकएंड पर निर्भर करता है: अंतर्निहित इंजन सिमलिंक छोड़ देता है, जबकि QMD अंतर्निहित QMD स्कैनर व्यवहार का अनुसरण करता है।
एजेंट-स्कोप्ड क्रॉस-एजेंट ट्रांस्क्रिप्ट खोज के लिए, memory.qmd.paths के बजाय agents.entries.*.memory.search.qmd.extraCollections का उपयोग करें। वे अतिरिक्त संग्रह उसी { path, name, pattern? } आकार का अनुसरण करते हैं, लेकिन उन्हें प्रति एजेंट मर्ज किया जाता है और जब पथ वर्तमान कार्यक्षेत्र से बाहर इंगित करता है, तब वे स्पष्ट साझा नाम बनाए रख सकते हैं। यदि वही निर्धारित पथ memory.qmd.paths और memory.search.qmd.extraCollections दोनों में दिखाई देता है, तो QMD पहली प्रविष्टि रखता है और डुप्लिकेट छोड़ देता है।
मल्टीमॉडल मेमोरी (Gemini)
Gemini Embedding 2 का उपयोग करके Markdown के साथ छवियों और ऑडियो को इंडेक्स करें:केवल
extraPaths में मौजूद फ़ाइलों पर लागू होता है। डिफ़ॉल्ट मेमोरी रूट केवल Markdown बने रहते हैं। gemini-embedding-2-preview आवश्यक है। fallback का "none" होना आवश्यक है।.jpg, .jpeg, .png, .webp, .gif, .heic, .heif (छवियाँ); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (ऑडियो)।
एम्बेडिंग कैश
पुनः इंडेक्सिंग या ट्रांस्क्रिप्ट अपडेट के दौरान अपरिवर्तित टेक्स्ट को दोबारा एम्बेड होने से रोकता है।
बैच इंडेक्सिंग
gemini, openai, और voyage के लिए उपलब्ध। बड़े बैकफ़िल के लिए OpenAI बैच आम तौर पर सबसे तेज़ और सबसे सस्ता होता है।
समवर्तीता, पोलिंग और टाइमआउट व्यवहार का स्वामित्व प्रदाता के पास होता है।
सत्र मेमोरी खोज
सत्र ट्रांस्क्रिप्ट को इंडेक्स करें और उन्हेंmemory_search के माध्यम से प्रदर्शित करें:
मॉडल द्वारा सामान्य रूप से आरंभ की गई सत्र ट्रांसक्रिप्ट खोज
tools.sessions.visibility का पालन करती है। डिफ़ॉल्ट
tree दृश्यता वर्तमान सत्र, उसके द्वारा आरंभ किए गए सत्रों और
परिवेशी समूह जागरूकता के माध्यम से देखे गए समान-एजेंट समूह सत्रों को उपलब्ध कराती है। अन्य
असंबंधित सत्रों के लिए agent दृश्यता आवश्यक है (या all केवल तब, जब क्रॉस-एजेंट
पुनःस्मरण भी आवश्यक हो और एजेंट-से-एजेंट नीति इसकी अनुमति देती हो)।
rememberAcrossConversations उस सेटिंग का दायरा नहीं बढ़ाता। यह
सीमित Active Memory पास के दौरान समान-एजेंट निजी
ट्रांसक्रिप्ट तक सीमित एक अलग, केवल-रनटाइम प्राधिकरण प्रदान करता है।
नीचे दिए गए उदाहरण इन सेटिंग्स को शीर्ष-स्तरीय memory.search के अंतर्गत रखते हैं। जब केवल एक
एजेंट को सत्र ट्रांसक्रिप्ट अनुक्रमित और खोजनी हों, तब आप प्रति-एजेंट memory.search ओवरराइड में
समतुल्य सेटिंग्स भी लागू कर सकते हैं।
समान-एजेंट Gateway-से-DM पुनःस्मरण के लिए:
- अंतर्निहित बैकएंड
- QMD बैकएंड
sources: ["sessions"] ट्रांसक्रिप्ट को QMD में निर्यात नहीं करता। साथ ही
memory.qmd.sessions.enabled: true भी सेट करें। उच्च-स्तरीय
rememberAcrossConversations: true सेटिंग इसका अपवाद है: यह उस एजेंट के लिए
आवश्यक QMD सत्र निर्यात को निहित करती है। निहित निर्यात निजी रहते हैं:
वे हमेशा डिफ़ॉल्ट आंतरिक निर्यात स्थान का उपयोग करते हैं (कॉन्फ़िगर किया गया
sessions.exportDir केवल स्पष्ट निर्यातों पर लागू होता है), उन्हें केवल
उस एजेंट के क्रॉस-वार्तालाप पुनःस्मरण के दौरान खोजा जाता है, और सामान्य memory_get
उन्हें पढ़ नहीं सकता। स्पष्ट
memory.qmd.sessions.enabled: true अपना मौजूदा व्यवहार बनाए रखता है और
निर्यातित ट्रांसक्रिप्ट को सामान्य मेमोरी कॉर्पस का हिस्सा बनाता है।
SQLite वेक्टर त्वरण (sqlite-vec)
जब sqlite-vec उपलब्ध नहीं होता, OpenClaw स्वचालित रूप से प्रक्रिया-अंतर्गत कोसाइन समानता का उपयोग करता है।
इंडेक्स भंडारण
अंतर्निहित मेमोरी इंडेक्स प्रत्येक एजेंट के OpenClaw SQLite डेटाबेस मेंagents/<agentId>/agent/openclaw-agent.sqlite पर रहते हैं।
QMD बैकएंड कॉन्फ़िगरेशन
सक्षम करने के लिएmemory.backend = "qmd" सेट करें। सभी QMD सेटिंग्स memory.qmd के अंतर्गत रहती हैं:
searchMode: "search" केवल लेक्सिकल/BM25 है। OpenClaw उस मोड के लिए सिमेंटिक वेक्टर तत्परता जाँच या QMD एम्बेडिंग रखरखाव नहीं चलाता, जिसमें memory status --deep के दौरान भी शामिल है; vsearch और query को QMD वेक्टर तत्परता और एम्बेडिंग की आवश्यकता बनी रहती है।
rerank: false केवल QMD query मोड बदलता है और इसके लिए QMD 2.1 या नया संस्करण आवश्यक है। प्रत्यक्ष CLI मोड में OpenClaw --no-rerank पास करता है; mcporter-समर्थित MCP मोड में यह QMD के एकीकृत क्वेरी टूल को rerank: false पास करता है। QMD के डिफ़ॉल्ट क्वेरी पुनःरैंकिंग व्यवहार का उपयोग करने के लिए इसे सेट न करें।
OpenClaw वर्तमान QMD संग्रह और MCP क्वेरी संरचनाओं को प्राथमिकता देता है, लेकिन आवश्यकता होने पर संगत संग्रह पैटर्न फ़्लैग और पुराने MCP टूल नाम आज़माकर पुराने QMD रिलीज़ को कार्यशील रखता है। जब QMD अनेक संग्रह फ़िल्टर के लिए समर्थन घोषित करता है, तब समान-स्रोत संग्रहों को एक QMD प्रक्रिया से खोजा जाता है; पुराने QMD बिल्ड प्रति-संग्रह संगतता पथ बनाए रखते हैं। समान-स्रोत का अर्थ है कि स्थायी मेमोरी संग्रहों (डिफ़ॉल्ट मेमोरी फ़ाइलें और कस्टम पथ) को एक साथ समूहित किया जाता है, जबकि सत्र ट्रांसक्रिप्ट संग्रह अलग समूह बने रहते हैं, ताकि स्रोत विविधीकरण में दोनों इनपुट बने रहें।
QMD मॉडल ओवरराइड QMD की ओर रहते हैं, OpenClaw कॉन्फ़िगरेशन में नहीं। यदि आपको QMD के मॉडल वैश्विक रूप से ओवरराइड करने हों, तो Gateway रनटाइम वातावरण में
QMD_EMBED_MODEL, QMD_RERANK_MODEL, और QMD_GENERATE_MODEL जैसे पर्यावरण चर सेट करें।सीमाएँ
सीमाएँ
दायरा
दायरा
नियंत्रित करता है कि कौन-से सत्र QMD खोज परिणाम प्राप्त कर सकते हैं। प्रदत्त डिफ़ॉल्ट केवल DM/प्रत्यक्ष के लिए है, जो समूहों और अन्य चैनल प्रकारों को अस्वीकार करता है।
session.sendPolicy के समान स्कीमा:match.keyPrefix सामान्यीकृत सत्र कुंजी से मेल खाता है; match.rawKeyPrefix agent:<id>: सहित अपरिष्कृत कुंजी से मेल खाता है।उद्धरण
उद्धरण
memory.citations सभी बैकएंड पर लागू होता है:पूर्ण QMD उदाहरण
Dreaming
Dreaming कोplugins.entries.memory-core.config.dreaming के अंतर्गत कॉन्फ़िगर किया जाता है, memory.search के अंतर्गत नहीं।
Dreaming एक अनुसूचित स्वीप के रूप में चलता है और आंतरिक हल्के/गहन/REM चरणों को कार्यान्वयन विवरण के रूप में उपयोग करता है।
अवधारणात्मक व्यवहार और स्लैश कमांड के लिए, Dreaming देखें।
उपयोगकर्ता सेटिंग्स
उदाहरण
- Dreaming मशीन स्थिति को
memory/.dreams/में लिखता है। - Dreaming मानव-पठनीय वर्णनात्मक आउटपुट को
DREAMS.md(या मौजूदाdreams.md) में लिखता है। dreaming.modelमौजूदा Plugin सबएजेंट विश्वास गेट का उपयोग करता है; इसे सक्षम करने से पहलेplugins.entries.memory-core.subagent.allowModelOverride: trueसेट करें।- कॉन्फ़िगर किया गया मॉडल उपलब्ध न होने पर Dream Diary सत्र के डिफ़ॉल्ट मॉडल के साथ एक बार पुनः प्रयास करता है। विश्वास या अनुमत-सूची विफलताएँ लॉग की जाती हैं और उनके लिए चुपचाप पुनः प्रयास नहीं किया जाता।
- हल्के/गहन/REM चरणों की नीति और सीमाएँ आंतरिक व्यवहार हैं, उपयोगकर्ता-दृश्य कॉन्फ़िगरेशन नहीं।