Прогнозирование лимитов Claude Code, Codex и Kimi: обзор утилиты claude-limits

Habr AI · оригинал

Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Автор описывает локальную утилиту для мониторинга расхода квот в AI-инструментах, которая строит прогнозы на основе линейной экстраполяции. Статья детально разбирает алгоритмы расчёта, технические решения на языке Nova и ограничения использования неофициальных API.

Материал демонстрирует практический подход к решению проблемы неопределённости в лимитах подписок, предлагая прозрачный алгоритмический метод оценки остатка ресурсов вместо интуитивных оценок.

Работа с современными AI-инструментами, такими как Claude Code, Codex и Kimi Code, часто сопряжена с неопределённостью: пользователи знают текущий расход, но не могут точно предсказать, хватит ли лимита до конца расчётного периода. Внутренняя команда /usage показывает лишь статичный снимок состояния, не отвечая на вопрос о динамике. Для решения этой задачи автор разработал claude-limits — локальный веб-сервер, который агрегирует данные по нескольким аккаунтам и строит два ключевых прогноза: ожидаемый процент расхода к моменту сброса лимита и долю окна, на которую хватит текущей квоты.

Алгоритм прогнозирования основан на линейной экстраполяции, но с важными уточнениями. Скорость расхода рассчитывается не по среднему за всё окно, а по свежей истории: за последний час для сессий и за три дня для недельных или месячных окон. Это позволяет избежать искажений от периодов бездействия в начале периода. Для обеспечения точности расчётов используются целочисленные вычисления в миллионных долях процента, что исключает ошибки округления, характерные для плавающей точки. Если расход не растёт, утилита честно сообщает об отсутствии изменений, а если прогноз превышает 100%, она рассчитывает конкретное время исчерпания лимита.

Особое внимание уделяется качеству данных. Прогноз не строится, если история покрывает менее 5% окна или меньше 30 минут, так как малый объём данных не позволяет сделать надёжных выводов. Также учитывается график работы пользователя: минуты вне рабочих часов имеют меньший вес в расчёте скорости, что предотвращает ложные тревоги в выходные дни. При этом автор подчёркивает, что это эвристика, а не гарантия точности, и при отсутствии данных утилита явно сообщает об этом.

Техническая реализация выполнена на языке Nova, что позволило использовать его уникальные возможности. Эффекты в сигнатурах функций гарантируют, что код не может случайно записать данные в файлы Claude Code, так как соответствующие операции просто не объявлены. Тестирование сети и времени осуществляется через подмену обработчиков прямо в тестах, без необходимости использования мок-фреймворков. Тип Secret для токенов предотвращает их случайное копирование или попадание в логи, выводя вместо значения маркер скрытия.

Утилита опирается на неофициальные эндпоинты API, что является её главным ограничением: любое обновление со стороны провайдеров может нарушить работу. В отличие от аналогов, таких как ccusage или claumon, claude-limits поддерживает сразу три сервиса и предоставляет визуализацию прогнозов в виде штриховки на прогресс-барах. Цветовая кодировка (зелёный, жёлтый, красный) помогает быстро оценить критичность ситуации. Несмотря на молодость языка Nova и наличие ошибок компилятора, проект демонстрирует зрелый подход к разработке инструментов мониторинга, сочетая строгую типизацию с практической полезностью для разработчиков.