Sessions and memory

Dreaming

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

ما يكتبه Dreaming

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

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

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

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

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

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

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

المرحلة الخفيفة

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

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

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

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

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

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

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

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

يوميات الأحلام

يحتفظ Dreaming أيضًا بسرد يوميات الأحلام في DREAMS.md. بعد أن تحتوي كل مرحلة على مادة كافية، يشغّل memory-core دورة subagent في الخلفية على أساس أفضل جهد ويلحق إدخال يوميات قصيرًا. يستخدم نموذج وقت التشغيل الافتراضي ما لم يتم تكوين dreaming.model. إذا لم يكن النموذج المكوّن متاحًا، تعيد يوميات الأحلام المحاولة مرة واحدة باستخدام نموذج الجلسة الافتراضي.

توجد أيضًا مسار ملء خلفي تاريخي مؤسَّس لأعمال المراجعة والاسترداد:

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

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

إشارات الترتيب العميق

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

الإشارة الوزن الوصف
التكرار 0.24 عدد الإشارات القصيرة الأمد التي راكمها الإدخال
الصلة 0.30 متوسط جودة الاسترجاع للإدخال
تنوع الاستعلامات 0.15 سياقات الاستعلام/اليوم المميزة التي أظهرته
الحداثة 0.15 درجة حداثة متناقصة زمنيًا
الدمج 0.10 قوة التكرار عبر عدة أيام
الثراء المفاهيمي 0.06 كثافة وسوم المفاهيم من المقطع/المسار

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

يمكن وضع نتائج التجربة الظلية فوق تلك الدرجة الأساسية كإشارة مراجعة قبل أي كتابة متينة. تمنح التجربة المفيدة المرشح دفعة صغيرة محدودة، وتبقي التجربة المحايدة الأمر مؤجلًا، وتعلّم التجربة الضارة المرشح كمرفوض لذلك المرور التقييمي. لا تزال هذه الإشارة تقريرية فقط: يمكنها تغيير ترتيب المرشحين أو بيانات المراجعة الوصفية، لكنها لا تكتب إلى MEMORY.md ولا ترقّي المرشح بذاتها.

تغطية تقرير تجربة الظل في QA

يتضمن QA Lab سيناريو تقريريًا فقط لاستكشاف كيف يمكن لتجربة ظل مستقبلية في Dreaming مراجعة ذاكرة مرشحة قبل الترقية. يطلب السيناريو من agent مقارنة إجابة أساسية بإجابة يمكنها استخدام الذاكرة المرشحة، ثم كتابة تقرير محلي يتضمن حكمًا وسببًا وعلامات مخاطر.

هذه التغطية محددة عمدًا بـ QA. تتحقق من أن أثر التقرير يبقى منفصلًا عن MEMORY.md وأن agent لا يدّعي أن المرشح تمت ترقيته. لا تضيف سلوك تجربة ظل في الإنتاج ولا تغير محرك الترقية في المرحلة العميقة.

يحافظ مشغّل تجربة الظل في memory-core على عقد التقرير فقط نفسه لمسارات الكود التي تحتاج إلى أثر مستقر. يقبل المرشح، وموجّه التجربة، ونتيجة الأساس، ونتيجة المرشح، والحكم، والسبب، وعلامات المخاطر، ومراجع الأدلة، ثم يكتب تقريرًا يتضمن promotion action: report-only. تُطابق الأحكام المفيدة توصية promote، وتُطابق الأحكام المحايدة defer، وتُطابق الأحكام الضارة reject؛ ولا تكتب أي من هذه التوصيات إلى MEMORY.md أو تطبق ترقية المرحلة العميقة.

الجدولة

عند التمكين، يدير memory-core تلقائيًا مهمة cron واحدة لمسح Dreaming كامل. يشغّل كل مسح المراحل بالترتيب: خفيفة → REM → عميقة.

يتضمن المسح مساحة عمل وقت التشغيل الأساسية وأي مساحات عمل agent مكوّنة، مع إزالة التكرار حسب المسار، بحيث لا يستبعد تشعب مساحة عمل subagent ملف DREAMS.md وحالة الذاكرة الخاصين بالـ agent الرئيسي.

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

الإعداد الافتراضي
dreaming.frequency 0 3 * * *
dreaming.model النموذج الافتراضي

البدء السريع

تمكين Dreaming

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

وتيرة مسح مخصصة

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

أمر Slash

Code
/dreaming status/dreaming on/dreaming off/dreaming help

يغير /dreaming on و/dreaming off التكوين على مستوى Gateway. يجب أن يكون مستدعو القناة مالكين، ويجب أن يمتلك عملاء Gateway الصلاحية operator.admin. يبقى /dreaming status و/dreaming help للقراءة فقط.

سير عمل CLI

معاينة الترقية / تطبيقها

bash
openclaw memory promoteopenclaw memory promote --applyopenclaw memory promote --limit 5openclaw memory status --deep

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

شرح الترقية

اشرح لماذا قد تتم أو لا تتم ترقية مرشح محدد:

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

معاينة حزام REM

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

bash
openclaw memory rem-harnessopenclaw memory rem-harness --json

الإعدادات الافتراضية الرئيسية

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

enabledbooleandefault: false

فعّل أو عطّل مسح Dreaming.

frequencystringdefault: 0 3 * * *

وتيرة Cron لمسح Dreaming الكامل.

modelstring

تجاوز اختياري لنموذج subagent في يوميات الأحلام. استخدم قيمة provider/model قانونية عند تعيين قائمة سماح allowedModels لـ subagent أيضًا.

phases.deep.maxPromotedSnippetTokensnumberdefault: 160

الحد الأقصى المقدر لعدد الرموز المحتفظ بها من كل مقطع استدعاء قصير الأمد تتم ترقيته إلى MEMORY.md. يظل مصدر الترتيب مرئيًا.

واجهة مستخدم Dreams

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

  • حالة تمكين Dreaming الحالية
  • حالة على مستوى المرحلة ووجود المسح المُدار
  • أعداد القصير الأمد، والمؤسَّس، والإشارات، والمروّج اليوم
  • توقيت التشغيل المجدول التالي
  • مسار مشهد مؤسَّس مميز لإدخالات إعادة التشغيل التاريخية المجهزة
  • قارئ يوميات أحلام قابل للتوسيع مدعوم بـ doctor.memory.dreamDiary

لا يعمل Dreaming أبدًا: تعرض الحالة أنه محظور

إذا أبلغ openclaw memory status عن Dreaming status: blocked، فهذا يعني أن Cron المُدار موجود لكن Heartbeat الافتراضي للـ agent لا يعمل. تحقق من تمكين Heartbeat للـ agent الافتراضي وأن هدفه ليس none، ثم شغّل openclaw memory status --deep مرة أخرى بعد فترة Heartbeat التالية.

ذات صلة

Was this useful?
On this page

On this page