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 использует для переорганизации, сжатия и безопасного забывания памяти каждого агента. Эта функция тройного управления внутри и никогда не поднимается за отказ для каждого агента:
- Шлюз согласия —
TESSERAE_AGENT_DISTILL=1(или{"agent_distill": {"enabled": true}}вconfig.json). По умолчанию отключено; весь цикл является безопасной отсутствием операции, пока вы не установите его. - Водяной знак для каждого агента — агент, чьи выводы не изменились с момента последней дистилляции, пропускается.
- Давление памяти для каждого агента — консолидируются только агенты, чьи недистиллированные выводы больше не подходят в половину чтения контекста (триггер в стиле 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-consolidate | on | Полностью включить или отключить цикл сна. Включено по умолчанию (отсутствие операции, если шлюз дистилляции не установлен). |
--consolidate-idle SECONDS | 300 | Окно отдыха: консолидировать после этого количества секунд без активности. |
--consolidate-every SECONDS | 21600 | Потолок: консолидировать как минимум столько часто независимо от активности. 0 отключает потолок. |
--consolidate-check SECONDS | 30 | Как часто поток консолидации просыпается для переоценки триггеров. |
Поведение флота(--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.