---
read_when:
    - تريد إعداد QMD كخلفية الذاكرة الخاصة بك
    - تريد ميزات ذاكرة متقدمة مثل إعادة الترتيب أو مسارات مفهرسة إضافية
summary: خدمة جانبية للبحث تعتمد نهج local-first مع BM25، والمتجهات، وإعادة الترتيب، وتوسيع الاستعلام
title: محرك ذاكرة QMD
x-i18n:
    generated_at: "2026-04-25T13:45:21Z"
    model: gpt-5.4
    provider: openai
    source_hash: 89e6a5e0c8f5fb8507dffd08975fec0ca6fda03883079a27c2a28a1d09e95368
    source_path: concepts/memory-qmd.md
    workflow: 15
---

[QMD](https://github.com/tobi/qmd) هو خدمة جانبية للبحث تعتمد نهج local-first وتعمل
إلى جانب OpenClaw. وهو يجمع بين BM25، والبحث المتجهي، وإعادة الترتيب في ملف
تنفيذي واحد، ويمكنه فهرسة محتوى يتجاوز ملفات ذاكرة مساحة العمل الخاصة بك.

## ما الذي يضيفه فوق المحرك المدمج

- **إعادة الترتيب وتوسيع الاستعلام** لتحسين الاسترجاع.
- **فهرسة أدلة إضافية** -- مثل مستندات المشروع، وملاحظات الفريق، وأي شيء على القرص.
- **فهرسة نصوص الجلسات** -- لاسترجاع المحادثات السابقة.
- **محلي بالكامل** -- يعمل مع حزمة runtime الاختيارية node-llama-cpp ويقوم
  بتنزيل نماذج GGUF تلقائيًا.
- **Fallback تلقائي** -- إذا لم يكن QMD متاحًا، يعود OpenClaw إلى
  المحرك المدمج بسلاسة.

## البدء

### المتطلبات المسبقة

- ثبّت QMD: ‏`npm install -g @tobilu/qmd` أو `bun install -g @tobilu/qmd`
- إصدار SQLite يسمح بالامتدادات (`brew install sqlite` على macOS).
- يجب أن يكون QMD موجودًا على `PATH` الخاص بـ gateway.
- يعمل macOS وLinux مباشرة. ويحظى Windows بأفضل دعم عبر WSL2.

### التمكين

```json5
{
  memory: {
    backend: "qmd",
  },
}
```

ينشئ OpenClaw دليل QMD مستقلًا تحت
`~/.openclaw/agents/<agentId>/qmd/` ويدير دورة حياة الخدمة الجانبية
تلقائيًا -- حيث تتم إدارة المجموعات، والتحديثات، وعمليات embedding نيابةً عنك.
ويفضّل أشكال مجموعة QMD الحالية وأشكال استعلام MCP الحالية، لكنه لا يزال يعود إلى
أعلام المجموعات القديمة `--mask` وأسماء أدوات MCP الأقدم عند الحاجة.
كما تؤدي المطابقة عند وقت الإقلاع أيضًا إلى إعادة إنشاء المجموعات المدارة القديمة وفق
أنماطها الأساسية عندما تكون مجموعة QMD أقدم بالاسم نفسه لا تزال
موجودة.

## كيف تعمل الخدمة الجانبية

- ينشئ OpenClaw مجموعات من ملفات ذاكرة مساحة العمل الخاصة بك وأي
  `memory.qmd.paths` مهيأة، ثم يشغّل `qmd update` و`qmd embed` عند الإقلاع
  وبشكل دوري (الافتراضي كل 5 دقائق).
- تتعقب مجموعة مساحة العمل الافتراضية `MEMORY.md` بالإضافة إلى شجرة `memory/`.
  ولا تتم فهرسة `memory.md` بالأحرف الصغيرة كملف ذاكرة جذري.
- يعمل تحديث الإقلاع في الخلفية حتى لا يتعطل بدء الدردشة.
- تستخدم عمليات البحث `searchMode` المهيأ (الافتراضي: `search`؛ ويدعم أيضًا
  `vsearch` و`query`). وإذا فشل وضع ما، يعيد OpenClaw المحاولة باستخدام `qmd query`.
- إذا فشل QMD بالكامل، يعود OpenClaw إلى محرك SQLite المدمج.

<Info>
قد يكون البحث الأول بطيئًا -- إذ يقوم QMD بتنزيل نماذج GGUF تلقائيًا (~2 GB) من أجل
إعادة الترتيب وتوسيع الاستعلام عند أول تشغيل لـ `qmd query`.
</Info>

## تجاوزات النموذج

تمر متغيرات بيئة نموذج QMD كما هي من عملية gateway،
بحيث يمكنك ضبط QMD على مستوى عام دون إضافة تهيئة جديدة إلى OpenClaw:

```bash
export QMD_EMBED_MODEL="hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf"
export QMD_RERANK_MODEL="/absolute/path/to/reranker.gguf"
export QMD_GENERATE_MODEL="/absolute/path/to/generator.gguf"
```

بعد تغيير نموذج embedding، أعد تشغيل embeddings حتى يطابق الفهرس
الفضاء المتجهي الجديد.

## فهرسة مسارات إضافية

وجّه QMD إلى أدلة إضافية لجعلها قابلة للبحث:

```json5
{
  memory: {
    backend: "qmd",
    qmd: {
      paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],
    },
  },
}
```

تظهر المقاطع من المسارات الإضافية بالشكل `qmd/<collection>/<relative-path>` في
نتائج البحث. ويفهم `memory_get` هذه البادئة ويقرأ من جذر
المجموعة الصحيح.

## فهرسة نصوص الجلسات

فعّل فهرسة الجلسات لاسترجاع المحادثات السابقة:

```json5
{
  memory: {
    backend: "qmd",
    qmd: {
      sessions: { enabled: true },
    },
  },
}
```

يتم تصدير النصوص كأدوار User/Assistant منقحة إلى مجموعة QMD مخصصة
تحت `~/.openclaw/agents/<id>/qmd/sessions/`.

## نطاق البحث

افتراضيًا، تظهر نتائج بحث QMD في الجلسات المباشرة وجلسات القنوات
(وليس في المجموعات). غيّر هذا عبر `memory.qmd.scope`:

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

عندما يمنع النطاق عملية بحث، يسجل OpenClaw تحذيرًا مع القناة المستنتجة ونوع
الدردشة، بحيث يسهل تصحيح النتائج الفارغة.

## الاستشهادات

عندما تكون `memory.citations` على `auto` أو `on`، تتضمن مقاطع البحث
تذييلًا بالشكل `Source: <path#line>`. اضبط `memory.citations = "off"` لحذف التذييل
مع الاستمرار في تمرير المسار إلى الوكيل داخليًا.

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

اختر QMD عندما تحتاج إلى:

- إعادة ترتيب للحصول على نتائج أعلى جودة.
- البحث في مستندات المشروع أو الملاحظات خارج مساحة العمل.
- استرجاع محادثات الجلسات السابقة.
- بحث محلي بالكامل من دون مفاتيح API.

أما في الإعدادات الأبسط، فيعمل [المحرك المدمج](/ar/concepts/memory-builtin) جيدًا
من دون أي تبعيات إضافية.

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

**لم يتم العثور على QMD؟** تأكد من أن الملف التنفيذي موجود على `PATH` الخاص بـ gateway. إذا كان OpenClaw
يعمل كخدمة، فأنشئ symlink:
`sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd`.

**البحث الأول بطيء جدًا؟** يقوم QMD بتنزيل نماذج GGUF عند أول استخدام. قم بالتهيئة المسبقة
باستخدام `qmd query "test"` مع أدلة XDG نفسها التي يستخدمها OpenClaw.

**انتهت مهلة البحث؟** زد `memory.qmd.limits.timeoutMs` (الافتراضي: 4000ms).
اضبطها على `120000` للأجهزة الأبطأ.

**نتائج فارغة في دردشات المجموعات؟** تحقق من `memory.qmd.scope` -- فالافتراضي
يسمح فقط بالجلسات المباشرة وجلسات القنوات.

**أصبح البحث في ذاكرة الجذر واسعًا جدًا فجأة؟** أعد تشغيل gateway أو انتظر
حتى المطابقة التالية عند بدء التشغيل. يعيد OpenClaw إنشاء المجموعات المدارة القديمة
وفق أنماط `MEMORY.md` و`memory/` الأساسية عندما يكتشف تعارضًا بالاسم نفسه.

**مستودعات مؤقتة مرئية لمساحة العمل تتسبب في `ENAMETOOLONG` أو فهرسة معطلة؟**
يتبع اجتياز QMD حاليًا سلوك ماسح QMD الأساسي بدلًا من
قواعد symlink المدمجة في OpenClaw. أبقِ نسخ monorepo المؤقتة تحت
أدلة مخفية مثل `.tmp/` أو خارج جذور QMD المفهرسة إلى أن يوفّر QMD
اجتيازًا آمنًا ضد الدورات أو عناصر تحكم صريحة للاستبعاد.

## التهيئة

للحصول على سطح التهيئة الكامل (`memory.qmd.*`)، وأوضاع البحث، وفواصل
التحديث، وقواعد النطاق، وكل خيارات الضبط الأخرى، راجع
[مرجع تهيئة الذاكرة](/ar/reference/memory-config).

## ذو صلة

- [نظرة عامة على الذاكرة](/ar/concepts/memory)
- [محرك الذاكرة المدمج](/ar/concepts/memory-builtin)
- [ذاكرة Honcho](/ar/concepts/memory-honcho)
