7.6 KB · updated 2026-07-31 · md

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