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 از سه فاز همکار استفاده میکند:
| فاز | هدف | نوشتن پایدار |
|---|---|---|
| Light | مرتبسازی و آمادهسازی مواد کوتاهمدت اخیر | خیر |
| Deep | امتیازدهی و ارتقای نامزدهای پایدار | بله (MEMORY.md) |
| REM | تأمل دربارهٔ تمها و ایدههای تکرارشونده | خیر |
این فازها جزئیات پیادهسازی داخلی هستند، نه «حالتهای» جداگانهای که کاربر پیکربندی میکند.
Light phase
فاز Light سیگنالهای حافظهٔ روزانهٔ اخیر و ردپاهای یادآوری را دریافت میکند، موارد تکراری را حذف میکند و خطهای نامزد را آماده میکند.
- از وضعیت یادآوری کوتاهمدت، فایلهای حافظهٔ روزانهٔ اخیر و رونوشتهای نشست سانسورشده، در صورت وجود، میخواند.
- وقتی ذخیرهسازی شامل خروجی درونخطی باشد، یک بلوک مدیریتشدهٔ
## Light Sleepمینویسد. - سیگنالهای تقویتی را برای رتبهبندی Deep بعدی ثبت میکند.
- هرگز در
MEMORY.mdنمینویسد.
Deep phase
فاز Deep تصمیم میگیرد چه چیزی به حافظهٔ بلندمدت تبدیل شود.
- نامزدها را با استفاده از امتیازدهی وزندار و دروازههای آستانه رتبهبندی میکند.
- برای عبور، به
minScore،minRecallCountوminUniqueQueriesنیاز دارد. - پیش از نوشتن، قطعهها را از فایلهای روزانهٔ زنده بازآبرسانی میکند، بنابراین قطعههای قدیمی/حذفشده نادیده گرفته میشوند.
- مدخلهای ارتقایافته را به
MEMORY.mdاضافه میکند. - یک خلاصهٔ
## Deep SleepدرDREAMS.mdمینویسد و بهصورت اختیاریmemory/dreaming/deep/YYYY-MM-DD.mdرا مینویسد.
REM phase
فاز REM الگوها و سیگنالهای تأملی را استخراج میکند.
- خلاصههای تم و تأمل را از ردپاهای کوتاهمدت اخیر میسازد.
- وقتی ذخیرهسازی شامل خروجی درونخطی باشد، یک بلوک مدیریتشدهٔ
## REM Sleepمینویسد. - سیگنالهای تقویتی REM را که در رتبهبندی Deep استفاده میشوند ثبت میکند.
- هرگز در
MEMORY.mdنمینویسد.
دریافت رونوشت نشست
Dreaming میتواند رونوشتهای نشست سانسورشده را در پیکرهٔ Dreaming دریافت کند. وقتی رونوشتها در دسترس باشند، در کنار سیگنالهای حافظهٔ روزانه و ردپاهای یادآوری به فاز Light داده میشوند. محتوای شخصی و حساس پیش از دریافت سانسور میشود.
دفترچهٔ رویا
Dreaming همچنین یک دفترچهٔ رویا روایی را در DREAMS.md نگه میدارد. پس از آنکه هر فاز مواد کافی داشته باشد، memory-core یک نوبت subagent پسزمینهٔ بهترینتلاش اجرا میکند و یک مدخل کوتاه دفترچه اضافه میکند. این کار از مدل runtime پیشفرض استفاده میکند، مگر اینکه dreaming.model پیکربندی شده باشد. اگر مدل پیکربندیشده در دسترس نباشد، دفترچهٔ رویا یک بار دیگر با مدل پیشفرض نشست تلاش میکند.
همچنین یک مسیر پرکردن تاریخی مبتنی بر شواهد برای کارهای بازبینی و بازیابی وجود دارد:
Backfill commands
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آن مصنوعات آمادهشدهٔ backfill را بدون دست زدن به مدخلهای عادی دفترچه یا یادآوری کوتاهمدت زنده حذف میکنند.
Control UI همان جریان backfill/بازنشانی دفترچه را ارائه میکند تا بتوانید پیش از تصمیمگیری دربارهٔ اینکه آیا نامزدهای مبتنی بر شواهد شایستهٔ ارتقا هستند، نتایج را در صحنهٔ رویاها بررسی کنید. صحنه همچنین یک مسیر مبتنی بر شواهد متمایز نشان میدهد تا بتوانید ببینید کدام مدخلهای کوتاهمدت آمادهشده از بازپخش تاریخی آمدهاند، کدام آیتمهای ارتقایافته با هدایت شواهد بودهاند، و فقط مدخلهای آمادهشدهٔ صرفاً مبتنی بر شواهد را بدون دست زدن به وضعیت کوتاهمدت زندهٔ عادی پاک کنید.
سیگنالهای رتبهبندی Deep
رتبهبندی Deep از شش سیگنال پایهٔ وزندار بهعلاوهٔ تقویت فاز استفاده میکند:
| سیگنال | وزن | توضیح |
|---|---|---|
| بسامد | 0.24 | تعداد سیگنالهای کوتاهمدتی که مدخل انباشته کرده است |
| ارتباط | 0.30 | میانگین کیفیت بازیابی برای مدخل |
| تنوع پرسوجو | 0.15 | زمینههای پرسوجو/روز متمایزی که آن را آشکار کردهاند |
| تازگی | 0.15 | امتیاز تازگی با کاهش زمانی |
| یکپارچهسازی | 0.10 | قدرت تکرار در چند روز |
| غنای مفهومی | 0.06 | چگالی برچسب مفهومی از قطعه/مسیر |
برخوردهای فاز Light و REM یک تقویت کوچک با کاهش تازگی از memory/.dreams/phase-signals.json اضافه میکنند.
زمانبندی
وقتی فعال باشد، memory-core یک job کرون را برای یک پیمایش کامل Dreaming بهصورت خودکار مدیریت میکند. هر پیمایش فازها را بهترتیب اجرا میکند: Light → REM → Deep.
پیمایش شامل workspace اصلی runtime و هر workspace پیکربندیشدهٔ agent است، با حذف موارد تکراری بر اساس مسیر، بنابراین fan-out کردن workspaceهای subagent باعث کنار گذاشته شدن DREAMS.md و وضعیت حافظهٔ agent اصلی نمیشود.
رفتار cadence پیشفرض:
| تنظیم | پیشفرض |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
مدل پیشفرض |
شروع سریع
Enable dreaming
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true
}
}
}
}
}
}
Custom sweep cadence
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true,
"timezone": "America/Los_Angeles",
"frequency": "0 */6 * * *"
}
}
}
}
}
}
دستور اسلش
/dreaming status
/dreaming on
/dreaming off
/dreaming help
گردش کار CLI
Promotion preview / apply
openclaw memory promote
openclaw memory promote --apply
openclaw memory promote --limit 5
openclaw memory status --deep
memory promote دستی بهصورت پیشفرض از آستانههای فاز Deep استفاده میکند، مگر اینکه با flagهای CLI بازنویسی شود.
Explain promotion
توضیح دهید چرا یک نامزد مشخص ارتقا مییابد یا نمییابد:
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
REM harness preview
تأملات REM، حقیقتهای نامزد و خروجی ارتقای Deep را بدون نوشتن چیزی پیشنمایش کنید:
openclaw memory rem-harness
openclaw memory rem-harness --json
پیشفرضهای کلیدی
همهٔ تنظیمات زیر plugins.entries.memory-core.config.dreaming قرار دارند.
enabledbooleanپیمایش Dreaming را فعال یا غیرفعال کنید.
frequencystringcadence کرون برای پیمایش کامل Dreaming.
modelstringبازنویسی اختیاری مدل subagent دفترچهٔ رویا. هنگام تنظیم allowlist برای allowedModels یک subagent، از مقدار canonical provider/model استفاده کنید.
UI رویاها
وقتی فعال باشد، زبانهٔ Dreams در Gateway نشان میدهد:
- وضعیت فعلی فعال بودن Dreaming
- وضعیت در سطح فاز و وجود پیمایش مدیریتشده
- شمارشهای کوتاهمدت، مبتنی بر شواهد، سیگنال و ارتقایافتههای امروز
- زمان اجرای برنامهریزیشدهٔ بعدی
- یک مسیر Scene مبتنی بر شواهد متمایز برای مدخلهای بازپخش تاریخی آمادهشده
- خوانندهٔ قابل گسترش دفترچهٔ رویا که توسط
doctor.memory.dreamDiaryپشتیبانی میشود
Dreaming هرگز اجرا نمیشود: وضعیت blocked نشان میدهد
اگر openclaw memory status گزارش دهد Dreaming status: blocked، کرون مدیریتشده وجود دارد اما Heartbeat پیشفرض agent اجرا نمیشود. بررسی کنید که Heartbeat برای agent پیشفرض فعال باشد و target آن none نباشد، سپس پس از بازهٔ Heartbeat بعدی دوباره openclaw memory status --deep را اجرا کنید.