Настройка ZetaAPI в Claude Code
Переключите Claude Code (официальный CLI от Anthropic) на ZetaAPI за 30 секунд и платите 0,3×–0,4× официальной цены, с поддержкой prompt cache.
Обновлено 2026-10-05
Когда это нужно
Claude Code — официальный терминальный CLI от Anthropic; после установки через npm i -g @anthropic-ai/claude-code вы можете интерактивно вызывать Claude в любой локальной папке. ZetaAPI предоставляет эндпоинт /v1/messages, полностью совместимый с официальным API Anthropic, поэтому для переключения достаточно двух обязательных переменных окружения.
Подготовка
- Установлены Node.js 18+ и CLI
@anthropic-ai/claude-code - Получен API-ключ в консоли ZetaAPI (начинается с
sk-) - Баланс аккаунта > $1 (минимальное пополнение)
Настройка
1. Задайте переменные окружения
Добавьте в конфиг shell (~/.zshrc / ~/.bashrc):
export ANTHROPIC_BASE_URL="https://api.staging.cosmos-router.com"
export ANTHROPIC_API_KEY="sk-ваш-ключ-zetaapi"
export CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1
Третью строку, CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1, лучше оставить. Claude Code передаёт аргументы инструментов потоком только при прямом подключении к Anthropic; если ANTHROPIC_BASE_URL указывает на другой адрес, по умолчанию это выключено, и при записи большого файла вывод может пропасть на несколько минут, после чего появится ошибка The response stopped arriving. С этой переменной аргументы инструментов передаются по мере генерации.
Перезагрузите конфиг:
source ~/.zshrc
2. Установка одной командой (опционально)
Если не хотите править конфиг вручную, всё сделает одна команда:
npx --prefer-online zetaapi@latest setup --api-url=https://api.staging.cosmos-router.com claude-code
Она записывает ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN и CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 в блок env файла ~/.claude/settings.json (существующий файл предварительно сохраняется как settings.json.bak.<метка времени>) и проверяет связь. Если в env уже задана CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING, её значение сохраняется. По запросу вставьте Install Token (из диалога «Настройка подключения» / «Подключить новый инструмент» в консоли, начинается с ze_inst_, действует 5 минут) или сразу API Key (sk-); для CI / неинтерактивного запуска добавьте --token=ze_inst_xxx или задайте ZETAAPI_TOKEN.
3. Проверка
В любой папке проекта запустите:
claude
После первого запроса дашборд консоли сразу покажет расход токенов и стоимость вызова.
Частые вопросы
В: Почему я получаю 401 Unauthorized?
Проверьте, что ANTHROPIC_API_KEY — это ключ ZetaAPI (начинается с sk-), а не официальный ключ Anthropic вида sk-ant-.
Если вы настраивали через npx zetaapi setup --api-url=https://api.staging.cosmos-router.com, учётные данные лежат в env.ANTHROPIC_AUTH_TOKEN файла ~/.claude/settings.json — проверяйте этот ключ, а не переменную окружения.
В: При записи большого файла вывод замирает и появляется The response stopped arriving. Что делать?
Claude Code передаёт аргументы инструментов потоком только при прямом подключении к Anthropic. Если ANTHROPIC_BASE_URL указывает на другой адрес, аргументы таких инструментов, как запись файла (например, содержимое файла), приходят одним куском только после полной генерации, поэтому при записи большого файла несколько минут может ничего не приходить, и Claude Code решает, что соединение оборвалось.
Добавьте CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 в профиль оболочки или в блок env файла ~/.claude/settings.json. Если вы меняли профиль оболочки, перезагрузите его (или откройте новый терминал), а затем перезапустите Claude Code. npx zetaapi setup --api-url=https://api.staging.cosmos-router.com claude-code добавляет эту переменную автоматически.
В: Поддерживается ли prompt cache?
Да. Claude Code по умолчанию включает ephemeral cache control; ZetaAPI передаёт исходное поведение кэша без изменений, а чтение кэша тарифицируется по 10% от цены ввода — как у официального API.
В: Почему у Sonnet контекст всего 200K? Как получить полный 1M?
Когда Claude Code обращается к стороннему адресу API, он не может проверить, поддерживает ли эта точка контекст в 1 млн токенов, и поэтому консервативно выделяет 200K. Это поведение клиента, а не ограничение ZetaAPI.
Достаточно один раз указать явно:
/model sonnet[1m]
Можно также ввести /model и выбрать пункт с пометкой 1M context. Маркер [1m] — это только директива Claude Code: он удаляется перед отправкой запроса, поэтому ZetaAPI получает всё то же имя модели claude-sonnet-5. Дополнительная настройка с нашей стороны не требуется.
На ZetaAPI уже работали контексты свыше 600 тыс. токенов для Sonnet и порядка 900 тыс. для Opus. Учтите, что при очень длинном контексте вся история пересылается на каждом ходу, поэтому расход токенов заметно растёт — настраивайте это вместе с порогом compact из следующего пункта.
В: Можно ли отключить автоматический compact?
Да. Добавьте в ~/.claude/settings.json:
"autoCompactEnabled": false
Но обычно лучше поднять порог срабатывания, чем отключать полностью:
/autocompact 500k
Допустимые значения — от 100K до 1M, и они ограничиваются контекстным окном текущей модели. Для скриптов и CI используйте переменную окружения CLAUDE_CODE_AUTO_COMPACT_WINDOW (только число, например 500000); флаг claude --autocompact 500k действует лишь на один запуск.
После полного отключения заполненный контекст приводит к ошибке Prompt is too long и остановке диалога вместо сжатия истории и продолжения. Если compact просто срабатывает слишком часто, поднять порог практичнее, чем отключать его.
В: Что нужно, чтобы вернуться на официальный API?
Удалите или закомментируйте ANTHROPIC_BASE_URL и верните ANTHROPIC_API_KEY к официальному ключу Anthropic. Если вы настраивали через npx zetaapi setup --api-url=https://api.staging.cosmos-router.com, удалите ANTHROPIC_BASE_URL и ANTHROPIC_AUTH_TOKEN из блока env в ~/.claude/settings.json (есть резервная копия .bak.<метка времени>).