Continue.dev: подключение к шлюзу

Continue.dev настраивается файлом config.yaml, а не формой в интерфейсе — из-за этого легко оставить старый apiBase или лишний слеш. Разбираем рабочий конфиг.

4 мин · · Обновлено · IDE

Continue.dev — расширение для VS Code и JetBrains, которое настраивается файлом config.yaml, а не формой с полями. Это удобно для версионирования конфига, но и создаёт свой источник ошибок: строка apiBase может остаться от старого провайдера и тихо ломать все запросы.

Где лежит конфиг

Откройте Continue → значок шестерёнки → Open Assistant Configuration, или найдите файл напрямую: ~/.continue/config.yaml. Модели задаются списком в секции models.

Anthropic-провайдер

bash
models:
  - name: Claude Opus 5.5
    provider: anthropic
    model: claude-opus-5-5
    apiKey: fetch_ваш_ключ
    apiBase: https://api.zukko.pro/v1/

Для Anthropic-провайдера apiBase — с /v1/ на конце (вместе с завершающим слешем): Continue дописывает к нему только messages и сам добавляет заголовок anthropic-version. Без /v1/ запросы уйдут мимо /v1/messages и вернут 404.

OpenAI-совместимый провайдер

bash
models:
  - name: GPT 5.6 Sol
    provider: openai
    model: gpt-5.6-sol
    apiKey: fetch_ваш_ключ
    apiBase: https://api.zukko.pro/v1
  - name: GLM 5.3
    provider: openai
    model: glm-5.3
    apiKey: fetch_ваш_ключ
    apiBase: https://api.zukko.pro/v1

Здесь apiBase тоже с /v1: провайдер openai в Continue ходит на /chat/completions относительно указанного base URL и сам ничего не дописывает и не убирает.

Можно держать оба блока в одном config.yaml и переключаться между моделями прямо в интерфейсе Continue, не трогая файл.

Проверка ключа отдельно от Continue

Если после сохранения конфига Continue не отвечает, проверьте ключ напрямую:

bash
curl https://api.zukko.pro/v1/messages \
  -H "Authorization: Bearer fetch_ваш_ключ" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"claude-sonnet-5","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'

Заголовок anthropic-version: 2023-06-01 обязателен для /v1/messages — без него запрос может отклоняться ещё до проверки ключа, и тогда причина 401 или 400 не в вашем fetch_..., а именно в отсутствующем заголовке.

YAML — источник тихих ошибок

Отступы в YAML значимы: если apiKey съехал на уровень выше или ниже, Continue либо не подхватит модель вообще, либо отправит запрос без ключа, и тогда вернётся 401 с сообщением про отсутствующий ключ, а не про неверный. Проверить синтаксис можно локально:

bash
python3 -c "import yaml, sys; yaml.safe_load(open('config.yaml'))"

Если команда падает с ошибкой — до Continue дело даже не доходит, чините отступы.

Расшифровка ошибок

  • 401 — ключ не принят или не передан: {"error":{"message":"Invalid API key. Use Authorization: Bearer fetch_*","type":"authentication_error"}}.
  • 402 — баланс пуст: {"error":{"message":"Недостаточно средств на балансе","code":"insufficient_balance"}}. Списание проверяется до обращения к модели, так что неудачная попытка бесплатна.
  • 404 — почти всегда лишний или недостающий /v1 в apiBase, реже — опечатка в model.
  • 400 model_retired — модель снята с обслуживания, замена названа прямо в тексте ошибки.
  • 503 model_disabled — модель выключена в каталоге; замените её в config.yaml на одну из актуальных.
  • 429 — от Zukko это только лимит конкретного ключа (key_daily_limit_reached со сбросом в 00:00 UTC / key_monthly_limit_reached), если он задан в кабинете на странице ключа; общего rate limit на шлюзе нет, прочие 429 приходят от провайдера модели.

Сейчас доступны claude-opus-5-5, claude-sonnet-5, gpt-5.6-sol, gpt-5.6-luna, glm-5.3 и glm-5.3-flash; актуальный список — GET https://api.zukko.pro/v1/models. Цены и лимиты без ключа:

bash
curl https://api.zukko.pro/v1/models/info

Этот эндпоинт, в отличие от /v1/models, отдаёт ещё лимиты и цены — удобно сверять перед тем, как прописывать модель в конфиге.

Что настроить дополнительно

Для длинных диалогов в Continue полезно включить кэш ответов — заголовок в Continue напрямую не выставить через config.yaml, но если модель вызывается с temperature: 0 (обычно так и есть при автодополнении кода; для моделей Claude это не подходит — они могут отклонить temperature, отличный от 1), полностью одинаковые запросы одного пользователя (совпадает всё тело) и так кэшируются на срок до 7 суток, повторный ответ приходит мгновенно и бесплатно.

На странице ключа в кабинете https://zukko.pro/app/api-keys можно задать дневной или месячный лимит расхода в долларах и ограничить список разрешённых моделей — стоит сделать сразу, если ключ лежит в конфиге, который синхронизируется между несколькими машинами.

Пополнение баланса — СБП, карта через PayPear, крипта, иностранная карта Mastercard EU через Fride (комиссия около 13%, суммы $2–$594); минимум — $1. Разовый бонус $0.50 начисляется за подписку на Telegram-канал @zukkopro — привяжите Telegram в кабинете, подпишитесь и нажмите «Проверить» (один раз на Telegram-аккаунт). При обычной регистрации стартового баланса нет.

По вопросам — https://t.me/zukkopro?direct.

Бесплатный подсчёт токенов для Anthropic-модели

Если в config.yaml настроена модель через провайдер anthropic, можно заранее узнать вес запроса в токенах, не тратя баланс — эндпоинт /v1/messages/count_tokens только считает, но не выполняет запрос:

bash
curl https://api.zukko.pro/v1/messages/count_tokens \
  -H "Authorization: Bearer fetch_ваш_ключ" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"текст запроса"}]}'

Полезно, когда Continue формирует контекст из нескольких открытых файлов сразу — так вы увидите итоговый размер до отправки, а не после ошибки о превышении контекста.

Веб-поиск для моделей без него

Если в конфиге стоит модель без встроенного поиска в интернете — например, GLM — а задаче в чате Continue нужны свежие данные, тем же ключом можно вызвать POST /v1/web-search отдельно и вставить результат в диалог вручную. Это отдельный эндпоинт, не связанный с основной моделью в config.yaml.

Если конфиг общий на несколько человек

config.yaml из Continue легко положить в общий репозиторий команды вместе с остальными настройками проекта — так делают, чтобы у всех был одинаковый список моделей. В этом случае обязательно заведите на ключ лимиты в кабинете и посмотрите GET /v1/usage — история списаний с курсорной пагинацией (общая на весь аккаунт, по всем ключам) покажет, сколько тратит команда суммарно, а не только вы лично.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.