Сколько на самом деле осталось от лимитов Claude Code — в цифрах, а не в светофоре.
🇬🇧 English version · Неофициальный инструмент, к Anthropic отношения не имеет.
На что витрина не отвечает и почему. Набор вопросов один на все проекты (
.rules/showcase.json), и пробел в нём называется, а не опускается: из десяти вопросов живым числом отвечает один, остальные девять названы с причиной. Значка CI нет — состояние прогонов отдаёт сама площадка, а второй источник того же расходится с первым молча. Значка выпуска нет — выпуски перечисляет сама площадка, вкладка Releases. Значка PyPI нет — до1.0там ничего не публикуется, и это решение владельца, а не пробел. Значка покрытия нет — покрытие здесь не измеряется, а число, проставленное руками, застыло бы на первом же изменении.Значка нет — не значит, что числа нет. Числа об устройстве проекта — сколько тестов и модулей, на каких Python и платформах идут проверки, сколько их создаётся на изменении, чем держится каждое правило каталога — проект публикует о себе сам, машиночитаемо:
.github/badges/facts.jsonна веткеbadges, собираетscripts/facts.py. Это ответ соседней витрине, а не картинка читателю, и вопросы у них разные. Раздел, который нельзя посчитать точно, в файл не попадает вовсе: отсутствие ключа означает «не измеряли», а ноль на его месте читался бы как измеренный ответ.Пробел назван потому, что отсутствующий значок и застывший значок с витрины неотличимы. Держит это гейт
scripts/preflight.py: вопрос без ответа и значок, разошедшийся с деревом, — отказ, а не замечание. Он же не даёт разделу фактов исчезнуть молча: источник в дереве есть, а число из него не вышло — отказ.
Claude Code показывает состояние лимитов тремя ступенями:
allowed → allowed_warning → rejected
Планировать по такому нельзя. «Warning» означает и половину запаса, и последние проценты — а узнать, сколько именно осталось, неоткуда: ни числа, ни доли в доступных интерфейсах нет.
Практическое следствие знакомо каждому, кто гоняет агентские окна: браться за большую задачу или подождать сброса — решается наугад.
Остаток не запрашивается, а измеряется.
Рядом со светофором лежит фактический расход каждой сессии — прочитанный кэш, выданные токены, условная стоимость. Инструмент снимает эти замеры, копит их и считает потребление за окно: пятичасовое и семидневное.
Дальше он калибрует сам себя: запоминает, какому суммарному расходу
соответствовало переключение allowed → warning, потом warning → rejected.
Через две-три недели набирается собственная шкала — и остаток начинает
считаться в процентах, без всякого доступа к внутренним лимитам.
Без сервера и без базы данных. Замеры дописываются строками JSONL в git — в приватный репозиторий рядом.
Причина архитектурная: замер может сделать только окно (данные живут в реестре сессий), а облачное окно эфемерно — его файловая система исчезает вместе с контейнером. Значит хранилище обязано быть внешним, и git подходит лучше сервера: он распределённый, версионированный и доступен из любого окна. Append-only строки сливаются без конфликтов, даже когда пишут несколько окон разом.
Сервер добавил бы к этому только точку отказа.
docs/spec.md |
что измеряется, как из этого получается остаток, чего проект не обещает |
docs/storage-setup.md |
подготовка приватного хранилища перед первым замером |
docs/roles.md |
роли: когда каждая включается и что имеет право остановить |
docs/labels.md |
номенклатура меток |
CONTRIBUTING.md |
инварианты, гейты, метки, язык |
SECURITY.md |
что собирается, куда уходит, куда сообщать об утечке |
HISTORY.md |
из-за чего проект появился и какие решения приняты |
.rules/bindings.json |
ответ проекта по каждому правилу общего каталога |
Правила проекта — из общего каталога. Свод, по которому здесь работают,
ведётся в Engineering-Incidents-Playbook,
и каждая запись там несёт свой инцидент и границы применимости. Сколько их —
говорит сам каталог, а не эта строка: число, переписанное сюда, застывает молча
(так «162» пережило четырнадцать новых правил). Ответ этого проекта —
по каждому правилу, а не по тем, до которых дошли руки — лежит в
.rules/bindings.json: принято и чем держится ·
отклонено и почему · нет предмета · ещё не смотрели. Правила, родившиеся здесь,
предлагаются каталогу обратно — .rules/proposals.json.
Ранняя разработка. Собрана первая команда — sample: снимает замер и
дописывает его в приватное хранилище. Отчёта и калибровки пока нет, и они
отказывают вслух, а не возвращают пустоту.
На настоящем материале прогнана половина. Транскриптный сбор проверен на живом транскрипте 2026-09-03 — 3833 строки, 650 ответов, — и первый же прогон нашёл дефект: вывод молчал о 572 отброшенных повторах, то есть о 47% строк с расходом. Реестровая половина и запись в хранилище не прогонялись ни разу: ни одного замера не записано, а самый дорогой класс дефектов здесь — запись в чужой приватный репозиторий с коммитом и пушем.
Порядок работ — эпики #1 (замер → отчёт → калибровка) и #3 (инфраструктура до запуска).
Остаток в процентах инструмент начнёт показывать не раньше, чем наберёт калибровочные точки, и до тех пор будет честно говорить «шкала не откалибрована». Это заложенное поведение, а не недоделка.
Снять замер может только окно: реестр сессий живёт в MCP, и процесс Python
до него не дотягивается по построению. Поэтому окно выгружает ответ реестра в
файл, а инструмент его разбирает — подробности в
docs/spec.md, подготовка хранилища в
docs/storage-setup.md.
MIT — см. LICENSE.