Начнём с исправления, а не с описания, потому что исправление важнее.
В нашей документации и в комментариях к коду фазовый ночной цикл обработки памяти — с фазами, со взвешенной формулой отбора кандидатов, с гейтом тишины — был приписан стороннему проекту Hermes Agent. Эта атрибуция неверна.
При сверке первоисточников 28.07.2026 такого механизма в официальной документации и в репозитории того проекта как штатной возможности найти не удалось. Что там есть — это открытый запрос на подобную функциональность: описание возможного будущего механизма со статусом «открыт», то есть нереализованного.
Из этого следует прямой вывод, и мы формулируем его без смягчений: фазы и формула — наша собственная проектная гипотеза, а не воспроизведённый чужой алгоритм. Мы не имеем права обосновывать безопасность или качество нашего ночного цикла тем, что «так сделано у зрелого проекта». Такого основания не существует.
Почему это важно, а не является внутренней бухгалтерией: ссылка на чужую реализацию — это заимствованное доверие. Читатель, видя её, предполагает, что механизм кем-то проверен в эксплуатации. Здесь он не проверен никем, кроме нас, и знать это читатель должен до того, как включит функцию. Разбор того, откуда вообще взялась путаница с именем, — в материале про три разные вещи под именем Hermes.
#Короткий ответ: что это такое
«Сон» — не мистическая жизнь модели и не дообучение весов. Это набор фоновых задач, которые раз в сутки просматривают накопленное за период и предлагают изменения памяти.
Ключевое слово — предлагают. Цикл устроен по схеме «предложение, а не запись»: кандидаты и доказательства сначала фиксируются в журнале, затем отдельная детерминированная политика решает, что применить. Модель никогда не исполняет изменение памяти сама.
И второе ключевое: функция выключена по умолчанию. Соответствующий ключ настройки по умолчанию имеет значение «выключено», и включать его надо руками.
#Схема цикла
ГЕЙТ ТИШИНЫ
владелец писал недавно? ──да──▶ отложить до следующего тика
│нет
▼
ФАЗА 1 — сбор
чат + текст с экрана + расшифровка речи
за период (по умолчанию 7 дней)
один вызов модели на документ, до 24 документов
извлечение durable-фактов
→ кандидаты со счётчиками: частота, число сессий,
свежесть, богатство
БЕЗ записи в память
│
▼
ФАЗА 2 — обобщение
один вызов модели: повторяющиеся темы периода
→ текст-наблюдение, недеструктивно, отдельным видом записи
│
▼
ФАЗА 3 — отбор и применение
взвешенный балл каждого кандидата
все кандидаты и доказательства → в журнал
детерминированная политика: что можно применить
→ применяется только доказанное
Весь прогон имеет ключ идемпотентности, аренду и повторную попытку; журнал ревизий добавляется только в конец и не переписывается. Ошибка извлечения оставляет курсор входных данных на месте — то есть неудачный прогон не «съедает» необработанные сообщения.
#Формула отбора и её статус
Балл кандидата считается как взвешенная сумма шести составляющих, каждая из которых приведена к диапазону от нуля до единицы:
балл = релевантность · 0.30
+ частота · 0.24
+ разнообразие · 0.15
+ свежесть · 0.15
+ консолидация · 0.10
+ богатство · 0.06
Кандидат рассматривается к применению, если балл превышает порог — по умолчанию 0.6.
Статус этих чисел: наша гипотеза. Они не выведены из исследования, не подтверждены измерением качества и не скопированы у проекта, которому мы их раньше приписывали. Это инженерная эвристика, подобранная по здравому смыслу: чаще упоминалось и в разных разговорах — вероятно, важнее.
Мы оставляем формулу в продукте, потому что она даёт разумное поведение на наших данных, и одновременно фиксируем, что оснований называть её проверенной у нас нет. Правильная реакция читателя — относиться к ней как к настраиваемому фильтру, а не как к науке.
#Риски автоматической записи в память
Раздел, ради которого стоит читать остальное. Автоматическая запись выводов модели в постоянную память — механизм с несколькими способами испортиться, и большинство из них проявляются не сразу.
1. Ошибка закрепляется сама собой. Неверный вывод, попав в память, возвращается в промпт следующего разговора. Модель видит его как данность, соглашается, и при следующей ночной обработке этот же факт получает дополнительное подтверждение. Ошибка усиливает сама себя.
2. Собственные рассуждения принимаются за наблюдения. Текст, сгенерированный на второй фазе, — это обобщение, а не факт. Если его безусловно подмешивать в промпт наравне с проверенными фактами, гипотеза модели превращается в «наблюдение о пользователе».
3. Чужая речь становится фактом о вас. Текст с экрана — это часто чужой профиль, чужая переписка, чужая статья. Расшифровка встречи содержит слова нескольких человек. Без определения говорящего утверждение постороннего легко превращается в утверждение о владельце.
4. Повторный вывод считается новым доказательством. Если одно и то же исходное сообщение обработано дважды, наивная реализация посчитает это двумя подтверждениями. Сила связи должна быть функцией независимых доказательств, а не числа повторов вывода модели.
5. Происхождение теряется. Для сообщения чата есть идентификатор, по которому можно вернуться к источнику. Для фрагмента текста с экрана или отрезка речи такой ссылки может не быть — и тогда факт невозможно ни проверить, ни осмысленно откатить. Почему это критично — в материале про то, зачем нужен провенанс в памяти.
6. Тихая деградация. Ни один из перечисленных сбоев не выглядит как ошибка. Система работает, ответы связные, и только через несколько месяцев обнаруживается, что ассистент уверенно знает о вас неправду. Способы это ловить — в материале про галлюцинации памяти.
#Что мы делаем против этих рисков
Честно: часть закрыта, часть нет.
Закрыто. Цикл не пишет в память напрямую — только предлагает, а применяет отдельная детерминированная политика, пропускающая лишь доказанные факты о владельце. Реплики из групповых чатов помечаются как недоверенные и не могут стать фактом о владельце. Прогон имеет аренду и ключ идемпотентности, поэтому два запуска на одном снимке дают один логический результат. Журнал ревизий добавляется только в конец. Гейт тишины откладывает прогон, если владелец недавно писал, — по умолчанию порог около часа.
Не закрыто. Полного происхождения для текста с экрана и расшифровки речи нет: там нет ссылки на конкретный фрагмент, как есть идентификатор у сообщения чата. Определение говорящего слабое. Сквозного интерфейса «вот кандидаты, подтвердите или отклоните» с историей решений и откатом одним действием нет — это проектный документ, а не работающий код. Сквозного теста всего цикла от начала до конца, включая проверку на ложные факты и откат, нет.
Отдельно. Маркеры прогресса хранятся глобально, а не по пользователю. Это допустимо ровно потому, что данные захвата у нас однопользовательские и функция доступна только владельцу инстанса, — но это ограничение, а не свойство.
Статусы остальных частей архитектуры — в разборе агентной архитектуры Persona.
#Где интуиция подводит
«Ночью ассистент учится». Не учится: веса модели не меняются. Меняется содержимое хранилища фактов, из которого потом собирается промпт. Это работа с данными, а не обучение.
«Раз обрабатывает ночью, значит бесплатно». Каждый документ — это вызов модели. На локальной модели вы платите временем процессора и электричеством, на облачной — деньгами. Предел в два десятка документов за прогон существует именно поэтому.
«Чем больше запомнит, тем лучше». Наоборот: память, забитая мелочами, ухудшает подбор релевантного. Отбор с порогом нужен не для экономии места, а для качества. Смежная тема — стратегии забывания.
«Если механизм похож на человеческий сон, он и работает как сон». Названия фаз — метафора, выбранная для удобства чтения кода. Никакого отношения к нейрофизиологии эти фазы не имеют, и выводить из аналогии свойства механизма нельзя. Мы сами частично на этом и погорели: красивая метафора создала ощущение обоснованности там, где было инженерное предположение.
#Когда это выключить
Если у вас нет локальной модели, а облачный ключ платный. Ночной прогон потратит бюджет на задачу, которая не даёт немедленной отдачи.
Если вы не готовы просматривать, что записалось. Механизм без надзора накапливает неточности, а обнаруживаются они поздно.
Если вам важна воспроизводимость ответов. Память, меняющаяся ночью, меняет и ответы на одни и те же вопросы.
Если данных мало. На нескольких разговорах отбирать нечего: частота и разнообразие — основные составляющие балла — не наберутся.
По умолчанию функция выключена именно поэтому: включать её имеет смысл осознанно, а не потому, что она была включена при установке.
#Частые вопросы
#Правда ли, что фазовый ночной цикл — это алгоритм Hermes?
Нет, и это была наша ошибка. При сверке первоисточников 28.07.2026 такой штатной функции у того проекта найти не удалось — в его репозитории есть только открытый, нереализованный запрос на подобную возможность. Фазы, формула и пороги — наша собственная гипотеза, и обосновывать ими надёжность нельзя.
#Ассистент меняет память сам, без спроса?
Цикл предлагает изменения, а применяет их отдельная детерминированная политика, пропускающая только доказанные факты о владельце. Модель не исполняет изменение памяти напрямую. При этом сквозного интерфейса ручного подтверждения кандидатов у нас пока нет — это проект, а не работающая функция.
#Обучается ли модель во время «сна»?
Нет. Веса модели не меняются вообще: ночной цикл читает накопленные данные и работает с хранилищем фактов. Термин «сон» — метафора для фонового прогона, а не описание процесса обучения.
#Сколько это стоит?
Каждый обработанный документ — это отдельный вызов модели, поэтому стоимость пропорциональна объёму накопленного. У нас стоит предел на число документов за прогон, чтобы ночная обработка не превращалась в неограниченный расход. На локальной модели платой становится время процессора.
#Можно ли откатить неверно записанный факт?
Журнал ревизий с доказательствами ведётся, и данные для отката есть. Интерфейса, который делает откат одним действием и показывает историю решений, сегодня нет — это записано у нас как проект, а не как готовая возможность.
#Почему функция выключена по умолчанию?
Потому что она требует вызовов модели, меняет содержимое памяти и полагается на эвристику, которую мы сами считаем непроверенной. Включённая по умолчанию она молча тратила бы ресурсы и накапливала неточности у людей, которые об этом не просили.
#Что делать, если ассистент «помнит» неправду?
Найти факт в памяти и удалить его, а затем посмотреть, из какого источника он пришёл. Если источник — обобщение ночного цикла, а не ваше прямое утверждение, имеет смысл поднять порог отбора либо выключить функцию до тех пор, пока не появится нормальный интерфейс подтверждения.
#Вывод
Главное в этой статье — не описание механизма, а исправление: фазовый ночной цикл и его формула отбора не являются воспроизведением чужого проверенного алгоритма. Это наша гипотеза, и мы больше не будем обосновывать её чужим авторитетом.
Сам механизм построен на принципе «предложение, а не запись», выключен по умолчанию и имеет незакрытые слабые места: неполное происхождение для экрана и звука, слабое определение говорящего, отсутствие интерфейса подтверждения и отката. Если вы его включаете — просматривайте, что записалось, и держите порог отбора выше, а не ниже.