4.0 KB · updated 2026-07-31 · md

v0.20.2.ru.md

docs/i18n/release-notes/v0.20.2.ru.md

Tesserae v0.20.2 — теперь модель читает всё

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Español · Français · Deutsch

<!-- translations:end -->

Выпущено 2026-07-14 · PyPI · GitHub release · pip install --upgrade tesserae==0.20.2

Вторая половина исправления для долгих сессий. v0.20.1 убрал лимит в 300 оборотов при импорте, чтобы полная история разговора доходила до хранилища; этот релиз исправляет сторону потребления, так что каждый LLM, читающий эту историю, действительно читает её всю — независимо от общей длины.

Что оставалось не так после 0.20.1

  • Выдержки из сессий усекались под размер: за горизонтом в 24,000 символов на проект сводки выбрасывали целые сессии с пометкой «…more sessions omitted for length» — модель их никогда не видела.
  • Один неограниченный промпт: нарратив сводки и майнинг агентских решений отправляли всё одним LLM-вызовом — на загруженном окне он был больше любого контекстного окна.
  • max_turns_per_chunk считал обороты, а не размер: тридцать оборотов могут нести один 500KB дамп инструмента; чанки извлечения графа сессий всё ещё могли переполняться.

Что изменилось

Новый tesserae/llm_chunking.py: детерминированный упаковщик блоков и map-reduce-раннер, рассчитанный на консервативный бюджет контекста (48,000 символов ≈ 12k токенов; настраивается через TESSERAE_LLM_CHUNK_CHARS). Каждый LLM-потребитель истории сессий теперь итерирует чанки размером с бюджет — map-вызовы PART i/N, затем иерархическое слияние — при этом маркеры усечения исчезли, один слишком большой оборот разбивается по строкам между чанками вместо переполнения, а маленькие входы сохраняют точный старый путь одного вызова.

--max-turns остаётся только защитой памяти при сканировании — он больше не ограничивает то, что читает модель.

Проверено прямо по требованию: 600KB истории сессий → 82 ограниченных вызова (максимальный промпт 7,525 символов при тестовом бюджете 8,000 символов) → один слитый нарратив, в котором учтена каждая сессия. Приёмочный тест закладывает решение в последнюю сессию за старым горизонтом усечения — на коде до исправления он падает.