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

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 * * *"          }        }      }    }  }}

Команда с косой чертой

text
/dreaming status/dreaming on/dreaming off/dreaming help

/dreaming on и /dreaming off требуют статуса владельца для вызывающих сторон канала или operator.admin для клиентов Gateway. /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

Необязательное переопределение модели субагента дневника сновидений. Используйте каноническое значение provider/model, если также задаётся список разрешённых моделей субагента allowedModels.

phases.deep.maxPromotedSnippetTokensnumberdefault: 160

Максимальное приблизительное количество токенов, сохраняемое из каждого фрагмента краткосрочного припоминания, перенесённого в MEMORY.md. Происхождение данных ранжирования остаётся видимым.

Интерфейс сновидений

Когда функция включена, вкладка сновидений в Gateway показывает:

  • текущее состояние включения Dreaming
  • состояние отдельных фаз и наличие управляемого прохода
  • количество краткосрочных, обоснованных и перенесённых сегодня элементов, а также сигналов
  • время следующего запланированного запуска
  • отдельный обоснованный контур сцены для подготовленных записей исторического воспроизведения
  • раскрываемое средство чтения дневника сновидений на основе doctor.memory.dreamDiary

Связанные материалы

Was this useful?
On this page

On this page