17.4 KB · updated 2026-07-31 · md

engine-consolidation.ru.md

docs/i18n/engine-consolidation.ru.md

Автоматическая консолидация — цикл сна двигателя

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end -->

Мозг консолидирует память во время отдыха. Во время сна сырой опыт дня переорганизуется, сжимается и интегрируется — недавнее, громкое материал складывается в устойчивую структуру. Двигатель Tesserae делает то же самое. Когда проект становится неактивным, всегда включённый демон прекращает ожидание следующего редактирования и проводит тихое время, переорганизуя то, что он уже знает: сжимает и забывает громкую недавнюю память, позволяет знаниям, которые никто не получал, исчезать от неиспользования и обнаруживает новые связи между тем, что выжило.

До сих пор этот проход запускался только при вашей просьбе — tesserae refresh под давлением памяти, или явный tesserae distill. Двигатель перекомпилировался при каждом файле и событии сессии, но никогда не консолидировался автоматически. Цикл сна закрывает этот разрыв: оставьте tesserae engine работающим, и консолидация происходит во время отдыха, без команды, которую нужно помнить.

Как всё в системе многоуровневой памяти, это отсутствие операции, если вы не согласитесь — демон консолидирует при неактивности, но дистилляция под ним работает только когда установлен TESSERAE_AGENT_DISTILL.

Когда это срабатывает

Специализированный поток консолидации просыпается в фиксированном интервале проверки (по умолчанию 30 секунд) и оценивает два независимых триггера против монотонных часов активности:

  • Триггер неактивности. Проект не видел событие триггера или запуск конвейера в течение как минимум --consolidate-idle секунд (по умолчанию 300 секунд = 5 минут). Это случай "консолидации во время отдыха" — двигатель заметил, что вы перестали работать, и использовал паузу. Пол с момента последней консолидации предотвращает дрожание, поэтому занятый проект, который только что стал спокойным, не консолидируется при чувствительном триггере.
  • Триггер потолка. Прошло по крайней мере --consolidate-every секунд с момента последней консолидации, независимо от активности (по умолчанию 21600 секунд = 6 часов). Это гарантирует, что постоянно занятый проект все ещё консолидируется периодически, вместо того, чтобы никогда не получить спокойный момент. Установка на 0 отключает потолок — тогда неактивность является единственным триггером.

Каждое редактирование, ход сессии или перекомпиляция увеличивают часы активности, поэтому окно неактивности истекает только во время подлинного отдыха. Оба часов монотонны, никогда не стенные часы, и никогда не сохраняются в какой-либо артефакт — время консолидации никогда не может возмутить байт-детерминированный граф.

Что запускается — три операции

Каждый запуск загружает скомпилированный граф из .tesserae/graph.json (если файл отсутствует, проход пропускается) и запускает три операции консолидации по порядку. Вместе они отражают то, что делает отдыхающий мозг: сжимает недавнее громкое материал, позволяет никогда не посещаемому материалу исчезать и создаёт новые ассоциации между тем, что выжило.

1. Сжатие / забывание — дистилляция

Вызывает точку входа maybe_distill_on_refresh, которую tesserae refresh использует для переорганизации, сжатия и безопасного забывания памяти каждого агента. Эта функция тройного управления внутри и никогда не поднимается за отказ для каждого агента:

  1. Шлюз согласияTESSERAE_AGENT_DISTILL=1 (или {"agent_distill": {"enabled": true}} в config.json). По умолчанию отключено; весь цикл является безопасной отсутствием операции, пока вы не установите его.
  2. Водяной знак для каждого агента — агент, чьи выводы не изменились с момента последней дистилляции, пропускается.
  3. Давление памяти для каждого агента — консолидируются только агенты, чьи недистиллированные выводы больше не подходят в половину чтения контекста (триггер в стиле MemGPT).

Поэтому даже когда консолидация срабатывает по расписанию, она только работает для агентов, которые как согласились, так и фактически накопили достаточно новой памяти, чтобы это было оправдано. Посмотрите Многоуровневая память агента, чтобы узнать, что производит дистилляция.

2. Забывание от неиспользования — убывание LRU при получении, не только по возрасту

Убывание дистилляции больше не управляется только возрастом создания. Каждая поверхность чтения записывает доступ к выводам, которые она возвращает — last_accessed_at и access_count — в node_memory боковой автомобиль, никогда не в graph.json. Перед тем, как проход дистилляции вычислить убывание, он объединяет это состояние живого доступа в его рабочий вид, поэтому вывод, который не был получен с момента его создания, убывает и становится приемлемым для поглощения или понижения в должности, в то время как вывод, который был недавно прочитан, остаётся свежим независимо от его возраста. Это свежесть получения, интуиция LRU (наименее недавно использованная), применённая к памяти: знание, которое вы продолжаете извлекать, остаётся; знание, которое никто не просит, исчезает в первую очередь. Пустой боковой автомобиль точно воспроизводит старое поведение, учитывающее только возраст, поэтому полностью обратно совместим.

3. Ассоциирование — обнаружение новых связей

Финальная операция ищет новые отношения между тем, что выжило. Он встраивает дистиллированные заметки и связывает пары, значения которых близки — управление встраиванием, поэтому оно работает только когда настроена действительная серверная часть встраивания (заглушка хеша пропускается, никогда не производя шумные ссылки). Обнаружение работает внутри проекта и между агентами, и связи, которые он находит, выковываются как рёбра shares_concept_with, несущие маркер federation_semantic.

Что самое важное, эти обнаруженные рёбра записываются в наложение боковой карты под .tesserae, никогда в graph.json. Наложение накапливается через циклы — каждый проход ассоциирования дедупирует против и расширяет то, что обнаружили более ранние проходы. Во время чтения (запрос, расширение PPR, представления федерации) наложение объединяется в граф только в памяти, точно так же, как наложение представления на агента — поэтому байт-детерминированный graph.json никогда не трогается. Вся операция завёрнута и никогда не поднимается в цикл демона.

Безопасность и детерминизм

  • Работает под шлюзом компиляции. Консолидация получает тот же замок, что и перекомпиляция, поэтому она сериализируется с компиляциями и никогда не перекрывается. Ожидающая компиляция ждёт выполняемую консолидацию и наоборот — граф никогда не читается во время записи.
  • Никогда не поднимается в цикл демона. Весь проход завёрнут; любая ошибка регистрируется, и поток продолжает цикл. Неудачная консолидация никогда не отключает двигатель.
  • Отсутствие операции, когда шлюз выключен. С невыставленным TESSERAE_AGENT_DISTILL, проход не загружает ничего дорогого и сразу же возвращается, поэтому оставление цикла сна включённым по существу ничего не стоит.
  • Детерминированные артефакты, без изменений. Дистиллированные артефакты остаются детерминированными при данных входах; цикл сна изменяет только когда дистилляция работает, никогда что она производит. Время неактивности никогда не попадает в graph.json или любой дистиллированный уровень.
  • graph.json остаётся байт-идемпотентным. Ни одна новая операция не пишет его. Состояние доступа находится в боковом автомобиле node_memory, а обнаруженные связи в накопительном наложении — оба под .tesserae, оба объединяются только в памяти во время чтения. Авторитетные байты графа не затрагиваются историей получения или обнаруженными ссылками.
  • Чистое завершение. Поток консолидации наблюдает событие остановки демона и быстро выходит при Ctrl-C / выключении. Это функция только режима длительного запуска: tesserae engine ... --once никогда его не запускает.

Флаги CLI

ФлагПо умолчаниюЭффект
--consolidate / --no-consolidateonПолностью включить или отключить цикл сна. Включено по умолчанию (отсутствие операции, если шлюз дистилляции не установлен).
--consolidate-idle SECONDS300Окно отдыха: консолидировать после этого количества секунд без активности.
--consolidate-every SECONDS21600Потолок: консолидировать как минимум столько часто независимо от активности. 0 отключает потолок.
--consolidate-check SECONDS30Как часто поток консолидации просыпается для переоценки триггеров.

Поведение флота(--all)

tesserae engine --all держит каждый зарегистрированный проект в свежем виде в одном процессе. Каждый модуль проекта получает собственный поток консолидации с теми же элементами управления, и все модули совместно используют один замок компиляции для всего флота — поэтому консолидация в одном проекте сериализируется с компиляциями по всему флоту, никогда не перекрывая ни одну.

Проработанный пример

Включите дистилляцию, затем запустите двигатель с более быстрым циклом сна для демонстрации — консолидируйте после 60 секунд неактивности и как минимум каждые 30 минут независимо:

export TESSERAE_AGENT_DISTILL=1
tesserae engine \
  --consolidate-idle 60 \
  --consolidate-every 1800 \
  --consolidate-check 15

Работайте в редакторе и агентах как обычно; двигатель наблюдает, подавляет дребезжание и перекомпилирует каждое изменение. Остановитесь на минуту и сработает триггер неактивности: поток консолидации получает замок компиляции и дистиллирует любого агента под давлением памяти — переорганизуя, сжимая и безопасно забывая — затем засыпает. Продолжайте работу после отметки в полчаса без перерыва и сработает потолок, поэтому беспощадный проект всё ещё консолидируется.

Чтобы оставить двигатель работающим, но оставить консолидацию для ручных запусков tesserae distill, передайте --no-consolidate. Чтобы запустить его при неактивности, но никогда по фиксированному расписанию, передайте --consolidate-every 0.