---
read_when:
    - أنت تريد أن يعمل ترقية الذاكرة تلقائيًا
    - أنت تريد فهم ما الذي تفعله كل مرحلة من مراحل Dreaming
    - أنت تريد ضبط الدمج من دون تلويث `MEMORY.md`
summary: دمج الذاكرة في الخلفية مع مراحل خفيفة وعميقة وREM بالإضافة إلى Dream Diary
title: Dreaming
x-i18n:
    generated_at: "2026-04-23T07:23:42Z"
    model: gpt-5.4
    provider: openai
    source_hash: 1a44c7568992e60d249d7e424a585318401f678767b9feb7d75c830b01de1cf6
    source_path: concepts/dreaming.md
    workflow: 15
---

# Dreaming

Dreaming هو نظام دمج الذاكرة في الخلفية داخل `memory-core`.
وهو يساعد OpenClaw على نقل الإشارات القوية قصيرة الأمد إلى ذاكرة دائمة مع
الحفاظ على العملية قابلة للتفسير والمراجعة.

يكون Dreaming **اختياريًا** وهو معطّل افتراضيًا.

## ما الذي يكتبه Dreaming

يحتفظ Dreaming بنوعين من المخرجات:

- **حالة الآلة** في `memory/.dreams/` (مخزن الاستدعاء، وإشارات المراحل، ونقاط تحقق الإدخال، والأقفال).
- **مخرجات قابلة للقراءة البشرية** في `DREAMS.md` (أو `dreams.md` الموجود) وملفات تقارير المراحل الاختيارية ضمن `memory/dreaming/<phase>/YYYY-MM-DD.md`.

تظل الترقية طويلة الأمد تكتب فقط إلى `MEMORY.md`.

## نموذج المراحل

يستخدم Dreaming ثلاث مراحل تعاونية:

| المرحلة | الغرض | الكتابة الدائمة |
| ----- | ----------------------------------------- | ----------------- |
| Light | فرز المواد الحديثة قصيرة الأمد وتجهيزها | لا |
| Deep  | تسجيل المرشحين الدائمين وترقيتهم | نعم (`MEMORY.md`) |
| REM   | التأمل في السمات والأفكار المتكررة | لا |

هذه المراحل تفاصيل تنفيذ داخلية، وليست "أوضاعًا" منفصلة يضبطها المستخدم.

### مرحلة Light

تستوعب مرحلة Light إشارات الذاكرة اليومية الحديثة وآثار الاستدعاء، وتزيل التكرار منها،
وتجهّز الأسطر المرشحة.

- تقرأ من حالة الاستدعاء قصيرة الأمد، وملفات الذاكرة اليومية الحديثة، ونصوص الجلسات المنقّحة عند توفرها.
- تكتب كتلة `## Light Sleep` مُدارة عندما يتضمن التخزين مخرجات مضمّنة.
- تسجل إشارات تعزيز لاستخدامها لاحقًا في ترتيب Deep.
- لا تكتب أبدًا إلى `MEMORY.md`.

### مرحلة Deep

تقرر مرحلة Deep ما الذي يصبح ذاكرة طويلة الأمد.

- ترتب المرشحين باستخدام تسجيل موزون وبوابات عتبات.
- تتطلب اجتياز `minScore` و`minRecallCount` و`minUniqueQueries`.
- تعيد ترطيب المقاطع من الملفات اليومية الحية قبل الكتابة، لذا يتم تخطي المقاطع القديمة/المحذوفة.
- تُلحق الإدخالات المُرقّاة إلى `MEMORY.md`.
- تكتب ملخص `## Deep Sleep` إلى `DREAMS.md` وتكتب اختياريًا إلى `memory/dreaming/deep/YYYY-MM-DD.md`.

### مرحلة REM

تستخرج مرحلة REM الأنماط والإشارات التأملية.

- تبني ملخصات للسمات والتأملات من الآثار الحديثة قصيرة الأمد.
- تكتب كتلة `## REM Sleep` مُدارة عندما يتضمن التخزين مخرجات مضمّنة.
- تسجل إشارات تعزيز REM المستخدمة في ترتيب Deep.
- لا تكتب أبدًا إلى `MEMORY.md`.

## استيعاب نصوص الجلسات

يمكن لـ Dreaming استيعاب نصوص الجلسات المنقّحة ضمن مجموعة Dreaming. وعندما
تتوفر النصوص، تُغذّى إلى مرحلة Light إلى جانب إشارات الذاكرة اليومية وآثار
الاستدعاء. يتم تنقيح المحتوى الشخصي والحساس قبل الاستيعاب.

## Dream Diary

يحتفظ Dreaming أيضًا بـ **Dream Diary** سردي في `DREAMS.md`.
بعد أن يتوفر لكل مرحلة مقدار كافٍ من المواد، يشغّل `memory-core` دور وكيل فرعي
خلفي على أساس أفضل جهد (باستخدام نموذج بيئة التشغيل الافتراضي) ويُلحق إدخال
يوميات قصيرًا.

هذه اليوميات مخصصة للقراءة البشرية في واجهة Dreams، وليست مصدرًا للترقية.
تُستبعد عناصر اليوميات/التقارير التي ينشئها Dreaming من الترقية قصيرة
الأمد. ولا تكون مؤهلة للترقية إلى `MEMORY.md` إلا المقاطع الذاكرية المستندة
إلى أساس.

توجد أيضًا مسار تعبئة تاريخية رجعية مستندة إلى أساس لأعمال المراجعة والاسترداد:

- يعرض `memory rem-harness --path ... --grounded` مخرجات يوميات مستندة إلى أساس من ملاحظات `YYYY-MM-DD.md` التاريخية.
- يكتب `memory rem-backfill --path ...` إدخالات يوميات مستندة إلى أساس وقابلة للعكس إلى `DREAMS.md`.
- يقوم `memory rem-backfill --path ... --stage-short-term` بتجهيز مرشحين دائمين مستندين إلى أساس في مخزن الأدلة قصيرة الأمد نفسه الذي تستخدمه بالفعل مرحلة Deep العادية.
- يزيل `memory rem-backfill --rollback` و`--rollback-short-term` عناصر التعبئة الرجعية المُجهّزة تلك من دون المساس بإدخالات اليوميات العادية أو الاستدعاء الحي قصير الأمد.

تعرض واجهة Control التدفق نفسه الخاص بالتعبئة الرجعية/إعادة التعيين لليوميات حتى تتمكن من فحص
النتائج في مشهد Dreams قبل أن تقرر ما إذا كان المرشحون المستندون إلى أساس
يستحقون الترقية. كما يعرض المشهد مسارًا مستندًا إلى أساس مميزًا حتى تتمكن من رؤية
أي الإدخالات قصيرة الأمد المُجهّزة جاءت من إعادة تشغيل تاريخية، وأي العناصر
المرقّاة كانت بقيادة grounded، ومسح الإدخالات المُجهّزة المستندة إلى أساس فقط من
دون المساس بالحالة الحية العادية قصيرة الأمد.

## إشارات ترتيب Deep

يستخدم ترتيب Deep ست إشارات أساسية موزونة بالإضافة إلى تعزيز المراحل:

| الإشارة | الوزن | الوصف |
| ------------------- | ------ | ------------------------------------------------- |
| Frequency | 0.24 | عدد إشارات المدى القصير التي راكمها الإدخال |
| Relevance | 0.30 | متوسط جودة الاسترجاع للإدخال |
| Query diversity | 0.15 | سياقات الاستعلام/اليوم المميزة التي أظهرته |
| Recency | 0.15 | درجة حداثة متناقصة زمنيًا |
| Consolidation | 0.10 | قوة التكرار عبر أيام متعددة |
| Conceptual richness | 0.06 | كثافة وسوم المفاهيم من المقطع/المسار |

تضيف إصابات مرحلتي Light وREM تعزيزًا صغيرًا متناقصًا زمنيًا
من `memory/.dreams/phase-signals.json`.

## الجدولة

عند التفعيل، يدير `memory-core` تلقائيًا مهمة Cron واحدة لاجتياح Dreaming
كامل. يشغّل كل اجتياح المراحل بالترتيب: light -> REM -> deep.

سلوك الوتيرة الافتراضية:

| الإعداد | الافتراضي |
| -------------------- | ----------- |
| `dreaming.frequency` | `0 3 * * *` |

## البدء السريع

فعّل Dreaming:

```json
{
  "plugins": {
    "entries": {
      "memory-core": {
        "config": {
          "dreaming": {
            "enabled": true
          }
        }
      }
    }
  }
}
```

فعّل Dreaming مع وتيرة اجتياح مخصصة:

```json
{
  "plugins": {
    "entries": {
      "memory-core": {
        "config": {
          "dreaming": {
            "enabled": true,
            "timezone": "America/Los_Angeles",
            "frequency": "0 */6 * * *"
          }
        }
      }
    }
  }
}
```

## أمر الشرطة المائلة

```
/dreaming status
/dreaming on
/dreaming off
/dreaming help
```

## سير عمل CLI

استخدم ترقية CLI للمعاينة أو التطبيق اليدوي:

```bash
openclaw memory promote
openclaw memory promote --apply
openclaw memory promote --limit 5
openclaw memory status --deep
```

يستخدم `memory promote` اليدوي عتبات مرحلة Deep افتراضيًا ما لم يتم تجاوزها
بعلامات CLI.

اشرح لماذا سيُرقّى مرشح معين أو لن يُرقّى:

```bash
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
```

عاين تأملات REM، والحقائق المرشحة، ومخرجات ترقية Deep من دون
كتابة أي شيء:

```bash
openclaw memory rem-harness
openclaw memory rem-harness --json
```

## القيم الافتراضية الرئيسية

توجد جميع الإعدادات ضمن `plugins.entries.memory-core.config.dreaming`.

| المفتاح | الافتراضي |
| ----------- | ----------- |
| `enabled` | `false` |
| `frequency` | `0 3 * * *` |

سياسة المراحل، والعتبات، وسلوك التخزين هي تفاصيل تنفيذ
داخلية (وليست إعدادات موجهة للمستخدم).

راجع [مرجع تكوين الذاكرة](/ar/reference/memory-config#dreaming)
للحصول على القائمة الكاملة للمفاتيح.

## واجهة Dreams

عند التفعيل، تعرض علامة تبويب **Dreams** في Gateway ما يلي:

- حالة تفعيل Dreaming الحالية
- حالة على مستوى المرحلة ووجود الاجتياح المُدار
- أعداد العناصر قصيرة الأمد، والمستندة إلى أساس، والإشارات، والعناصر المُرقّاة اليوم
- توقيت التشغيل المجدول التالي
- مسار مشهد grounded مميز لإدخالات إعادة التشغيل التاريخية المُجهّزة
- قارئ Dream Diary قابل للتوسيع ومدعوم من `doctor.memory.dreamDiary`

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

### Dreaming لا يعمل أبدًا (تعرض الحالة blocked)

تعتمد مهمة Cron الخاصة بـ Dreaming المُدار على Heartbeat الخاص بالوكيل الافتراضي. إذا لم يكن Heartbeat يعمل لذلك الوكيل، فإن مهمة Cron تضع حدث نظام في قائمة الانتظار لا يستهلكه أحد، ولا يعمل Dreaming بصمت. سيعرض كل من `openclaw memory status` و`/dreaming status` القيمة `blocked` في هذه الحالة ويذكران الوكيل الذي يشكل Heartbeat الخاص به العائق.

يوجد سببان شائعان:

- يعلن وكيل آخر عن كتلة `heartbeat:` صريحة. عندما يحتوي أي إدخال في `agents.list` على كتلة `heartbeat` خاصة به، فإن Heartbeat يعمل فقط لتلك الوكلاء — وتتوقف القيم الافتراضية عن التطبيق على الجميع، لذلك قد يصمت الوكيل الافتراضي. انقل إعدادات Heartbeat إلى `agents.defaults.heartbeat`، أو أضف كتلة `heartbeat` صريحة على الوكيل الافتراضي. راجع [النطاق والأولوية](/ar/gateway/heartbeat#scope-and-precedence).
- تكون قيمة `heartbeat.every` مساوية لـ `0` أو فارغة أو غير قابلة للتحليل. عندها لا تملك مهمة Cron أي فاصل زمني للجدولة عليه، لذلك يكون Heartbeat معطّلًا فعليًا. اضبط `every` على مدة موجبة مثل `30m`. راجع [القيم الافتراضية](/ar/gateway/heartbeat#defaults).

## ذو صلة

- [Heartbeat](/ar/gateway/heartbeat)
- [الذاكرة](/ar/concepts/memory)
- [بحث الذاكرة](/ar/concepts/memory-search)
- [CLI الذاكرة](/ar/cli/memory)
- [مرجع تكوين الذاكرة](/ar/reference/memory-config)
