Sessions and memory
Dreaming
Dreaming — это система фоновой консолидации памяти в memory-core. Она переносит устойчивые краткосрочные сигналы в долговременную память, сохраняя процесс объяснимым и доступным для проверки.
Что записывает Dreaming
- Состояние системы в
memory/.dreams/(хранилище припоминания, сигналы фаз, контрольные точки приёма данных, блокировки). - Доступные для чтения человеком данные в
DREAMS.md(или существующийdreams.md) и необязательные файлы отчётов по фазам вmemory/dreaming/<phase>/YYYY-MM-DD.md.
При переносе в долговременную память данные по-прежнему записываются только в MEMORY.md.
Модель фаз
За каждый проход Dreaming последовательно выполняет три совместно работающие фазы: лёгкую -> REM -> глубокую. Это внутренние фазы реализации, а не отдельные режимы, настраиваемые пользователем.
| Фаза | Назначение | Долговременная запись |
|---|---|---|
| Лёгкая | Сортировка и подготовка свежих краткосрочных данных | Нет |
| REM | Анализ тем и повторяющихся идей | Нет |
| Глубокая | Оценка и перенос кандидатов в долговременную память | Да (MEMORY.md) |
Лёгкая фаза
- Считывает свежее состояние краткосрочного припоминания, ежедневные файлы памяти и отредактированные расшифровки сеансов, если они доступны.
- Удаляет дублирующиеся сигналы и подготавливает строки-кандидаты.
- Записывает управляемый блок
## Light Sleep, если хранилище предусматривает встроенный вывод. - Регистрирует сигналы подкрепления для последующего ранжирования в глубокой фазе.
- Никогда не записывает данные в
MEMORY.md.
Фаза REM
- Формирует сводки по темам и размышлениям на основе свежих краткосрочных следов.
- Записывает управляемый блок
## REM Sleep, если хранилище предусматривает встроенный вывод. - Регистрирует сигналы подкрепления REM, используемые при ранжировании в глубокой фазе.
- Никогда не записывает данные в
MEMORY.md.
Глубокая фаза
- Ранжирует кандидатов с помощью взвешенной оценки и пороговых условий (все
minScore,minRecallCountиminUniqueQueriesдолжны быть выполнены). - Перед записью повторно загружает фрагменты из актуальных ежедневных файлов, поэтому устаревшие или удалённые фрагменты пропускаются.
- Добавляет перенесённые записи в
MEMORY.md. - Записывает сводку
## Deep SleepвDREAMS.mdи при необходимости вmemory/dreaming/deep/YYYY-MM-DD.md.
Приём расшифровок сеансов
Dreaming может добавлять отредактированные расшифровки сеансов в свой корпус данных. Когда расшифровки доступны, они поступают в лёгкую фазу вместе с сигналами ежедневной памяти и следами припоминания. Перед приёмом персональные и конфиденциальные данные редактируются.
Дневник сновидений
Dreaming ведёт повествовательный дневник сновидений в DREAMS.md. После того как в каждой фазе накапливается достаточно материала, memory-core в фоновом режиме по мере возможности запускает ход субагента и добавляет краткую запись в дневник, используя модель среды выполнения по умолчанию, если не настроен 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удаляют эти подготовленные артефакты заполнения, не затрагивая обычные записи дневника и актуальное краткосрочное припоминание.
Control UI предоставляет тот же процесс заполнения и сброса дневника на вкладке памяти агента (страница агентов), чтобы можно было проверить результаты в сцене сновидений, прежде чем решать, заслуживают ли обоснованные кандидаты переноса. Отдельный обоснованный контур сцены показывает, какие подготовленные краткосрочные записи получены при историческом воспроизведении, какие перенесённые элементы были преимущественно обоснованными, а также позволяет удалить только подготовленные записи, относящиеся исключительно к обоснованным данным, не затрагивая актуальное состояние краткосрочной памяти.
Сигналы ранжирования глубокой фазы
Ранжирование глубокой фазы использует шесть взвешенных базовых сигналов и подкрепление фаз:
| Сигнал | Вес | Описание |
|---|---|---|
| Релевантность | 0.30 | Среднее качество извлечения записи |
| Частота | 0.24 | Количество накопленных записью краткосрочных сигналов |
| Разнообразие запросов | 0.15 | Количество различных контекстов запросов и дней, в которых она появлялась |
| Актуальность | 0.15 | Оценка свежести с временным затуханием |
| Консолидация | 0.10 | Устойчивость повторения на протяжении нескольких дней |
| Концептуальная насыщенность | 0.06 | Плотность тегов понятий во фрагменте или пути |
Срабатывания в лёгкой фазе и фазе REM добавляют небольшое усиление с затуханием по времени из memory/.dreams/phase-signals.json.
Результаты теневого испытания могут накладываться на базовую оценку как сигнал для проверки перед любой долговременной записью: полезное испытание даёт кандидату небольшое ограниченное усиление, нейтральное оставляет его отложенным, а вредное помечает его отклонённым для данного прохода оценки. Этот сигнал используется только в отчёте: он может изменить порядок кандидатов или метаданные проверки, но никогда сам по себе не записывает данные в MEMORY.md и не переносит кандидата.
Покрытие отчёта теневого испытания в QA
QA Lab включает сценарий, предназначенный только для отчётности и позволяющий исследовать, как будущее теневое испытание Dreaming могло бы проверять память-кандидат перед переносом: агент сравнивает базовый ответ с ответом, который может использовать память-кандидат, а затем записывает локальный отчёт с вердиктом, причиной и флагами риска. Это покрытие ограничено QA: оно проверяет, что артефакт отчёта остаётся отдельным от MEMORY.md и что агент никогда не заявляет о переносе кандидата. Оно не добавляет рабочее поведение теневого испытания и не изменяет механизм переноса глубокой фазы.
Средство запуска теневых испытаний memory-core сохраняет тот же контракт только для отчётности в путях кода, которым требуется стабильный артефакт. Оно принимает кандидата, запрос испытания, базовый результат, результат с кандидатом, вердикт, причину, флаги риска и ссылки на свидетельства, а затем записывает отчёт с помощью promotion action: report-only. Полезные вердикты сопоставляются с рекомендацией promote, нейтральные — с defer, а вредные — с reject; ни один из них не записывает данные в MEMORY.md и не выполняет перенос глубокой фазы.
Планирование
Когда функция включена, memory-core автоматически управляет одним заданием Cron для полного прохода Dreaming, устраняя дублирование между основным рабочим пространством среды выполнения и всеми настроенными рабочими пространствами агентов, чтобы разветвление рабочих пространств субагентов не исключало DREAMS.md и состояние памяти основного агента.
| Настройка | Значение по умолчанию |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
модель по умолчанию |
Быстрый старт
Включение Dreaming
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true } } } } }}Пользовательская периодичность проходов
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true, "timezone": "America/Los_Angeles", "frequency": "0 */6 * * *" } } } } }}Команда с косой чертой
/dreaming status/dreaming on/dreaming off/dreaming help/dreaming on и /dreaming off требуют статуса владельца для вызывающих сторон канала или operator.admin для клиентов Gateway. /dreaming status и /dreaming help доступны только для чтения.
Рабочий процесс CLI
Предпросмотр и применение переноса
openclaw memory promoteopenclaw memory promote --applyopenclaw memory promote --limit 5openclaw memory status --deepПри ручном memory promote по умолчанию используются пороговые значения глубокой фазы, если они не переопределены флагами CLI.
Объяснение переноса
Объясните, почему конкретный кандидат будет или не будет перенесён:
openclaw memory promote-explain "router vlan"openclaw memory promote-explain "router vlan" --jsonПредпросмотр стенда REM
Просмотрите размышления REM, истины-кандидаты и результаты переноса глубокой фазы без записи данных:
openclaw memory rem-harnessopenclaw memory rem-harness --jsonОсновные значения по умолчанию
Все настройки находятся в plugins.entries.memory-core.config.dreaming.
enabledbooleandefault: falseВключает или отключает проход Dreaming.
frequencystringdefault: 0 3 * * *Периодичность Cron для полного прохода Dreaming.
modelstringНеобязательное переопределение модели субагента дневника сновидений. Используйте каноническое значение provider/model, если также задаётся список разрешённых моделей субагента allowedModels.
phases.deep.maxPromotedSnippetTokensnumberdefault: 160Максимальное приблизительное количество токенов, сохраняемое из каждого фрагмента краткосрочного припоминания, перенесённого в MEMORY.md. Происхождение данных ранжирования остаётся видимым.
Интерфейс сновидений
Когда функция включена, вкладка сновидений в Gateway показывает:
- текущее состояние включения Dreaming
- состояние отдельных фаз и наличие управляемого прохода
- количество краткосрочных, обоснованных и перенесённых сегодня элементов, а также сигналов
- время следующего запланированного запуска
- отдельный обоснованный контур сцены для подготовленных записей исторического воспроизведения
- раскрываемое средство чтения дневника сновидений на основе
doctor.memory.dreamDiary