Dreaming (експериментально)
Dreaming — це система фонової консолідації пам’яті вmemory-core. Вона
повторно переглядає те, що з’являлося під час розмов, і вирішує, що варто
зберегти як стійкий контекст.
Dreaming використовує три кооперативні фази, а не конкуруючі режими. Кожна фаза має
окреме завдання, записує в окрему ціль і виконується за власним розкладом.
Три фази
Light
Фаза light dreaming упорядковує нещодавній безлад. Вона сканує нещодавні сліди пам’яті, дедуплікує їх за подібністю Жаккара, кластеризує пов’язані записи й підготовлює кандидатів пам’яті в щоденній нотатці (memory/YYYY-MM-DD.md).
Light не записує нічого в MEMORY.md. Вона лише впорядковує й
підготовлює. Умовно: «що із сьогоднішнього може мати значення пізніше?»
Deep
Фаза deep dreaming вирішує, що стане стійкою пам’яттю. Вона виконує справжню логіку просування: зважене оцінювання за шістьма сигналами, порогові перевірки, кількість згадувань, різноманіття унікальних запитів, згасання актуальності та фільтрацію за максимальним віком. Deep — це єдина фаза, якій дозволено записувати стійкі факти вMEMORY.md.
Вона також відповідає за відновлення, коли пам’яті замало (стан здоров’я падає нижче
налаштованого порога). Умовно: «що є достатньо правдивим, щоб це зберегти?»
REM
Фаза REM dreaming шукає патерни й рефлексію. Вона аналізує нещодавній матеріал, визначає повторювані теми через кластеризацію тегів концепцій і записує нотатки вищого порядку та роздуми в щоденну нотатку. REM записує в щоденну нотатку (memory/YYYY-MM-DD.md), а не в MEMORY.md.
Її результат є інтерпретативним, а не канонічним. Умовно: «який патерн я помічаю?»
Жорсткі межі
| Фаза | Завдання | Записує в | НЕ записує в |
|---|---|---|---|
| Light | Упорядкування | Щоденна нотатка (YYYY-MM-DD.md) | MEMORY.md |
| Deep | Збереження | MEMORY.md | — |
| REM | Інтерпретація | Щоденна нотатка (YYYY-MM-DD.md) | MEMORY.md |
Швидкий старт
Увімкнути всі три фази (рекомендовано):Конфігурація
Усі налаштування dreaming розташовані вplugins.entries.memory-core.config.dreaming
у openclaw.json. Повний список ключів див. у Довіднику конфігурації пам’яті.
Глобальні налаштування
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled | boolean | true | Головний перемикач для всіх фаз |
timezone | string | не задано | Часовий пояс для обчислення розкладу й щоденних нотаток |
verboseLogging | boolean | false | Виводити докладні журнали dreaming для кожного запуску |
storage.mode | string | "inline" | inline, separate або both |
Конфігурація фази light
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled | boolean | true | Увімкнути фазу light |
cron | string | 0 */6 * * * | Розклад (типово: кожні 6 годин) |
lookbackDays | number | 2 | Скільки днів слідів сканувати |
limit | number | 100 | Макс. кількість кандидатів для підготовки за запуск |
dedupeSimilarity | number | 0.9 | Поріг Жаккара для дедуплікації |
sources | string[] | ["daily","sessions","recall"] | Джерела даних для сканування |
Конфігурація фази deep
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled | boolean | true | Увімкнути фазу deep |
cron | string | 0 3 * * * | Розклад (типово: щодня о 3:00) |
limit | number | 10 | Макс. кількість кандидатів для просування за цикл |
minScore | number | 0.8 | Мінімальна зважена оцінка для просування |
minRecallCount | number | 3 | Мінімальний поріг кількості згадувань |
minUniqueQueries | number | 3 | Мінімальна кількість різних запитів |
recencyHalfLifeDays | number | 14 | Кількість днів, за яку оцінка актуальності зменшується вдвічі |
maxAgeDays | number | 30 | Максимальний вік щоденної нотатки для просування |
sources | string[] | ["daily","memory","sessions","logs","recall"] | Джерела даних |
Конфігурація відновлення deep
Відновлення вмикається, коли стан довготривалої пам’яті падає нижче порога.| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
recovery.enabled | boolean | true | Увімкнути автоматичне відновлення |
recovery.triggerBelowHealth | number | 0.35 | Поріг оцінки здоров’я для запуску відновлення |
recovery.lookbackDays | number | 30 | Як далеко назад шукати матеріал для відновлення |
recovery.maxRecoveredCandidates | number | 20 | Макс. кількість кандидатів для відновлення за запуск |
recovery.minRecoveryConfidence | number | 0.9 | Мінімальна впевненість для кандидатів на відновлення |
recovery.autoWriteMinConfidence | number | 0.97 | Поріг автозапису (без ручного перегляду) |
Конфігурація фази REM
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled | boolean | true | Увімкнути фазу REM |
cron | string | 0 5 * * 0 | Розклад (типово: щотижня, неділя 5:00) |
lookbackDays | number | 7 | Скільки днів матеріалу аналізувати |
limit | number | 10 | Макс. кількість патернів або тем для запису |
minPatternStrength | number | 0.75 | Мінімальна сила співпояви тегів |
sources | string[] | ["memory","daily","deep"] | Джерела даних для рефлексії |
Перевизначення виконання
Кожна фаза приймає блокexecution для перевизначення глобальних типових значень:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
speed | string | "balanced" | fast, balanced або slow |
thinking | string | "medium" | low, medium або high |
budget | string | "medium" | cheap, medium, expensive |
model | string | не задано | Перевизначити модель для цієї фази |
maxOutputTokens | number | не задано | Обмеження вихідних токенів |
temperature | number | не задано | Температура семплювання (0-2) |
timeoutMs | number | не задано | Тайм-аут фази в мілісекундах |
Сигнали просування (фаза deep)
Фаза deep dreaming поєднує шість зважених сигналів. Просування вимагає, щоб усі налаштовані порогові перевірки одночасно пройшли.| Сигнал | Вага | Опис |
|---|---|---|
| Частота | 0.24 | Як часто той самий запис згадувався |
| Релевантність | 0.30 | Середні оцінки recall під час отримання |
| Різноманіття запитів | 0.15 | Кількість різних намірів запиту, у яких він з’являвся |
| Актуальність | 0.15 | Часове згасання (recencyHalfLifeDays, типово 14) |
| Консолідація | 0.10 | Винагорода за згадування, що повторюються впродовж кількох днів |
| Концептуальна насиченість | 0.06 | Винагорода за записи з багатшими похідними тегами концепцій |
Команди чату
Команди CLI
Попередній перегляд і застосування просувань deep з командного рядка:Як це працює
Конвеєр фази light
- Прочитати записи короткострокового recall з
memory/.dreams/short-term-recall.json. - Відфільтрувати записи в межах
lookbackDaysвід поточного часу. - Виконати дедуплікацію за подібністю Жаккара (налаштовуваний поріг).
- Відсортувати за середньою оцінкою recall, узяти до
limitзаписів. - Записати підготовлених кандидатів до щоденної нотатки в блоці
## Light Sleep.
Конвеєр фази deep
- Прочитати й ранжувати кандидатів короткострокового recall за зваженими сигналами.
- Застосувати порогові перевірки:
minScore,minRecallCount,minUniqueQueries. - Відфільтрувати за
maxAgeDaysі застосувати згасання актуальності. - Розгорнути обробку в налаштованих workspace пам’яті.
- Повторно прочитати актуальну щоденну нотатку перед записом (пропустити застарілі або видалені фрагменти).
- Додати записи, що відповідають умовам, до
MEMORY.mdіз часовими позначками просування. - Позначити просунуті записи, щоб виключити їх із майбутніх циклів.
- Якщо здоров’я нижче
recovery.triggerBelowHealth, запустити етап відновлення.
Конвеєр фази REM
- Прочитати нещодавні сліди пам’яті в межах
lookbackDays. - Кластеризувати теги концепцій за співпоявою.
- Відфільтрувати патерни за
minPatternStrength. - Записати теми й роздуми до щоденної нотатки в блоці
## REM Sleep.
Планування
Кожна фаза автоматично керує власним cron-завданням. Коли dreaming увімкнено,memory-core узгоджує керовані cron-завдання під час запуску шлюзу. Вам не потрібно
створювати записи cron вручну.
| Фаза | Типовий розклад | Опис |
|---|---|---|
| Light | 0 */6 * * * | Кожні 6 годин |
| Deep | 0 3 * * * | Щодня о 3:00 |
| REM | 0 5 * * 0 | Щотижня, неділя 5:00 |
cron відповідної фази. Усі розклади враховують глобальне
налаштування timezone.
Інтерфейс Dreams
Коли dreaming увімкнено, на бічній панелі Gateway відображається вкладка Dreams зі статистикою пам’яті (кількість короткострокових записів, довгострокових записів, просунутих записів) і часом наступного запланованого циклу. Щоденні лічильники враховуютьdreaming.timezone, якщо його задано,
інакше використовується налаштований часовий пояс користувача.
Ручні запуски openclaw memory promote типово використовують ті самі пороги фази deep,
тому заплановане й запускане на вимогу просування залишаються узгодженими, якщо ви не передасте перевизначення CLI.