Skip to main content
memory_search आपकी मेमोरी फ़ाइलों से प्रासंगिक नोट्स खोजता है, भले ही उनकी शब्दावली मूल पाठ से अलग हो। यह मेमोरी को छोटे भागों में बाँटता है और उन्हें एम्बेडिंग, कीवर्ड या दोनों से खोजता है।

त्वरित शुरुआत

OpenClaw डिफ़ॉल्ट रूप से OpenAI एम्बेडिंग का उपयोग करता है। किसी अन्य प्रदाता का उपयोग करने के लिए, उसे स्पष्ट रूप से सेट करें:
provider किसी कस्टम models.providers.<id> प्रविष्टि (उदाहरण के लिए ollama-5080) का संदर्भ भी दे सकता है, बशर्ते वह प्रविष्टि api को "ollama" या मेमोरी एम्बेडिंग अडैप्टर वाले किसी अन्य प्रदाता आईडी पर सेट करे। बिना API कुंजी के स्थानीय एम्बेडिंग के लिए, आधिकारिक llama.cpp प्रदाता Plugin इंस्टॉल करें और provider: "local" सेट करें:
स्रोत चेकआउट के लिए अभी भी नेटिव बिल्ड अनुमोदन आवश्यक है: pnpm approve-builds, फिर pnpm rebuild node-llama-cpp कुछ OpenAI-संगत एम्बेडिंग एंडपॉइंट को असममित input_type लेबल चाहिए होते हैं, जैसे खोजों के लिए "query" और इंडेक्स किए गए खंडों के लिए "document"/"passage"। इन्हें queryInputType और documentInputType से सेट करें; देखें मेमोरी कॉन्फ़िगरेशन संदर्भ

समर्थित प्रदाता

खोज कैसे काम करती है

OpenClaw दो पुनर्प्राप्ति पथ समानांतर रूप से चलाता है और परिणामों को मर्ज करता है:
  • वेक्टर खोज समान अर्थ का मिलान करती है (“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 अलग-अलग दैनिक नोटों से लगभग समान स्निपेट लगातार लौटा रहा है, तो इसे सक्षम करें।

दोनों सक्षम करें

मल्टीमोडल मेमोरी

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 से फिर बनाएँ।

संबंधित