DEV Community

TechNotes
TechNotes

Posted on

Как запускать AI-агентов по подписке в скриптах и обрабатывать лимиты

Подписка вместо API: ChatGPT, Claude и DeepSeek в своих скриптах

Подписка за 20 долларов на ChatGPT Plus или Claude Pro не заменяет API-ключ автоматически. API-ключи оплачиваются отдельно, а подписочные лимиты рассчитаны на пользователя и могут закончиться во время запуска. В 2026 год официальные клиенты получили поддержку сценариев с подписочными лимитами: OpenAI разрешает запускать Codex через ChatGPT в CI, но правила и доступные модели меняются.

Для собственного скрипта на своей машине подходят официальный CLI, ночной агент с репозиторным отчётом и частный CI для проверки пул-реквестов. Исчерпанный лимит здесь не авария, а штатное состояние, которое скрипт должен распознать и обработать.

Сторонние программы могут использовать лимиты тарифов пользователей, но это не означает, что подойдут закрытые адреса ChatGPT или Claude.ai. Неофициальные клиентские библиотеки тоже исключены. Anthropic в январе отключала сторонние клиенты, включая OpenCode и OpenClaw, а в апреле ввела платные кредиты. 12 ноября компания запретила потребительскую маршрутизацию.

DeepSeek не предлагает чат-подписку, зато DeepSeek API отличается низкой стоимостью. Для отдельных задач это может быть резервным провайдером, но условия доступа стоит сверять на chat.deepseek.com и в US/deepseek-terms-of.

Официальные CLI подходят для неинтерактивных задач

Codex CLI и Claude Code поддерживают неинтерактивный режим. Используйте их вместо закрытых адресов и не копируйте пользовательский sign-in в серверный скрипт. Для серверной задачи нужна отдельная авторизация.

codex exec запускает Codex без диалога. Прогресс он пишет в поток ошибок, а финальный ответ выводит в стандартный поток. Флаг --json включает построчные события, последнее из них содержит расход токенов.

codex exec --json "Проверь изменения в этой ветке и перечисли риски" > run.jsonl
Enter fullscreen mode Exit fullscreen mode

По умолчанию агент не меняет файлы. Если запись нужна, укажите --sandbox workspace-write; полный доступ лучше выдавать только в изолированном контейнере или раннере.

В Claude Code для такого запуска служит -p. Флаг --output-format json возвращает единый JSON-объект, поле result содержит текстовый ответ. Код 0 означает успешное выполнение, ненулевой код означает сбой. Параметр --max-turns ограничивает шаги агента и защищает от бесконечного цикла.

claude -p "Разбери журнал ошибок и предложи три гипотезы" \
  --output-format json --max-turns 5 > run.json
Enter fullscreen mode Exit fullscreen mode

Код на экране монитора

Лимит нужно отличать от обычного сбоя

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

Claude Code сообщает Usage limit reached. ChatGPT-маршрут может вернуть «You have hit your ChatGPT usage limit» и подсказку о времени повтора. Ищите устойчивую подстроку, сохраняйте сырой вывод в журнале и обрабатывайте лимит отдельной веткой.

#!/usr/bin/env bash
# Один запуск агента: лимит — ждём и повторяем, другая ошибка — выходим.
set -u
for attempt in 1 2 3; do
  if claude -p "$1" --output-format json --max-turns 5 > out.json 2> err.log; then
    exit 0
  fi
  if grep -qi "usage limit" out.json err.log; then
    echo "лимит подписки, жду час" >&2
    sleep 3600
    continue
  fi
  echo "сбой не из-за лимита, смотрите err.log" >&2
  exit 1
done
exit 2
Enter fullscreen mode Exit fullscreen mode

Для срочной задачи переключайтесь на API-ключ: у Codex после подписочного лимита он оплачивается по тарифам API. Задайте месячный лимит бюджета и переключатель провайдера в настройках. Единственный подписочный режим рискован, потому что в 2026 год правила менялись раз в один–два месяца.

Авторизацию и модели нужно контролировать отдельно

Короткий ключ доступа живёт несколько дней, а ключ обновления выдаёт новый короткий ключ. OpenAI при продлении входа заменяет ключ обновления, поэтому старая копия перестаёт работать. Храните файл входа в одном месте и продлевайте вход одним процессом: на второй машине скопированный файл может уже не сработать.

Файл ~/.codex/auth.json равен паролю. Не размещайте его в репозитории, образе контейнера, общем CI и логах. Это относится и к third-party инструментам, которые читают входные данные без явного контроля.

Подписочные модели меняются чаще, чем API-модели. GPT-5.5 исчезла из Codex, хотя при ChatGPT-входе была доступна до 14 октября. Claude Pro также даёт отдельные кредиты Fable 5.1. Закладывайте в скрипт настройку модели и понятную ошибку «модель недоступна в подписке», чтобы не получить неясный сбой на десятом шаге.

Codex отдаёт токены в завершении хода, Claude Code показывает их в JSON-объекте. Ведите журнал расхода: неделя наблюдений покажет, сколько окна потребляет скрипт и сколько он стоил бы через API. Если API дешевле подписки, от подписки можно отказаться.

Для проверки правил и интерфейсов ориентируйтесь на openai.com, help.openai.com, claude.com/pricing, support.claude.com, anthropic.com/legal/aup, learn.chatgpt.com, GitHub, TechCrunch, VentureBeat и BleepingComputer. Учитывайте, что usage-based, fraud-prevention, non-human, CI/CD, Non-interactive, SDK, IDE, PayPal, WeChat, Мир, СБП, UTC, MIT, CC BY 2.0, CC BY-SA 3.0, BY-SA и CC0 не описывают замену подписки на API.

GPT-6, GPT-6.1, DevDay, I/O, SuperGrok, V4.1, --output-format json, --max-turns, --json, codex exec, claude -p, -p, JSON, CLI, AI и API требуют проверки доступности в конкретном клиенте перед запуском.

В полной версии также разобраны различия подписки и API, лимиты подписок и условия трёх компаний.

Полная версия: https://dzen.ru/a/atgHEEPLpUIMxO7M

Текст подготовлен с использованием искусственного интеллекта.

Top comments (0)