---
read_when:
    - تريد فهم الواجهة الخلفية الافتراضية للذاكرة
    - تريد تهيئة موفّري التضمينات أو البحث الهجين
summary: الخلفية الافتراضية للذاكرة المستندة إلى SQLite مع البحث بالكلمات المفتاحية والمتجهات والبحث الهجين
title: محرك الذاكرة المدمج
x-i18n:
    generated_at: "2026-05-03T21:30:45Z"
    model: gpt-5.5
    provider: openai
    source_hash: 72f5d1fee02bff0962bd012575b62846c1f11c030fd1174fdb2af1e81909f52a
    source_path: concepts/memory-builtin.md
    workflow: 16
---

المحرّك المضمّن هو الواجهة الخلفية الافتراضية للذاكرة. يخزّن فهرس الذاكرة في
قاعدة بيانات SQLite لكل وكيل، ولا يحتاج إلى تبعيات إضافية للبدء.

## ما يوفّره

- **البحث بالكلمات المفتاحية** عبر فهرسة النص الكامل FTS5 (تسجيل BM25).
- **البحث المتجهي** عبر التضمينات من أي مزوّد مدعوم.
- **البحث الهجين** الذي يجمع بينهما للحصول على أفضل النتائج.
- **دعم CJK** عبر تجزئة الثلاثيات للصينية واليابانية والكورية.
- **تسريع sqlite-vec** لاستعلامات المتجهات داخل قاعدة البيانات (اختياري).

## البدء

إذا كان لديك مفتاح API لـ OpenAI أو Gemini أو Voyage أو Mistral أو DeepInfra، فإن المحرّك المضمّن
يكتشفه تلقائياً ويفعّل البحث المتجهي. لا يلزم أي إعداد.

لتعيين مزوّد صراحةً:

```json5
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
      },
    },
  },
}
```

من دون مزوّد تضمينات، يتوفر البحث بالكلمات المفتاحية فقط.

لفرض مزوّد التضمينات المحلي المضمّن، ثبّت حزمة وقت التشغيل الاختيارية
`node-llama-cpp` بجانب OpenClaw، ثم وجّه `local.modelPath`
إلى ملف GGUF:

```json5
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        fallback: "none",
        local: {
          modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
        },
      },
    },
  },
}
```

## مزوّدو التضمينات المدعومون

| المزوّد   | المعرّف     | يُكتشف تلقائياً | ملاحظات                            |
| --------- | ----------- | ------------- | ----------------------------------- |
| OpenAI    | `openai`    | نعم           | الافتراضي: `text-embedding-3-small` |
| Gemini    | `gemini`    | نعم           | يدعم الوسائط المتعددة (الصورة + الصوت) |
| Voyage    | `voyage`    | نعم           |                                     |
| Mistral   | `mistral`   | نعم           |                                     |
| DeepInfra | `deepinfra` | نعم           | الافتراضي: `BAAI/bge-m3`            |
| Ollama    | `ollama`    | لا            | محلي، عيّنه صراحةً                  |
| محلي      | `local`     | نعم (أولاً)   | وقت تشغيل `node-llama-cpp` اختياري  |

يختار الاكتشاف التلقائي أول مزوّد يمكن حلّ مفتاح API الخاص به، وفق
الترتيب المعروض. عيّن `memorySearch.provider` للتجاوز.

## كيفية عمل الفهرسة

يفهرس OpenClaw ملفات `MEMORY.md` و`memory/*.md` إلى مقاطع (~400 رمز مع
تداخل 80 رمزاً) ويخزنها في قاعدة بيانات SQLite لكل وكيل.

- **موقع الفهرس:** `~/.openclaw/memory/<agentId>.sqlite`
- **صيانة التخزين:** تُقيَّد ملفات SQLite WAL الجانبية بنقاط تحقق دورية
  وعند الإيقاف.
- **مراقبة الملفات:** تؤدي التغييرات في ملفات الذاكرة إلى إعادة فهرسة مؤجلة (1.5 ثانية).
- **إعادة الفهرسة التلقائية:** عند تغيّر مزوّد التضمينات أو النموذج أو إعدادات
  التقسيم إلى مقاطع، يُعاد بناء الفهرس بالكامل تلقائياً.
- **إعادة الفهرسة عند الطلب:** `openclaw memory index --force`

<Info>
يمكنك أيضاً فهرسة ملفات Markdown خارج مساحة العمل باستخدام
`memorySearch.extraPaths`. راجع
[مرجع الإعدادات](/ar/reference/memory-config#additional-memory-paths).
</Info>

## متى تستخدمه

المحرّك المضمّن هو الخيار المناسب لمعظم المستخدمين:

- يعمل مباشرةً بلا تبعيات إضافية.
- يتعامل جيداً مع البحث بالكلمات المفتاحية والبحث المتجهي.
- يدعم جميع مزوّدي التضمينات.
- يجمع البحث الهجين أفضل ما في نهجي الاسترجاع.

فكّر في الانتقال إلى [QMD](/ar/concepts/memory-qmd) إذا كنت تحتاج إلى إعادة الترتيب أو
توسيع الاستعلام، أو تريد فهرسة أدلة خارج مساحة العمل.

فكّر في [Honcho](/ar/concepts/memory-honcho) إذا كنت تريد ذاكرة عبر الجلسات مع
نمذجة تلقائية للمستخدم.

## استكشاف الأخطاء وإصلاحها

**هل بحث الذاكرة معطّل؟** تحقق من `openclaw memory status`. إذا لم يُكتشف أي مزوّد،
فعيّن واحداً صراحةً أو أضف مفتاح API.

**لم يُكتشف المزوّد المحلي؟** تأكد من وجود المسار المحلي وشغّل:

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

تستخدم أوامر CLI المستقلة وGateway معرّف المزوّد نفسه `local`.
إذا عُيّن المزوّد إلى `auto`، فلن تُؤخذ التضمينات المحلية في الاعتبار أولاً إلا
عندما يشير `memorySearch.local.modelPath` إلى ملف محلي موجود.

**نتائج قديمة؟** شغّل `openclaw memory index --force` لإعادة البناء. قد تفوّت المراقبة
التغييرات في حالات طرفية نادرة.

**لا يتم تحميل sqlite-vec؟** يعود OpenClaw تلقائياً إلى تشابه جيب التمام داخل العملية.
يعرض `openclaw memory status --deep` مخزن المتجهات المحلي منفصلاً عن مزوّد التضمينات،
لذلك يشير `Vector store: unavailable` إلى تحميل sqlite-vec بينما يشير
`Embeddings: unavailable` إلى جاهزية المزوّد/المصادقة أو النموذج. تحقق من السجلات لمعرفة خطأ التحميل المحدد.

## الإعدادات

لإعداد مزوّد التضمينات، وضبط البحث الهجين (الأوزان، MMR، التضاؤل الزمني)،
وفهرسة الدفعات، والذاكرة متعددة الوسائط، وsqlite-vec، والمسارات الإضافية، وكل
مفاتيح الإعدادات الأخرى، راجع
[مرجع إعدادات الذاكرة](/ar/reference/memory-config).

## ذو صلة

- [نظرة عامة على الذاكرة](/ar/concepts/memory)
- [بحث الذاكرة](/ar/concepts/memory-search)
- [Active Memory](/ar/concepts/active-memory)
