---
read_when:
    - आप मेमोरी खोज प्रदाताओं या एम्बेडिंग मॉडल को कॉन्फ़िगर करना चाहते हैं
    - आप QMD बैकएंड सेट अप करना चाहते हैं
    - आप हाइब्रिड खोज, MMR, या समय-आधारित क्षय सक्षम करना चाहते हैं
    - आप मल्टीमॉडल मेमोरी इंडेक्सिंग सक्षम करना चाहते हैं
sidebarTitle: Memory config
summary: मेमोरी खोज प्रदाता, पुनर्प्राप्ति मोड, QMD और मल्टीमोडल इंडेक्सिंग
title: मेमोरी कॉन्फ़िगरेशन संदर्भ
x-i18n:
    generated_at: "2026-07-27T19:56:38Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 91f843b1516093c49e18b3d659ab24ea9cb7be32aaaac722205eca8bc3f2ca5b
    source_path: reference/memory-config.md
    workflow: 16
---

यह पृष्ठ OpenClaw मेमोरी खोज के प्रत्येक कॉन्फ़िगरेशन विकल्प को सूचीबद्ध करता है। वैचारिक अवलोकन के लिए, देखें:

<CardGroup cols={2}>
  <Card title="मेमोरी अवलोकन" href="/hi/concepts/memory">
    मेमोरी कैसे काम करती है।
  </Card>
  <Card title="अंतर्निहित इंजन" href="/hi/concepts/memory-builtin">
    डिफ़ॉल्ट SQLite बैकएंड।
  </Card>
  <Card title="QMD इंजन" href="/hi/concepts/memory-qmd">
    लोकल-फ़र्स्ट साइडकार।
  </Card>
  <Card title="मेमोरी खोज" href="/hi/concepts/memory-search">
    खोज पाइपलाइन और ट्यूनिंग।
  </Card>
  <Card title="Active Memory" href="/hi/concepts/active-memory">
    इंटरैक्टिव सत्रों के लिए मेमोरी उप-एजेंट।
  </Card>
</CardGroup>

सभी साझा मेमोरी सेटिंग शीर्ष-स्तरीय `memory` के अंतर्गत `openclaw.json` में रहती हैं। खोज के डिफ़ॉल्ट `memory.search` का उपयोग करते हैं; प्रति-एजेंट खोज ओवरराइड `agents.entries.*.memory.search` का उपयोग करते हैं।

<Note>
अनुशंसित व्यक्तिगत-एजेंट कार्यप्रवाह के लिए,
`memory.search.rememberAcrossConversations` का उपयोग करें। उन्नत Active Memory लक्ष्यीकरण,
मॉडल, प्रॉम्प्ट और विलंबता नियंत्रण `plugins.entries.active-memory` के अंतर्गत रहते हैं।

सक्रियण के दोनों मार्गों, ट्रांस्क्रिप्ट स्थायित्व और सुरक्षित रोलआउट मार्गदर्शन के लिए
[Active Memory](/hi/concepts/active-memory) देखें।
</Note>

---

## वार्तालापों के बीच याद रखना

| कुंजी                           | प्रकार      | डिफ़ॉल्ट                                                    | विवरण                                                                    |
| ----------------------------- | --------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `rememberAcrossConversations` | `boolean` | व्यक्तिगत इंस्टॉल के लिए चालू; कॉन्फ़िगर किए गए DM पृथक्करण के साथ बंद | इस एजेंट के अन्य पहचाने गए निजी वार्तालापों से प्रासंगिक संदर्भ का उपयोग करें। |

जब केवल किसी विश्वसनीय व्यक्तिगत एजेंट को वार्तालापों के बीच ट्रांस्क्रिप्ट स्मरण का उपयोग करना चाहिए, तो इसे प्रति एजेंट कॉन्फ़िगर करें:

```json5
{
  agents: {
    entries: {
      personal: {
        memory: {
          search: {
            rememberAcrossConversations: true,
          },
        },
      },
    },
  },
}
```

यह मान प्रति-एजेंट ओवरराइड के साथ सामान्य `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 एक सीमित
केवल-पठन पुनर्प्राप्ति पास निष्पादित करता है; अनुपलब्ध या समय-सीमा समाप्त पुनर्प्राप्ति
उत्तर को अवरुद्ध नहीं करती।

---

## प्रदाता चयन

| कुंजी        | प्रकार      | डिफ़ॉल्ट          | विवरण                                                                                                                                                                                                                                                                                 |
| ---------- | --------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`  | `boolean` | `true`           | मेमोरी खोज सक्षम या अक्षम करें                                                                                                                                                                                                                                                             |
| `provider` | `string`  | `"openai"`       | एम्बेडिंग अडैप्टर ID, जैसे `bedrock`, `deepinfra`, `gemini`, `github-copilot`, `local`, `mistral`, `ollama`, `openai`, `openai-compatible`, या `voyage`; यह कॉन्फ़िगर किया गया ऐसा `models.providers.<id>` भी हो सकता है जिसका `api` किसी मेमोरी एम्बेडिंग अडैप्टर या OpenAI-संगत मॉडल API की ओर संकेत करता हो |
| `model`    | `string`  | प्रदाता डिफ़ॉल्ट | एम्बेडिंग मॉडल का नाम                                                                                                                                                                                                                                                                        |
| `fallback` | `string`  | `"none"`         | प्राथमिक के विफल होने पर फ़ॉलबैक अडैप्टर ID                                                                                                                                                                                                                                                  |

जब `provider` सेट नहीं होता, तब OpenClaw OpenAI एम्बेडिंग का उपयोग करता है। Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama,
Voyage, स्थानीय GGUF मॉडल या OpenAI-संगत `/v1/embeddings` एंडपॉइंट का उपयोग करने के लिए `provider`
स्पष्ट रूप से सेट करें।
जो पुराने कॉन्फ़िगरेशन अभी भी `provider: "auto"` कहते हैं, वे `openai` में समाधान होते हैं।

<Warning>
एम्बेडिंग प्रदाता, मॉडल, प्रदाता सेटिंग, स्रोत, दायरा,
चंकिंग या टोकनाइज़र बदलने से मौजूदा SQLite वेक्टर इंडेक्स असंगत हो सकता है।
OpenClaw सब कुछ स्वतः दोबारा एम्बेड करने के बजाय वेक्टर खोज रोक देता है और
इंडेक्स पहचान चेतावनी की रिपोर्ट करता है। तैयार होने पर
`openclaw memory status --index --agent <id>` या
`openclaw memory index --force --agent <id>` से इसे फिर से बनाएँ।
</Warning>

जब `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 या मल्टी-होस्ट सेटअप मेमोरी एम्बेडिंग को किसी विशिष्ट स्थानीय एंडपॉइंट को समर्पित कर सकते हैं:

```json5
{
  models: {
    providers: {
      "ollama-5080": {
        api: "ollama",
        baseUrl: "http://gpu-box.local:11435",
        apiKey: "ollama-local",
        models: [{ id: "qwen3-embedding:0.6b", name: "Qwen3 Embedding 0.6B" }],
      },
    },
  },
  memory: {
    search: {
      provider: "ollama-5080",
      model: "qwen3-embedding:0.6b",
    },
  },
}
```

### API कुंजी समाधान

रिमोट एम्बेडिंग के लिए API कुंजी आवश्यक है। इसके बजाय Bedrock AWS SDK डिफ़ॉल्ट क्रेडेंशियल शृंखला का उपयोग करता है (इंस्टेंस भूमिकाएँ, SSO, एक्सेस कुंजियाँ या Bedrock API कुंजी)।

| प्रदाता       | पर्यावरण चर                                             | कॉन्फ़िगरेशन कुंजी                          |
| -------------- | --------------------------------------------------- | ----------------------------------- |
| Bedrock        | AWS क्रेडेंशियल शृंखला, या `AWS_BEARER_TOKEN_BEDROCK` | किसी API कुंजी की आवश्यकता नहीं                   |
| DeepInfra      | `DEEPINFRA_API_KEY`                                 | `models.providers.deepinfra.apiKey` |
| Gemini         | `GEMINI_API_KEY`                                    | `models.providers.google.apiKey`    |
| GitHub Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN`  | डिवाइस लॉगिन के माध्यम से प्रमाणीकरण प्रोफ़ाइल       |
| Mistral        | `MISTRAL_API_KEY`                                   | `models.providers.mistral.apiKey`   |
| Ollama         | `OLLAMA_API_KEY` (प्लेसहोल्डर)                      | --                                  |
| OpenAI         | `OPENAI_API_KEY`                                    | `models.providers.openai.apiKey`    |
| Voyage         | `VOYAGE_API_KEY`                                    | `models.providers.voyage.apiKey`    |

<Note>
Codex OAuth केवल चैट/पूर्णताओं को कवर करता है और एम्बेडिंग अनुरोधों को पूरा नहीं करता।
</Note>

---

## रिमोट एंडपॉइंट कॉन्फ़िगरेशन

ऐसे सामान्य OpenAI-संगत
`/v1/embeddings` सर्वर के लिए `provider: "openai-compatible"` का उपयोग करें, जिसे वैश्विक OpenAI चैट क्रेडेंशियल इनहेरिट नहीं करने चाहिए।

<ParamField path="remote.baseUrl" type="string">
  कस्टम API बेस URL।
</ParamField>
<ParamField path="remote.apiKey" type="string">
  API कुंजी ओवरराइड करें।
</ParamField>
<ParamField path="remote.headers" type="object">
  अतिरिक्त HTTP हेडर (प्रदाता डिफ़ॉल्ट के साथ मर्ज किए जाते हैं)।
</ParamField>

```json5
{
  memory: {
    search: {
      provider: "openai-compatible",
      model: "text-embedding-3-small",
      remote: {
        baseUrl: "https://api.example.com/v1/",
        apiKey: "YOUR_KEY",
      },
    },
  },
}
```

---

## प्रदाता-विशिष्ट कॉन्फ़िगरेशन

<AccordionGroup>
  <Accordion title="Gemini">
    | कुंजी                    | प्रकार     | डिफ़ॉल्ट                | विवरण                                |
    | ---------------------- | -------- | ---------------------- | ------------------------------------------- |
    | `model`                | `string` | `gemini-embedding-001` | `gemini-embedding-2-preview` का भी समर्थन करता है |
    | `outputDimensionality` | `number` | `3072`                 | Embedding 2 के लिए: 768, 1536 या 3072        |

    <Warning>
    मॉडल या `outputDimensionality` बदलने से इंडेक्स पहचान बदल जाती है। OpenClaw
    तब तक वेक्टर खोज रोक देता है, जब तक आप स्पष्ट रूप से मेमोरी इंडेक्स फिर से नहीं बनाते।
    </Warning>

  </Accordion>
  <Accordion title="OpenAI-संगत इनपुट प्रकार">
    OpenAI-संगत एम्बेडिंग एंडपॉइंट प्रदाता-विशिष्ट `input_type` अनुरोध फ़ील्ड का विकल्प चुन सकते हैं। यह उन असममित एम्बेडिंग मॉडलों के लिए उपयोगी है जिन्हें क्वेरी और दस्तावेज़ एम्बेडिंग के लिए अलग-अलग लेबल की आवश्यकता होती है।

    | कुंजी                 | प्रकार     | डिफ़ॉल्ट | विवरण                                             |
    | ------------------- | -------- | ------- | -------------------------------------------------------- |
    | `inputType`         | `string` | सेट नहीं   | क्वेरी और दस्तावेज़ एम्बेडिंग के लिए साझा `input_type`   |
    | `queryInputType`    | `string` | सेट नहीं   | क्वेरी-समय `input_type`; `inputType` को ओवरराइड करता है          |
    | `documentInputType` | `string` | सेट नहीं   | इंडेक्स/दस्तावेज़ `input_type`; `inputType` को ओवरराइड करता है      |

    ```json5
    {
      memory: {
        search: {
          provider: "openai-compatible",
          remote: {
            baseUrl: "https://embeddings.example/v1",
            apiKey: "${EMBEDDINGS_API_KEY}",
          },
          model: "asymmetric-embedder",
          queryInputType: "query",
          documentInputType: "passage",
        },
      },
    }
    ```

    इन मानों को बदलने से प्रदाता बैच इंडेक्सिंग के लिए एम्बेडिंग कैश पहचान प्रभावित होती है और यदि अपस्ट्रीम मॉडल लेबल को अलग तरह से मानता है, तो इसके बाद मेमोरी को पुनः इंडेक्स किया जाना चाहिए।

  </Accordion>
  <Accordion title="Bedrock">
    ### Bedrock एम्बेडिंग कॉन्फ़िगरेशन

    Bedrock, AWS SDK की डिफ़ॉल्ट क्रेडेंशियल शृंखला के साथ OpenClaw द्वारा जाँचे गए बेयरर टोकन का उपयोग करता है, इसलिए कॉन्फ़िगरेशन में कोई API कुंजी संग्रहीत नहीं की जाती। यदि OpenClaw, Bedrock-सक्षम इंस्टेंस भूमिका वाले EC2 पर चलता है, तो केवल प्रदाता और मॉडल सेट करें:

    ```json5
    {
      memory: {
        search: {
          provider: "bedrock",
          model: "amazon.titan-embed-text-v2:0",
        },
      },
    }
    ```

    | कुंजी                    | प्रकार     | डिफ़ॉल्ट                        | विवरण                     |
    | ---------------------- | -------- | ------------------------------- | -------------------------------- |
    | `model`                | `string` | `amazon.titan-embed-text-v2:0` | कोई भी Bedrock एम्बेडिंग मॉडल ID  |
    | `outputDimensionality` | `number` | मॉडल डिफ़ॉल्ट                  | Titan V2 के लिए: 256, 512 या 1024 |

    **समर्थित मॉडल** (फ़ैमिली पहचान और डाइमेंशन डिफ़ॉल्ट सहित):

    | मॉडल ID                                   | प्रदाता   | डिफ़ॉल्ट डाइमेंशन | कॉन्फ़िगर किए जा सकने वाले डाइमेंशन          |
    | ------------------------------------------- | ---------- | ------------- | -------------------------- |
    | `amazon.titan-embed-text-v2:0`             | Amazon     | 1024         | 256, 512, 1024             |
    | `amazon.titan-embed-text-v1`               | Amazon     | 1536         | --                          |
    | `amazon.titan-embed-g1-text-02`            | Amazon     | 1536         | --                          |
    | `amazon.titan-embed-image-v1`              | Amazon     | 1024         | --                          |
    | `amazon.nova-2-multimodal-embeddings-v1:0` | Amazon     | 1024         | 256, 384, 1024, 3072       |
    | `cohere.embed-english-v3`                  | Cohere     | 1024         | --                          |
    | `cohere.embed-multilingual-v3`             | Cohere     | 1024         | --                          |
    | `cohere.embed-v4:0`                        | Cohere     | 1536         | 256, 384, 512, 768, 1024, 1536 |
    | `twelvelabs.marengo-embed-3-0-v1:0`        | TwelveLabs | 512          | --                          |
    | `twelvelabs.marengo-embed-2-7-v1:0`        | TwelveLabs | 1024         | --                          |

    थ्रूपुट-प्रत्यय वाले वेरिएंट (जैसे, `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 डिफ़ॉल्ट क्रेडेंशियल प्रदाता शृंखला का उपयोग करता है:

    1. पर्यावरण चर (`AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY`), जब तक `AWS_PROFILE` भी सेट न हो
    2. SSO (केवल जब SSO फ़ील्ड कॉन्फ़िगर हों)
    3. साझा क्रेडेंशियल और कॉन्फ़िगरेशन फ़ाइलें (`fromIni`, जिसमें `AWS_PROFILE` शामिल है)
    4. क्रेडेंशियल प्रक्रिया (AWS कॉन्फ़िगरेशन फ़ाइल में `credential_process`)
    5. वेब आइडेंटिटी टोकन क्रेडेंशियल
    6. ECS या EC2 इंस्टेंस मेटाडेटा क्रेडेंशियल

    **IAM अनुमतियाँ:** IAM भूमिका या उपयोगकर्ता को निम्न की आवश्यकता है:

    ```json
    {
      "Effect": "Allow",
      "Action": "bedrock:InvokeModel",
      "Resource": "*"
    }
    ```

    न्यूनतम विशेषाधिकार के लिए, `InvokeModel` को विशिष्ट मॉडल तक सीमित करें:

    ```text
    arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
    ```

  </Accordion>
  <Accordion title="स्थानीय (GGUF + llama.cpp)">
    | कुंजी                   | प्रकार               | डिफ़ॉल्ट                | विवरण                                                                                                                                                                                                                                                                                                          |
    | --------------------- | ------------------ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `local.modelPath`     | `string`           | स्वतः डाउनलोड किया गया        | GGUF मॉडल फ़ाइल का पथ                                                                                                                                                                                                                                                                                              |
    | `local.modelCacheDir` | `string`           | node-llama-cpp डिफ़ॉल्ट | डाउनलोड किए गए मॉडलों के लिए कैश डायरेक्टरी                                                                                                                                                                                                                                                                                      |
    | `local.contextSize`   | `number \| "auto"` | `4096`                 | एम्बेडिंग कॉन्टेक्स्ट के लिए कॉन्टेक्स्ट विंडो का आकार। 4096 गैर-वेट VRAM को सीमित रखते हुए सामान्य खंडों (128-512 टोकन) को समाहित करता है। सीमित होस्ट पर इसे घटाकर 1024-2048 करें। `"auto"` मॉडल के प्रशिक्षित अधिकतम का उपयोग करता है -- 8B+ मॉडल के लिए अनुशंसित नहीं (Qwen3-Embedding-8B: 40 960 टोकन तक VRAM को ~32 GB तक पहुँचा सकते हैं)। |

    पहले आधिकारिक 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 का उपयोग करें:

    ```bash
    openclaw memory status --deep --agent main
    openclaw memory index --force --agent main
    ```

    संख्यात्मक `local.contextSize` मान node-llama-cpp के स्वचालित GPU-लेयर प्लेसमेंट को भी सूचित करते हैं, ताकि मॉडल वेट और अनुरोधित एम्बेडिंग कॉन्टेक्स्ट को एक साथ समायोजित किया जा सके। रनटाइम लोड होने के बाद `openclaw memory status --deep` अंतिम ज्ञात llama.cpp बैकएंड, डिवाइस, ऑफ़लोड, अनुरोधित कॉन्टेक्स्ट और टाइमस्टैम्प वाले मेमोरी तथ्य रिपोर्ट करता है; निष्क्रिय स्थिति किसी मॉडल को लोड नहीं करती।

    स्थानीय GGUF एम्बेडिंग के लिए `provider: "local"` को स्पष्ट रूप से सेट करें। स्पष्ट स्थानीय कॉन्फ़िगरेशन के लिए `hf:` और HTTP(S) मॉडल संदर्भ समर्थित हैं (node-llama-cpp के मॉडल रिज़ॉल्यूशन के माध्यम से), लेकिन वे डिफ़ॉल्ट प्रदाता को नहीं बदलते।

  </Accordion>
</AccordionGroup>

## इंडेक्सिंग व्यवहार

मेमोरी इंजन सिंक्रोनाइज़ेशन, बैचिंग, निगरानी और Compaction के बाद की
इंडेक्सिंग ह्यूरिस्टिक्स के स्वामी होते हैं। OpenClaw प्रति-इंस्टॉलेशन समय-निर्धारण
स्विच उजागर करने के बजाय इन व्यवहारों को अनुरक्षित डिफ़ॉल्ट के साथ सक्षम रखता है।

## हाइब्रिड खोज कॉन्फ़िगरेशन

सभी `memory.search.query` के अंतर्गत:

| कुंजी          | प्रकार     | डिफ़ॉल्ट | विवरण                               |
| ------------ | -------- | ------- | ----------------------------------------- |
| `maxResults` | `number` | `6`     | इंजेक्शन से पहले लौटाए गए अधिकतम मेमोरी परिणाम |
| `minScore`   | `number` | `0.35`  | किसी परिणाम को शामिल करने के लिए न्यूनतम प्रासंगिकता स्कोर  |

हाइब्रिड पुनर्प्राप्ति सक्षम रहती है; अंतर्निहित इंजन नीति द्वारा MMR और कालगत क्षय
अक्षम रहते हैं।

### पूर्ण उदाहरण

```json5
{
  memory: {
    search: {
      query: {
        maxResults: 6,
        minScore: 0.35,
      },
    },
  },
}
```

---

## अतिरिक्त मेमोरी पथ

| कुंजी          | प्रकार       | विवरण                              |
| ------------ | ---------- | ---------------------------------------- |
| `extraPaths` | `string[]` | इंडेक्स करने के लिए अतिरिक्त डायरेक्टरियाँ या फ़ाइलें |

```json5
{
  memory: {
    search: {
      extraPaths: ["../team-docs", "/srv/shared-notes"],
    },
  },
}
```

पथ पूर्ण या कार्यक्षेत्र-सापेक्ष हो सकते हैं। `.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 के साथ छवियों और ऑडियो को इंडेक्स करें:

| कुंजी                       | प्रकार       | डिफ़ॉल्ट    | विवरण                            |
| ------------------------- | ---------- | ---------- | -------------------------------------- |
| `multimodal.enabled`      | `boolean`  | `false`    | मल्टीमॉडल इंडेक्सिंग सक्षम करें             |
| `multimodal.modalities`   | `string[]` | --         | `["image"]`, `["audio"]`, या `["all"]` |
| `multimodal.maxFileBytes` | `number`   | `10485760` | इंडेक्सिंग के लिए अधिकतम फ़ाइल आकार (10 MiB)    |

<Note>
केवल `extraPaths` में मौजूद फ़ाइलों पर लागू होता है। डिफ़ॉल्ट मेमोरी रूट केवल Markdown बने रहते हैं। `gemini-embedding-2-preview` आवश्यक है। `fallback` का `"none"` होना आवश्यक है।
</Note>

समर्थित प्रारूप: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.heic`, `.heif` (छवियाँ); `.mp3`, `.wav`, `.ogg`, `.opus`, `.m4a`, `.aac`, `.flac` (ऑडियो)।

---

## एम्बेडिंग कैश

| कुंजी             | प्रकार      | डिफ़ॉल्ट | विवरण                      |
| --------------- | --------- | ------- | -------------------------------- |
| `cache.enabled` | `boolean` | `true`  | SQLite में खंड एम्बेडिंग कैश करें |

पुनः इंडेक्सिंग या ट्रांस्क्रिप्ट अपडेट के दौरान अपरिवर्तित टेक्स्ट को दोबारा एम्बेड होने से रोकता है।

---

## बैच इंडेक्सिंग

| कुंजी                          | प्रकार      | डिफ़ॉल्ट | विवरण                |
| ---------------------------- | --------- | ------- | -------------------------- |
| `remote.nonBatchConcurrency` | `number`  | `4`     | समानांतर इनलाइन एम्बेडिंग |
| `remote.batch.enabled`       | `boolean` | `false` | बैच एम्बेडिंग API सक्षम करें |

`gemini`, `openai`, और `voyage` के लिए उपलब्ध। बड़े बैकफ़िल के लिए OpenAI बैच आम तौर पर सबसे तेज़ और सबसे सस्ता होता है।

समवर्तीता, पोलिंग और टाइमआउट व्यवहार का स्वामित्व प्रदाता के पास होता है।

---

## सत्र मेमोरी खोज

सत्र ट्रांस्क्रिप्ट को इंडेक्स करें और उन्हें `memory_search` के माध्यम से प्रदर्शित करें:

| कुंजी                           | प्रकार       | डिफ़ॉल्ट      | विवरण                              |
| ----------------------------- | ---------- | ------------ | ---------------------------------------- |
| `rememberAcrossConversations` | `boolean`  | `false`      | निजी क्रॉस-कन्वर्सेशन स्मरण की अनुमति दें |
| `sources`                     | `string[]` | `["memory"]` | ट्रांस्क्रिप्ट शामिल करने के लिए `"sessions"` जोड़ें  |

<Warning>
सत्र अनुक्रमण वैकल्पिक है और अतुल्यकालिक रूप से चलता है। परिणाम थोड़े पुराने हो सकते हैं। सत्र लॉग डिस्क पर रहते हैं, इसलिए फ़ाइल सिस्टम पहुँच को विश्वास-सीमा मानें।
</Warning>

मॉडल द्वारा सामान्य रूप से आरंभ की गई सत्र ट्रांसक्रिप्ट खोज
[`tools.sessions.visibility`](/hi/gateway/config-tools#toolssessions) का पालन करती है। डिफ़ॉल्ट
`tree` दृश्यता वर्तमान सत्र, उसके द्वारा आरंभ किए गए सत्रों और
परिवेशी समूह जागरूकता के माध्यम से देखे गए समान-एजेंट समूह सत्रों को उपलब्ध कराती है। अन्य
असंबंधित सत्रों के लिए `agent` दृश्यता आवश्यक है (या `all` केवल तब, जब क्रॉस-एजेंट
पुनःस्मरण भी आवश्यक हो और एजेंट-से-एजेंट नीति इसकी अनुमति देती हो)।

`rememberAcrossConversations` उस सेटिंग का दायरा नहीं बढ़ाता। यह
सीमित Active Memory पास के दौरान समान-एजेंट निजी
ट्रांसक्रिप्ट तक सीमित एक अलग, केवल-रनटाइम प्राधिकरण प्रदान करता है।

नीचे दिए गए उदाहरण इन सेटिंग्स को शीर्ष-स्तरीय `memory.search` के अंतर्गत रखते हैं। जब केवल एक
एजेंट को सत्र ट्रांसक्रिप्ट अनुक्रमित और खोजनी हों, तब आप प्रति-एजेंट `memory.search` ओवरराइड में
समतुल्य सेटिंग्स भी लागू कर सकते हैं।

समान-एजेंट Gateway-से-DM पुनःस्मरण के लिए:

<Tabs>
  <Tab title="अंतर्निहित बैकएंड">
    ```json5
    {
      memory: {
        search: {
          experimental: { sessionMemory: true },
          sources: ["memory", "sessions"],
        },
      },
      tools: {
        sessions: { visibility: "agent" },
      },
    }
    ```
  </Tab>
  <Tab title="QMD बैकएंड">
    ```json5
    {
      memory: {
        backend: "qmd",
        search: {
          experimental: { sessionMemory: true },
          sources: ["memory", "sessions"],
        },
        qmd: {
          sessions: { enabled: true },
        },
      },
      tools: {
        sessions: { visibility: "agent" },
      },
    }
    ```
  </Tab>
</Tabs>

QMD का उपयोग करते समय, केवल `sources: ["sessions"]` ट्रांसक्रिप्ट को QMD में निर्यात नहीं करता। साथ ही
`memory.qmd.sessions.enabled: true` भी सेट करें। उच्च-स्तरीय
`rememberAcrossConversations: true` सेटिंग इसका अपवाद है: यह उस एजेंट के लिए
आवश्यक QMD सत्र निर्यात को निहित करती है। निहित निर्यात निजी रहते हैं:
वे हमेशा डिफ़ॉल्ट आंतरिक निर्यात स्थान का उपयोग करते हैं (कॉन्फ़िगर किया गया
`sessions.exportDir` केवल स्पष्ट निर्यातों पर लागू होता है), उन्हें केवल
उस एजेंट के क्रॉस-वार्तालाप पुनःस्मरण के दौरान खोजा जाता है, और सामान्य `memory_get`
उन्हें पढ़ नहीं सकता। स्पष्ट
`memory.qmd.sessions.enabled: true` अपना मौजूदा व्यवहार बनाए रखता है और
निर्यातित ट्रांसक्रिप्ट को सामान्य मेमोरी कॉर्पस का हिस्सा बनाता है।

---

## SQLite वेक्टर त्वरण (sqlite-vec)

| कुंजी                          | प्रकार      | डिफ़ॉल्ट | विवरण                       |
| ---------------------------- | --------- | ------- | --------------------------------- |
| `store.vector.enabled`       | `boolean` | `true`  | वेक्टर क्वेरी के लिए sqlite-vec का उपयोग करें |
| `store.vector.extensionPath` | `string`  | बंडल किया हुआ | sqlite-vec पथ ओवरराइड करें          |

जब sqlite-vec उपलब्ध नहीं होता, OpenClaw स्वचालित रूप से प्रक्रिया-अंतर्गत कोसाइन समानता का उपयोग करता है।

---

## इंडेक्स भंडारण

अंतर्निहित मेमोरी इंडेक्स प्रत्येक एजेंट के OpenClaw SQLite डेटाबेस में
`agents/<agentId>/agent/openclaw-agent.sqlite` पर रहते हैं।

| कुंजी                   | प्रकार     | डिफ़ॉल्ट     | विवरण                               |
| --------------------- | -------- | ----------- | ----------------------------------------- |
| `store.fts.tokenizer` | `string` | `unicode61` | FTS5 टोकनाइज़र (`unicode61` या `trigram`) |

---

## QMD बैकएंड कॉन्फ़िगरेशन

सक्षम करने के लिए `memory.backend = "qmd"` सेट करें। सभी QMD सेटिंग्स `memory.qmd` के अंतर्गत रहती हैं:

| कुंजी                      | प्रकार      | डिफ़ॉल्ट  | विवरण                                                                           |
| ------------------------ | --------- | -------- | ------------------------------------------------------------------------------------- |
| `command`                | `string`  | `qmd`    | QMD निष्पादन योग्य फ़ाइल का पथ; जब सेवा `PATH` आपके शेल से भिन्न हो, तब निरपेक्ष पथ सेट करें |
| `searchMode`             | `string`  | `search` | खोज कमांड: `search`, `vsearch`, `query`                                          |
| `rerank`                 | `boolean` | --       | QMD पुनःरैंकिंग छोड़ने के लिए `searchMode: "query"` और QMD 2.1+ के साथ `false` पर सेट करें          |
| `includeDefaultMemory`   | `boolean` | `true`   | `MEMORY.md` + `memory/**/*.md` का स्वचालित अनुक्रमण                                             |
| `paths[]`                | `array`   | --       | अतिरिक्त पथ: `{ name, path, pattern? }`                                               |
| `sessions.enabled`       | `boolean` | `false`  | सत्र ट्रांसक्रिप्ट को QMD में निर्यात करें                                                   |
| `sessions.retentionDays` | `number`  | --       | ट्रांसक्रिप्ट प्रतिधारण                                                                  |
| `sessions.exportDir`     | `string`  | --       | निर्यात निर्देशिका                                                                      |

`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 बिल्ड प्रति-संग्रह संगतता पथ बनाए रखते हैं। समान-स्रोत का अर्थ है कि स्थायी मेमोरी संग्रहों (डिफ़ॉल्ट मेमोरी फ़ाइलें और कस्टम पथ) को एक साथ समूहित किया जाता है, जबकि सत्र ट्रांसक्रिप्ट संग्रह अलग समूह बने रहते हैं, ताकि स्रोत विविधीकरण में दोनों इनपुट बने रहें।

<Note>
QMD मॉडल ओवरराइड QMD की ओर रहते हैं, OpenClaw कॉन्फ़िगरेशन में नहीं। यदि आपको QMD के मॉडल वैश्विक रूप से ओवरराइड करने हों, तो Gateway रनटाइम वातावरण में `QMD_EMBED_MODEL`, `QMD_RERANK_MODEL`, और `QMD_GENERATE_MODEL` जैसे पर्यावरण चर सेट करें।
</Note>

<AccordionGroup>
  <Accordion title="सीमाएँ">
    | कुंजी                       | प्रकार     | डिफ़ॉल्ट | विवरण                |
    | --------------------------- | -------- | ------- | ------------------------------ |
    | `limits.maxResults`       | `number` | `4`     | अधिकतम खोज परिणाम         |
    | `limits.maxSnippetChars`  | `number` | `450`   | स्निपेट की लंबाई सीमित करें       |
    | `limits.maxInjectedChars` | `number` | `2200`  | अंतःक्षेपित वर्णों की कुल संख्या सीमित करें |
    | `limits.timeoutMs`        | `number` | `4000`  | `memory_search` सहित QMD-समर्थित खोज के दौरान QMD कमांड समय-सीमा; सेटअप, सिंक, अंतर्निहित फ़ॉलबैक और पूरक कार्य डिफ़ॉल्ट टूल समय-सीमा बनाए रखते हैं |
  </Accordion>
  <Accordion title="दायरा">
    नियंत्रित करता है कि कौन-से सत्र QMD खोज परिणाम प्राप्त कर सकते हैं। [`session.sendPolicy`](/hi/gateway/config-agents#session) के समान स्कीमा:

    ```json5
    {
      memory: {
        qmd: {
          scope: {
            default: "deny",
            rules: [{ action: "allow", match: { chatType: "direct" } }],
          },
        },
      },
    }
    ```

    प्रदत्त डिफ़ॉल्ट केवल DM/प्रत्यक्ष के लिए है, जो समूहों और अन्य चैनल प्रकारों को अस्वीकार करता है। `match.keyPrefix` सामान्यीकृत सत्र कुंजी से मेल खाता है; `match.rawKeyPrefix` `agent:<id>:` सहित अपरिष्कृत कुंजी से मेल खाता है।

  </Accordion>
  <Accordion title="उद्धरण">
    `memory.citations` सभी बैकएंड पर लागू होता है:

    | मान            | व्यवहार                                            |
    | ------------------ | ------------------------------------------------------ |
    | `auto` (डिफ़ॉल्ट) | स्निपेट में `Source: <path#line>` पादलेख शामिल करें    |
    | `on`             | पादलेख हमेशा शामिल करें                               |
    | `off`            | पादलेख हटाएँ (पथ फिर भी आंतरिक रूप से एजेंट को दिया जाता है) |

  </Accordion>
</AccordionGroup>

मेमोरी का पहली बार उपयोग होने पर QMD विलंबित रूप से आरंभ होता है; उसका एडाप्टर रीफ़्रेश और एम्बेडिंग अनुसूचियों का स्वामी होता है।

### पूर्ण QMD उदाहरण

```json5
{
  memory: {
    backend: "qmd",
    citations: "auto",
    qmd: {
      includeDefaultMemory: true,
      update: { interval: "5m", debounceMs: 15000 },
      limits: { maxResults: 4, timeoutMs: 4000 },
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
      paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],
    },
  },
}
```

---

## Dreaming

Dreaming को `plugins.entries.memory-core.config.dreaming` के अंतर्गत कॉन्फ़िगर किया जाता है, `memory.search` के अंतर्गत नहीं।

Dreaming एक अनुसूचित स्वीप के रूप में चलता है और आंतरिक हल्के/गहन/REM चरणों को कार्यान्वयन विवरण के रूप में उपयोग करता है।

अवधारणात्मक व्यवहार और स्लैश कमांड के लिए, [Dreaming](/hi/concepts/dreaming) देखें।

### उपयोगकर्ता सेटिंग्स

| कुंजी                                    | प्रकार      | डिफ़ॉल्ट       | विवरण                                                                                                                      |
| -------------------------------------- | --------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`                              | `boolean` | `false`       | Dreaming को पूर्णतः सक्षम या अक्षम करें                                                                                              |
| `frequency`                            | `string`  | `0 3 * * *`   | पूर्ण Dreaming स्वीप के लिए वैकल्पिक Cron आवृत्ति                                                                                |
| `model`                                | `string`  | डिफ़ॉल्ट मॉडल | वैकल्पिक Dream Diary सबएजेंट मॉडल ओवरराइड                                                                                     |
| `phases.deep.maxPromotedSnippetTokens` | `number`  | `160`         | `MEMORY.md` में उन्नत किए गए प्रत्येक अल्पकालिक पुनःस्मरण स्निपेट से रखे जाने वाले अनुमानित टोकन की अधिकतम संख्या; उद्गम मेटाडेटा दृश्यमान रहता है |

### उदाहरण

```json5
{
  plugins: {
    entries: {
      "memory-core": {
        subagent: {
          allowModelOverride: true,
          allowedModels: ["anthropic/claude-sonnet-4-6"],
        },
        config: {
          dreaming: {
            enabled: true,
            frequency: "0 3 * * *",
            model: "anthropic/claude-sonnet-4-6",
          },
        },
      },
    },
  },
}
```

<Note>
- Dreaming मशीन स्थिति को `memory/.dreams/` में लिखता है।
- Dreaming मानव-पठनीय वर्णनात्मक आउटपुट को `DREAMS.md` (या मौजूदा `dreams.md`) में लिखता है।
- `dreaming.model` मौजूदा Plugin सबएजेंट विश्वास गेट का उपयोग करता है; इसे सक्षम करने से पहले `plugins.entries.memory-core.subagent.allowModelOverride: true` सेट करें।
- कॉन्फ़िगर किया गया मॉडल उपलब्ध न होने पर Dream Diary सत्र के डिफ़ॉल्ट मॉडल के साथ एक बार पुनः प्रयास करता है। विश्वास या अनुमत-सूची विफलताएँ लॉग की जाती हैं और उनके लिए चुपचाप पुनः प्रयास नहीं किया जाता।
- हल्के/गहन/REM चरणों की नीति और सीमाएँ आंतरिक व्यवहार हैं, उपयोगकर्ता-दृश्य कॉन्फ़िगरेशन नहीं।

</Note>

## संबंधित

- [कॉन्फ़िगरेशन संदर्भ](/hi/gateway/configuration-reference)
- [मेमोरी अवलोकन](/hi/concepts/memory)
- [मेमोरी खोज](/hi/concepts/memory-search)
