v0.28.4.ru.md
docs/i18n/release-notes/v0.28.4.ru.md
Tesserae v0.28.4 — ваши другие аккаунты никогда не использовались
<!-- translations:start -->
English · 한국어 · 中文 · 日本語 · Español · Français · Deutsch
<!-- translations:end -->
Released 2026-07-31 · PyPI · GitHub release · pip install --upgrade tesserae==0.28.4
Tesserae перебирает ваши авторизованные аккаунты CLI: аккаунт, упёршийся в лимит, уступает следующему, вместо того чтобы обрушить остаток запуска в детерминированное извлечение. Этот перебор был выключен — причём именно в самом частом сценарии запуска Tesserae.
Одна переменная окружения отключала весь механизм
Установка CLAUDE_CONFIG_DIR или CODEX_HOME заменяла найденный список аккаунтов этим единственным каталогом. Каждый процесс, порождённый сессией Claude Code, наследует CLAUDE_CONFIG_DIR — поэтому компиляция могла использовать только аккаунт запустившей её сессии, а когда тот иссякал, перебору некуда было идти.
Измерено на собственном графе проекта за один день:
- одна компиляция исчерпала пятичасовой лимит аккаунта и сбросила 1 531 документ в детерминированное извлечение, пока два других авторизованных аккаунта простаивали с полной квотой;
- более поздний запуск потерял ещё 1 590 из-за истёкшего OAuth одного аккаунта, при живом аккаунте рядом.
Граф тихо сжался с ~13 000 узлов до 5 155, прежде чем это заметили.
Теперь переменная окружения называет аккаунт, который следует попробовать первым, а не единственный допустимый.
Вы выбираете, какие аккаунты расходуются
llm_claude_config_dirs и новый llm_codex_homes (список в порядке перебора) авторитетны, если заданы: ничего вне их не пробуется, и они важнее внешней переменной, которая наследуется, а не выбирается.
{
"llm_codex_homes": ["/Users/you/.codex-work", "/Users/you/.codex-personal"]
}
У каждого провайдера свой ключ, потому что каталог конфигурации Claude CLI и домашний каталог Codex — разные вещи на диске. Обнаружение Codex теперь также требует auth.json: на одной реальной машине это исключило 24 случайных файла ~/.codex-*.log, каждый из которых стоил обречённого codex exec на документ.
Исчерпанный аккаунт больше не стоит подпроцесса на документ
Квота — факт об аккаунте, а не о документе. После того как все настроенные аккаунты сообщили о лимите, запуск всё равно порождал дочерний процесс CLI на каждый оставшийся документ и каждый аккаунт, чтобы услышать то же самое. Теперь этот вердикт запоминается на остаток запуска.
Ложное срабатывание намеренно затруднено: каждый испробованный аккаунт должен быть доказанным тупиком, и хотя бы один должен прямо сказать «you've hit your … limit». Один тайм-аут среди них — и запуск продолжает попытки: транзиентный сбой не равен исчерпанию. Вердикт привязан к клиенту, поэтому долгоживущий демон не остаётся заблокированным после сброса лимита.
Компиляция, потерявшая концептуальный слой, теперь говорит об этом
Compiled project wiki: processed=2492 skipped=0 fallbacks=1531 nodes=… edges=…
WARNING: 1531 of 2492 document(s) (61.4%) fell back to deterministic extraction —
their concept layer is missing from this graph.
fallbacks=N идёт в машиночитаемой строке итога, чтобы CI мог на неё опираться, а строка для человека повышается с note: до предупреждения после 50 %. Обе называют способ восстановления, который не требует перекомпиляции корпуса:
tesserae compile --changed-only --retry-fallbacks
Это #92. Именно эта тишина скрывала все перечисленные ошибки целые сутки. Код возврата не тронут — это изменение контракта для всего, что скриптует compile, и заслуживает отдельного решения.
Кроме того
Экстрактор Claude больше не передаёт --max-turns 1. Флаг считает вызовы инструментов, а не ответы, поэтому на машине с настроенными MCP-серверами первый вызов инструмента тратил единственный ход, и CLI завершался, не выдав JSON. То, что действительно нужно для «одного выстрела», — это --strict-mcp-config.
@jokerized/tesserae теперь публикуется из GitHub Actions через доверенную публикацию npm по OIDC, поэтому релизы несут аттестации происхождения, а долгоживущего npm-токена больше не существует.
Обновление с v0.28.3
Прямая замена. Изменений API и схемы нет; llm_codex_homes добавлен, а прежний llm_codex_home в единственном числе продолжает работать.
Если у вас несколько аккаунтов — перекомпилируйте. Прошлые версии могли оставить деградировавшие документы, которые новый запуск восстановит, а кэш означает, что платить придётся только за затронутые файлы:
tesserae compile --changed-only --retry-fallbacks