Sessions and memory
मेमोरी खोज
memory_search आपकी मेमोरी फ़ाइलों से प्रासंगिक नोट्स खोजता है, भले ही उनकी
शब्दावली मूल पाठ से अलग हो। यह मेमोरी को छोटे भागों में बाँटता है और
उन्हें एम्बेडिंग, कीवर्ड या दोनों से खोजता है।
त्वरित शुरुआत
OpenClaw डिफ़ॉल्ट रूप से OpenAI एम्बेडिंग का उपयोग करता है। किसी अन्य प्रदाता का उपयोग करने के लिए, उसे स्पष्ट रूप से सेट करें:
{ memory: { search: { provider: "openai", // या "gemini", "voyage", "mistral", "bedrock", "local", "ollama", "lmstudio", "github-copilot", "openai-compatible" }, },}provider किसी कस्टम models.providers.<id> प्रविष्टि (उदाहरण के लिए
ollama-5080) का संदर्भ भी दे सकता है, बशर्ते वह प्रविष्टि api को "ollama" या
मेमोरी एम्बेडिंग अडैप्टर वाले किसी अन्य प्रदाता आईडी पर सेट करे।
बिना API कुंजी के स्थानीय एम्बेडिंग के लिए, आधिकारिक llama.cpp प्रदाता
Plugin इंस्टॉल करें और provider: "local" सेट करें:
openclaw plugins install @openclaw/llama-cpp-providerस्रोत चेकआउट के लिए अभी भी नेटिव बिल्ड अनुमोदन आवश्यक है: pnpm approve-builds, फिर
pnpm rebuild node-llama-cpp।
कुछ OpenAI-संगत एम्बेडिंग एंडपॉइंट को असममित input_type
लेबल चाहिए होते हैं, जैसे खोजों के लिए "query" और इंडेक्स किए गए
खंडों के लिए "document"/"passage"। इन्हें queryInputType और documentInputType से सेट करें; देखें
मेमोरी कॉन्फ़िगरेशन संदर्भ।
समर्थित प्रदाता
| प्रदाता | आईडी | API कुंजी आवश्यक | टिप्पणियाँ |
|---|---|---|---|
| Bedrock | bedrock |
नहीं | AWS क्रेडेंशियल शृंखला का उपयोग करता है |
| DeepInfra | deepinfra |
हाँ | डिफ़ॉल्ट मॉडल BAAI/bge-m3 |
| Gemini | gemini |
हाँ | इमेज/ऑडियो इंडेक्सिंग का समर्थन करता है |
| GitHub Copilot | github-copilot |
नहीं | आपकी Copilot सदस्यता का उपयोग करता है |
| स्थानीय | local |
नहीं | GGUF मॉडल, ~0.6 GB स्वतः डाउनलोड |
| LM Studio | lmstudio |
नहीं | स्थानीय/स्व-होस्टेड सर्वर |
| Mistral | mistral |
हाँ | |
| Ollama | ollama |
नहीं | स्थानीय/स्व-होस्टेड सर्वर |
| OpenAI | openai |
हाँ | डिफ़ॉल्ट |
| OpenAI-संगत | openai-compatible |
आमतौर पर | सामान्य /v1/embeddings एंडपॉइंट |
| Voyage | voyage |
हाँ |
खोज कैसे काम करती है
OpenClaw दो पुनर्प्राप्ति पथ समानांतर रूप से चलाता है और परिणामों को मर्ज करता है:
flowchart LR
Q["क्वेरी"] --> E["एम्बेडिंग"]
Q --> T["टोकनाइज़"]
E --> VS["वेक्टर खोज"]
T --> BM["BM25 खोज"]
VS --> M["भारित मर्ज"]
BM --> M
M --> R["शीर्ष परिणाम"]- वेक्टर खोज समान अर्थ का मिलान करती है ("gateway host" का मिलान "वह मशीन जिस पर OpenClaw चल रहा है" से होता है)।
- BM25 कीवर्ड खोज सटीक शब्दों (आईडी, त्रुटि स्ट्रिंग, कॉन्फ़िगरेशन कुंजियाँ) का मिलान करती है।
- फ़ाइल नाम खोज पथों को नोट के मुख्य भाग से अलग इंडेक्स करती है। सटीक पूर्ण पथ, बेसनाम और फ़ाइल नाम स्टेम को आंशिक पथ मिलानों से ऊँची रैंक मिलती है, जबकि स्निपेट और मुख्य भाग के कीवर्ड स्कोर अभी भी नोट की सामग्री से आते हैं।
यदि केवल एक पथ उपलब्ध है, तो वही अकेले चलता है।
केवल-FTS मोड। एम्बेडिंग को जानबूझकर अक्षम करने और केवल कीवर्ड से खोजने के लिए
provider: "none" सेट करें। provider को सेट न करने या "auto" पर सेट करने से
भी, यदि कोई एम्बेडिंग प्रमाणीकरण कॉन्फ़िगर नहीं है, बिना त्रुटि दिए केवल-कीवर्ड रैंकिंग पर फ़ॉलबैक होता है,
और विफल होने पर provider: "local" (GGUF/llama.cpp
प्रदाता) भी ऐसा ही करता है।
स्पष्ट रूप से चुना गया प्रदाता अनुपलब्ध है। यदि आप किसी अन्य प्रदाता का नाम स्पष्ट रूप से देते हैं
(उदाहरण के लिए openai, ollama, gemini) और वह अनुरोध के समय
अनुपलब्ध हो जाता है (अमान्य प्रमाणीकरण, नेटवर्क विफलता), तो memory_search चुपचाप केवल-FTS परिणामों पर
अवनत होने के बजाय मेमोरी को अनुपलब्ध बताता है। इससे खराब कॉन्फ़िगर किया गया
प्रदाता दिखाई देता रहता है। जानबूझकर केवल-FTS पुनर्स्मरण के लिए provider: "none" सेट करें,
या सिमेंटिक रैंकिंग पुनर्स्थापित करने के लिए प्रदाता/प्रमाणीकरण कॉन्फ़िगरेशन ठीक करें।
खोज गुणवत्ता में सुधार
दो वैकल्पिक सुविधाएँ लंबे नोट इतिहास में सहायता करती हैं।
समयानुसार क्षय
पुराने नोट धीरे-धीरे अपना रैंकिंग भार खोते हैं, ताकि हाल की जानकारी पहले दिखाई दे।
डिफ़ॉल्ट 30-दिन की अर्ध-आयु के साथ, पिछले महीने के नोट को उसके
मूल भार का 50% स्कोर मिलता है। MEMORY.md और memory/ के अंतर्गत अन्य बिना-तारीख वाली फ़ाइलें
सदाबहार हैं और उनका कभी क्षय नहीं होता; केवल तारीख वाली memory/YYYY-MM-DD.md फ़ाइलों का क्षय होता है।
MMR (विविधता)
अनावश्यक रूप से दोहराए गए परिणाम कम करता है। यदि पाँच नोट एक ही राउटर कॉन्फ़िगरेशन का उल्लेख करते हैं, तो MMR सुनिश्चित करता है कि शीर्ष परिणाम दोहराव के बजाय अलग-अलग विषयों को समाहित करें।
दोनों सक्षम करें
{ memory: { search: { query: { hybrid: { mmr: { enabled: true }, temporalDecay: { enabled: true }, }, }, }, },}मल्टीमोडल मेमोरी
gemini-embedding-2-preview के साथ, आप Markdown के साथ इमेज और ऑडियो को भी
इंडेक्स कर सकते हैं। यह केवल memory.search.extraPaths के अंतर्गत फ़ाइलों पर लागू होता है; डिफ़ॉल्ट
मेमोरी रूट (MEMORY.md, memory/*.md) केवल Markdown रहते हैं। खोज क्वेरी
टेक्स्ट ही रहती हैं, लेकिन वे दृश्य और ऑडियो सामग्री से मेल खाती हैं। सेटअप के लिए
मेमोरी कॉन्फ़िगरेशन संदर्भ
देखें।
सत्र मेमोरी खोज
सत्र ट्रांसक्रिप्ट से सटीक पूर्ण-पाठ पुनर्स्मरण के लिए, sessions_search
का उपयोग करें और फिर sessions_history से परिणाम खोलें। सत्र-मेमोरी खोज सिमेंटिक,
प्रयोगात्मक पूरक बनी रहती है।
वैकल्पिक रूप से सत्र ट्रांसक्रिप्ट इंडेक्स करें, ताकि memory_search पिछली
बातचीत को याद कर सके। यह स्वैच्छिक है: experimental.sessionMemory: true सेट करें और
sources में "sessions" जोड़ें (डिफ़ॉल्ट sources, ["memory"] है)।
सत्र हिट tools.sessions.visibility का पालन करते हैं: डिफ़ॉल्ट "tree"
वर्तमान सत्र, उसके द्वारा बनाए गए सत्र और परिवेशी समूह जागरूकता के माध्यम से देखे गए
समान-एजेंट समूह सत्रों को उजागर करता है। session.dmScope: "main" के साथ, बहु-उपयोगकर्ता
DM सेटअप उस मुख्य सत्र को साझा करता है, इसलिए वहाँ रूट किए गए उपयोगकर्ता उसके देखे गए समूहों की सामग्री
को याद कर सकते हैं। DM पृथक्करण के लिए प्रति-पीयर dmScope का उपयोग करें, या
परिवेशी रूप से देखे गए सत्रों को पढ़ने से बाहर रहने के लिए दृश्यता को "self" पर सेट करें। अन्य
असंबंधित समान-एजेंट सत्रों के लिए अभी भी "agent" दृश्यता आवश्यक है।
QMD बैकएंड का उपयोग करते समय, memory.qmd.sessions.enabled: true भी सेट करें, ताकि
ट्रांसक्रिप्ट QMD संग्रह में निर्यात हों; केवल experimental.sessionMemory
और sources ट्रांसक्रिप्ट को QMD में निर्यात नहीं करते। देखें
कॉन्फ़िगरेशन संदर्भ।
समस्या निवारण
कोई परिणाम नहीं? इंडेक्स जाँचने के लिए openclaw memory status चलाएँ। यदि वह खाली है, तो
openclaw memory index --force चलाएँ।
केवल कीवर्ड मिलान? संभव है कि आपका एम्बेडिंग प्रदाता कॉन्फ़िगर न हो। जाँचें
openclaw memory status --deep।
स्थानीय एम्बेडिंग का समय समाप्त हो जाता है? ollama, lmstudio, और local अधिक लंबे
प्रदाता-स्वामित्व वाले बैच समय-सीमा का उपयोग करते हैं। प्रदाता की स्थिति जाँचें और
openclaw memory index --force फिर चलाएँ।
CJK टेक्स्ट नहीं मिला? FTS इंडेक्स को
openclaw memory index --force से फिर बनाएँ।