OpenCode Free limit reached: ждать или продолжать работу

Практическая схема для Free limit reached и бесплатного 429 в OpenCode: определить активные provider и model, не гадать о сбросе, выбрать ожидание, другую модель или отдельный provider и проверить результат коротким запросом.

Содержание
OpenCode Free limit reached: ждать или продолжать работу

Сообщение Free limit reached или HTTP 429 в OpenCode не означает автоматически, что у всех бесплатных моделей есть единое ежедневное время сброса. Сначала сохраните исходную ошибку, проверьте активные provider и model, а затем ориентируйтесь только на тот reset, который действительно показан в текущем ответе или аккаунте.

Если достоверного времени нет, остаются три рабочих варианта: подождать, выбрать другую доступную сейчас модель через /models или явно перейти на отдельно тарифицируемый provider. Перед возвращением к длинной задаче отправьте короткий безопасный запрос и проверьте ответ, выбранный provider/model и фактическое использование на стороне provider.

Сначала определите ветку по сообщению

Что видноНа что это похожеПервое действие
Free limit reached или FreeUsageLimitError, но без таймераОграничение бесплатного доступаНе придумывать период; записать время, подождать или посмотреть актуальные модели в /models
Go limit reached и реальный обратный отсчётПлатное окно OpenCode GoИспользовать время, показанное именно этому аккаунту, и не переносить его на бесплатные модели
Обычный 429, Too Many Requests или Provider is overloadedЛимит скорости, перегрузка или временная ошибка providerСохранить полный ответ, проверить provider/model, повторить позже и посмотреть статус provider
401, 404 или Model not availableОшибка авторизации, Base URL или Model IDНе ждать reset, а исправить credential, endpoint или модель

Один и тот же HTTP-код может появляться по разным причинам. Поэтому по одному 429 нельзя заключать, что бесплатная квота исчерпана, и тем более нельзя сразу покупать подписку или менять всю конфигурацию.

До переключения сохраните четыре вещи

Зафиксируйте:

  1. Полный текст ошибки, а не только «429».
  2. Текущие provider и model, желательно в формате providerId/modelId.
  3. Доступные response body, тип ошибки, заголовки и retry-after, если OpenCode действительно их показывает.
  4. Время ошибки и часовой пояс, каталог проекта и тип подключения: бесплатный Zen, Go или custom provider.

Следуя документации OpenCode Zen, в TUI выполните /models, чтобы увидеть выбранную запись и список, доступный сейчас. В терминале можно запустить opencode models. Не делайте вывод по старому скриншоту или статье: бесплатная модель могла исчезнуть, сменить статус или стать недоступной вашему аккаунту.

Проверьте и приоритет конфигурации. Документация OpenCode по config указывает, что OpenCode объединяет несколько config-файлов, а проектный opencode.json может перекрыть глобальные настройки. То, что модель A указана глобально, ещё не доказывает, что текущий репозиторий обращается к ней. Ориентируйтесь на текущий проект, выбор в /models и итоговую конфигурацию.

Доверяйте только реально показанному reset

Если в текущей ошибке нет достоверного таймера или абсолютного времени, не додумывайте «через несколько часов», «завтра» или «на следующей неделе».

В открытом и проверенном 2026-10-10 snapshot файла retry.ts из ветки OpenCode dev ошибка FreeUsageLimitError попадает в статическую ветку уведомления о бесплатном лимите. Ветка GoUsageLimitError, напротив, читает заголовок retry-after и формирует обратный отсчёт. Это сверка исходного кода, а не runtime-тест вашей версии OpenCode или вашего аккаунта.

В публичных feature request #53252 и #52894 встречаются примеры точного времени сброса, но это иллюстрации желаемого поведения, а не фактический график бесплатной квоты. Даже закрытый issue сам по себе не доказывает, что изменение вошло в установленную у вас версию.

В документации OpenCode Go, открытой 2026-10-10, отдельно описаны 5-часовые, недельные и месячные окна платного использования. Эти правила Go нельзя использовать как доказательство периода reset для бесплатных моделей.

Практическое правило:

  • Показан таймер или точное время: сохраните текст, часовой пояс и provider, затем сделайте одну проверку примерно в указанное время.
  • Время не показано: считайте его неизвестным, не устраивайте частые повторы и не подставляйте окно другого тарифа.
  • Есть только общий 429: сначала проверяйте throttling или перегрузку provider, пока данные не укажут именно на бесплатный лимит.

Вариант 1: подождать и остаться на той же бесплатной модели

Ожидание подходит, если задача не срочная, отдельные API-расходы нежелательны, а ошибка явно относится к бесплатной квоте.

  1. Запишите время последней неудачи и исходную ошибку.
  2. Остановите непрерывные повторы, чтобы не смешивать квоту с временным rate limit.
  3. При наличии надёжного таймера повторите запрос около указанного времени. Без таймера проверяйте через приемлемый для вас интервал, не обещая фиксированный цикл.
  4. Сначала отправьте короткий запрос, а не возобновляйте задачу, которая читает и меняет множество файлов.

Успех — не запуск OpenCode и не exit code 0. Выбранная модель должна вернуть настоящий ответ, а исходная ошибка не должна появиться снова сразу же.

Вариант 2: выбрать другую модель, доступную сейчас в /models

Если работу нужно продолжить, но исходная модель не обязательна, выберите другую запись, которая реально видна вашему аккаунту и доступна через ожидаемый provider.

Перед переключением проверьте:

  • модель есть в текущем списке, а не только в старой инструкции;
  • запись относится к нужному provider, чтобы смена модели незаметно не стала сменой аккаунта и способа списания;
  • модель подходит задаче — сначала дайте ей небольшой запрос на понимание кода или tool use, и только потом разрешайте изменять репозиторий.

Переключение не гарантирует восстановление. У другой бесплатной модели может быть собственный лимит, региональное ограничение, временное отключение или нехватка мощности. Корректная рекомендация — «выбрать доступную сейчас модель и проверить», а не «любая другая бесплатная модель обязательно заработает».

Вариант 3: явно перейти на отдельно тарифицируемый provider

Этот путь подходит, когда есть дедлайн, допустим отдельный API-расход и нужно отвязать дальнейшие запросы от бесплатной квоты Zen. Это не reset: последующие вызовы идут через другой аккаунт, API Key и учёт использования.

Документация OpenCode по providers подтверждает поддержку custom OpenAI-compatible provider. Минимальная последовательность:

  1. Выполнить /connect, выбрать Other, указать уникальный provider ID и сохранить API Key в поле credential.
  2. В opencode.json задать тот же provider ID, правильный Base URL и фактический Model ID, затем сохранить файл.
  3. Полностью завершить OpenCode и снова запустить его в том же проекте перед проверкой новой конфигурации; не считать, что уже открытый TUI автоматически подхватит новый provider. Если нужен контекст прежней задачи, заранее зафиксировать каталог проекта и нужную задачу или сессию, а после перезапуска безопасно вернуться к ним доступным в вашей среде способом.
  4. После перезапуска выполнить /models, убедиться, что новая запись появилась, и выбрать точный providerId/modelId, а не только отображаемое имя.
  5. Отправить короткий запрос с явным запретом изменять файлы и получить настоящий новый ответ модели.
  6. Проверить у целевого provider журнал запросов, usage или изменение баланса, чтобы подтвердить обработку именно этого запроса. Если соответствующей записи нет, не утверждать, что переключение проверено.

BetterToken — один из возможных вариантов для такой независимой схемы. В его инструкции по OpenCode, открытой 2026-10-10, указан Base URL https://www.bettertoken.ai/v1 и ссылка на модель вида bettertoken/YOUR_MODEL_ID. Не добавляйте /chat/completions к Base URL и убедитесь, что верхнее поле model точно совпадает с реальным ID внутри models.

Граница принципиальна: BetterToken не выдаёт бесплатную квоту Zen и не сбрасывает лимит OpenCode/Zen. Он не гарантирует отсутствие всех 429 и не становится автоматически дешевле без сравнения одинакового объёма использования. Это отдельный API-маршрут, а не исправление бесплатной квоты.

Подтвердите восстановление одним коротким запросом

После ожидания, смены модели или смены provider используйте одинаковый тест:

  1. Ещё раз проверьте выбранный provider/model в интерфейсе.
  2. Попросите вернуть только слово READY и явно запретите изменять файлы.
  3. Сохраните ответ и время; убедитесь, что это новый ответ модели, а не только подтверждение принятой конфигурации или старый кэш.
  4. Для независимого provider проверьте соответствующее изменение в usage, журнале запросов или балансе. Если таких данных нет, не утверждайте, что списание подтверждено.
  5. Убедитесь, что исходная ошибка не повторилась, затем вернитесь к настоящей задаче и сначала выполните её самый маленький осмысленный шаг.

Надёжный PASS требует трёх признаков: настоящий ответ модели, ожидаемый provider/model и проверяемое использование на стороне provider. Успешный разбор config, запуск клиента или чистый exit code отдельно этого не доказывают.

Если короткий запрос всё ещё не проходит

Идите по новой ошибке, а не повторяйте все действия подряд:

  • Снова Free limit reached: квота могла ещё не восстановиться, либо выбор фактически не изменился. Проверьте /models и проектный config.
  • Появился 401: убедитесь, что credential сохранён для нужного provider. Выполните opencode auth list, при необходимости повторите /connect.
  • Появился 404 или Model not available: проверьте Base URL, Model ID и providerId/modelId, затем запустите opencode models.
  • Появился общий 429 или перегрузка: рассматривайте это как throttling provider, уменьшите частоту повторов и проверьте его статус, а не бесплатную квоту Zen.
  • Ошибка обрезана: воспользуйтесь официальной инструкцией OpenCode по диагностике, затем приложите время, provider, model, статус и очищенный от секретов response body.

Никогда не вставляйте API Key в issue, скриншот или чат. Оставьте полезные данные об ошибке, но удалите Authorization headers, токены и другие credentials.

Частые вопросы

Бесплатный лимит OpenCode сбрасывается каждый день в одно время?

Нет надёжного первичного источника, подтверждающего единый ежедневный, недельный или месячный цикл для всех бесплатных моделей. Используйте время из текущего ответа; если его нет, считайте время неизвестным.

Любой 429 означает, что бесплатная квота закончилась?

Нет. Это может быть обычный rate limit, ограничение параллельности или перегрузка provider. Нужны provider, model, response body и тип ошибки.

OpenCode Go — единственный способ продолжить?

Нет. Можно подождать, выбрать другую доступную сейчас модель или явно подключить независимый provider. Go — отдельный платный план, и его окна не доказывают период reset бесплатных моделей.

Переход на BetterToken очистит бесплатный лимит?

Нет. Это независимый provider со своим API Key, Base URL, Model ID и учётом использования. Состояние бесплатной квоты Zen от этого не меняется.

Итог

Не пытайтесь решить Free limit reached угадыванием периода reset. Сначала определите реальный provider/model, затем доверяйте только фактическому таймеру. Без него выбирайте по срочности: ожидание, доступная сейчас модель из /models или явно подключённый отдельно тарифицируемый provider. И только после короткого ответа и проверки usage возвращайтесь к исходной задаче.

Готовы оптимизировать LLM workflow?

Подключите единый API, управляйте ключами и контролируйте расходы на AI-модели в BetterToken.

Начать бесплатно