v0.7.2.ru.md
docs/i18n/release-notes/v0.7.2.ru.md
Tesserae v0.7.2 — обнаружение сессий и компиляция больше не зависают
<!-- translations:start -->
English · 한국어 · 中文 · 日本語 · Español · Français · Deutsch
<!-- translations:end -->
Дата релиза 2026-06-12 · PyPI · GitHub release · pip install --upgrade tesserae==0.7.2
Релиз с исправлениями ошибок, устраняющий три способа, которыми Tesserae мог застрять на машинах с большой историей агентских сессий: обнаружение сессий, которое никогда не возвращалось; подпроцессы CLI-агентов, навсегда зависавшие по таймауту; и параллельные компиляции, наслаивавшиеся на одно и то же состояние проекта.
1. tesserae sessions discover возвращается — даже с десятками ГБ истории
Раньше обнаружение полностью разбирало JSON каждой расшифровки каждого проекта под каждым корнем аккаунта до фильтрации. На машине с ~57 ГБ истории Claude Code / Codex команда фактически никогда не возвращалась.
Три исправления, умножающие друг друга:
- Предварительный фильтр по маркеру — расшифровка может принадлежать текущему проекту только если путь проекта встречается в файле буквально, поэтому чужие расшифровки теперь отсеиваются сырым байтовым сканированием (~в 50 раз быстрее разбора) до любой работы с JSON.
- Дедупликация корней-симлинков —
~/.claude, указывающий на~/.claude-personal1, больше не приводит к двойному сканированию каждой расшифровки. - Кэш сканирования по mtime — результаты проверки сохраняются в
~/.cache/tesserae/discovery_scan.sqlite(переопределяется черезTESSERAE_DISCOVERY_CACHE), поэтому повторные запуски перечитывают только новые или изменённые расшифровки.
Замеры на проблемной машине: никогда не возвращается → 3 мин 16 с на холодную → 1 мин 26 с на тёплую, найдено 4 048 сессий. tesserae refresh и импорт сессий используют тот же путь и ускоряются так же.
2. Таймауты CLI-агентов больше не подвешивают компиляцию
Вызовы codex exec / claude -p использовали subprocess.run(capture_output=True, timeout=...), который по таймауту убивает только непосредственного потомка, а затем вычитывает выходные каналы без таймаута. CLI-агенты порождают собственных потомков, наследующих эти каналы, поэтому таймаут мог оставить компиляцию заблокированной на 0% CPU неограниченно долго (наблюдалось: ~2 дня) за осиротевшими внуками.
Теперь вызовы LLM CLI выполняются в собственной группе процессов, и таймаут убивает всю группу с ограниченным по времени вычитыванием — таймаут всегда означает «мертво», и никогда — «зависло».
3. Одна компиляция на проект одновременно
ProjectWiki.compile теперь держит эксклюзивную блокировку на .tesserae/compile.lock. Refresh, запущенный хуком во время уже идущей компиляции, быстро завершается с понятным сообщением, называющим pid держателя, вместо тихого наслаивания на то же состояние .tesserae. Установите TESSERAE_COMPILE_LOCK_WAIT=<секунды>, чтобы вместо этого подождать блокировку. Блокировка основана на flock(2), поэтому упавшая компиляция никогда не оставляет устаревшую блокировку.
4. tesserae --version
Корневая справка теперь начинается с установленной версии, а tesserae --version (также -V / version) печатает её напрямую.
Обновление с v0.7.1
Прямая замена. Изменений конфигурации нет. Первый sessions discover / refresh после обновления выполняет одноразовый проход проверки для заполнения кэша сканирования; последующие запуски быстрые.