Continue — открытый AI-ассистент для программирования с расширением VS Code, плагином JetBrains и CLI, который подключается к собственному или стороннему API по OpenAI-совместимому протоколу. Ошибка на первом же запросе после настройки шлюза — обычное дело; чаще всего проблема кроется на пяти уровнях: учётные данные, адрес, ID модели, квота и сеть. Правильный порядок — сначала статус-код, затем воспроизведение минимальным запросом, и только потом изменения модели и контекста. Ниже — готовый к копированию базовый config.yaml и чек-лист диагностики.
О статусе: в 2026 году Continue была приобретена Cursor, официальный репозиторий переведён в режим только для чтения и больше активно не поддерживается. Существующие установки и форки сообщества работают, но поведение версий может остаться на уровне до покупки. Статья основана на конфигурации
config.yaml, распространённой по состоянию на октябрь 2026 года; подход к диагностике применим и к старым версиям.
1. Сначала уровни: где именно возникает ошибка
Не меняйте модель при первом же сообщении об ошибке — начните с классификации по статус-коду.
| Статус/симптом | Обычное значение | Что проверить сначала | Повторять? |
|---|---|---|---|
| 401 | Ключ отсутствует, неверен, недействителен или нет прав | Ключ, поле аутентификации, состояние аккаунта | Нет |
| 403 | У ключа нет прав на модель или доступ заблокирован политикой | Права на модель, настройки команды | Нет |
| 404 | Неверный путь или модель не существует | apiBase, ID модели |
Нет |
| 400/413 | Неверный формат запроса или слишком длинный контекст | Контекст, параметры, max_tokens |
После исправления |
| 429 | Превышены частота, параллельность или квота токенов | Потребление, общий ключ, стратегия повторов | С задержкой |
| 5xx | Ошибка сервера или перегрузка шлюза | Состояние сервиса, ID запроса | С задержкой |
| Таймаут/сбой соединения | DNS, TLS, прокси, firewall или потоковая цепочка | Сеть и прокси | После исправления |
При диагностике фиксируйте один и тот же ключ, адрес и ID модели и меняйте только один параметр за раз; если изменить три сразу, восстановление не объяснит причину.
2. Базовая конфигурация: в config.yaml меняем только три вещи
Глобальный каталог конфигурации Continue — ~/.continue (macOS/Linux) или %USERPROFILE%\.continue (Windows). При наличии config.yaml он загружается приоритетнее старого config.json; смешивать форматы нельзя. Рабочий OpenAI-совместимый пример:
name: zsqh-gateway
version: 0.0.1
schema: v1
models:
- name: Командная чат-модель
provider: openai
model: <ID модели, скопированный из списка>
apiBase: https://api.zhongshangqihang.com/v1
apiKey: <ваш API-ключ>
roles:
- chat
- edit
- apply
capabilities:
- tool_use
Частые ошибки:
- На верхнем уровне обязательны
name,version,schema: v1;models— список, неверный отступ ломает разбор. - Для совместимого шлюза
provider—openai;apiBaseобычно указывают до/v1, не добавляя/chat/completions. modelдолжен точно совпадать с ID в списке моделей шлюза, включая регистр, дефисы и номер версии.rolesопределяют, отвечает ли модель за чат, редактирование или применение патчей; автодополнение (autocomplete) предъявляет другие требования к возможностям интерфейса, и обычная чат-модель может не подойти.- Для вызова инструментов в режиме агента добавьте
capabilities: [tool_use], иначе чат будет работать, а инструменты — нет. Если после сохранения ничего не изменилось, перезагрузите окно IDE и проверьте логи.
3. 401: сначала ключ, потом поле аутентификации
401 означает, что аутентификация не прошла проверку — это не связано с возможностями модели или контекстом. Проверяйте по порядку:
- Скопирован ли ключ целиком, нет ли пробелов, переводов строк или кавычек по краям. При копировании из чата чаще всего попадают скрытые символы.
- Записан ли ключ в поле
apiKeyи согласован ли он с заголовком аутентификации вrequestOptions.headers, без дублирования и конфликтов. - Не удалён ли ключ, не отключён и не истёк ли он; есть ли на аккаунте доступный баланс. Некоторые шлюзы при недостатке баланса возвращают 401 или 403 — смотрите тело ошибки.
- Указывает ли
apiBaseна среду, которой принадлежит ключ. Ключ тестовой среды на продакшн-адресе обычно тоже даёт 401. - Действительно ли загрузился файл конфигурации. Если вы правите
config.json, а загружаетсяconfig.yaml, возникает ощущение «ничего не меняется».
Проверьте адрес и ключ минимальным запросом, исключив клиент Continue:
export API_KEY="sk-ваш-ключ"
curl -sS -o /tmp/continue_resp.json -w "%{http_code}\n" \
"https://api.zhongshangqihang.com/v1/chat/completions" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"<ID модели>","messages":[{"role":"user","content":"ping"}],"max_tokens":16}'
cat /tmp/continue_resp.json
Код 200 означает, что ключ, адрес и модель в целом работают; при 401 попробуйте тестовый вход в консоли шлюза и не запускайте автоматические повторы.
4. 404: Base URL и ID модели делят ответственность пополам
404 не всегда означает, что модель снята с обслуживания; чаще всего это ошибка в пути:
- В
apiBaseнет/v1, запрос попадает на веб-маршрут сайта и возвращает HTML или 404. - В
apiBaseуказан/v1/chat/completions, клиент добавляет путь ещё раз — получается дублирование. - Адрес консоли принят за API-адрес, домен с опечаткой или в OpenAI-совместимое поле вставлен путь Anthropic
/v1/messages.
ID модели тоже даёт 404 или model_not_found:
- Регистр, дефисы и номер версии должны точно совпадать со списком моделей.
- Модель может быть недоступна текущему аккаунту или тарифу, либо иметь разные ID в разных протоколах.
- Интерфейс настроек может сохранить ID, но шлюз его не признаёт — проверяйте реальным запросом.
При диагностике сначала откройте /v1/models (если шлюз его предоставляет) и скопируйте ID из ответа, не вводите вручную.
5. 429: ограничение скорости — это не недостаток баланса
429 означает превышение частоты, параллельности или квоты токенов. Типичные сценарии:
- Превышено число запросов или токенов в минуту, либо параллельных соединений.
- Несколько человек используют один ключ, или агент непрерывно читает файлы и выполняет команды, отправляя много запросов за короткое время.
- Автодополнение срабатывает слишком часто — запрос уходит после каждых нескольких нажатий.
- Повторы без задержки усиливают поток ошибок и создают шторм; длинные контекстные запросы также занимают параллельные слоты.
Сначала смотрите заголовки и тело ошибки, а не удваивайте попытки. При наличии Retry-After ждите указанное время; без него используйте экспоненциальную задержку со случайным разбросом; для 401, 403, 404 повторы не нужны. Если один ключ обслуживает несколько сервисов, разделите его по проектам; для циклов агента задайте максимум раундов и лимит.
6. Таймауты, обрывы потока и прокси
Таймаут обычно не возвращает HTTP-статус: запрос долго не отвечает, появляются fetch failed, ECONNRESET или ответ обрывается на середине. Порядок проверки:
- Сначала отправьте не потоковый запрос с коротким контекстом. Если он проходит, проблема в потоковой цепочке или промежуточном прокси.
- Проверьте напрямую через
curl -N, исключив клиент Continue; одновременно проверьте, не буферизует ли прокси SSE-ответ. - Проверьте цепочку сертификатов. При TLS-инспекции корпоративного прокси укажите CA через
requestOptions.caBundlePath;verifySsl: falseгодится только для временной отладки. - Проверьте точность системного времени: большое расхождение ломает проверку сертификата.
- Для длинных задач задайте таймаут и максимум раундов; агент отправляет много запросов подряд, и зависшее соединение выглядит как «бесконечная загрузка». Названия полей таймаута зависят от версии.
Не используйте ping для проверки доступности API: он подтверждает только достижимость хоста, но не корректность TLS и пути.
7. Переполнение контекста и слишком большое тело запроса
Переполнение контекста обычно возвращает 400 или 413, в теле появляются context_length_exceeded, maximum context length. Continue отправляет открытые файлы, фрагменты поиска, ссылки и историю диалога вместе, поэтому фактический контекст часто длиннее, чем кажется.
Что делать:
- Исключите артефакты сборки, логи и каталоги зависимостей через
.continueignoreили настройки индексации. - Закройте нерелевантные вкладки, длинные документы сначала суммаризируйте, длинные диалоги начинайте заново.
- Снизьте
max_tokensна запрос, сначала проверьте цепочку коротким запросом, затем постепенно удлиняйте. - Если ошибка возникает только в большом репозитории, сначала подозревайте, что поиск добавил слишком много фрагментов.
8. Как сохранять логи IDE для диагностики
В VS Code откройте палитру команд и выберите «Developer: Toggle Developer Tools», чтобы увидеть вывод Console; для подробных логов включите «Continue: Enable Console» и перезагрузите окно. В JetBrains смотрите ~/.continue/logs/core.log, логи IDE — в «Help > Show Log».
В логах фиксируйте минимум: время, статус, код ошибки, ID модели, хост apiBase, ID запроса, длительность и число повторов. ID запроса обычно находится в заголовках ответа и может называться request-id, x-request-id или x-oneapi-request-id — ориентируйтесь на фактический ответ шлюза. Не записывайте полный ключ, промпты и пользовательский код; в ключе оставляйте первые и последние четыре символа.
Пример рабочей строки лога:
2026-10-19T10:12:33+08:00 status=429 code=rate_limit_exceeded model=<ID модели> host=api.zhongshangqihang.com request_id=... latency_ms=1840 retry=2
9. Чек-лист диагностики
- Запишите исходный текст ошибки, статус, время и ID запроса.
- Воспроизведите командой
curlиз статьи и проверьте, возникает ли проблема только внутри Continue. - Проверьте, что загружается —
config.yamlилиconfig.json, и корректны ли отступы YAML. - Проверьте, что
apiBaseзаканчивается на/v1, а ID модели скопирован из списка. - Проверьте новый ключ, чтобы исключить его недействительность, квоту или командную политику.
- Сначала используйте не потоковый запрос с коротким контекстом, затем постепенно возвращайте потоковый режим и длинный контекст; при необходимости смените сеть или прокси.
- Если всё перечисленное прошло, передайте логи и шаги воспроизведения в поддержку шлюза или плагина.
10. Частые вопросы
Ключ работает в другом клиенте, а в Continue даёт 401?
Сначала проверьте, в то ли поле он введён, затем — действительно ли загружается config.yaml. При совместном существовании старого config.json и нового config.yaml легко править не тот файл; если команда ограничивает сторонние ключи, локальная конфигурация тоже не поможет.
404 всегда означает, что модель отключена?
Нет. Чаще всего в apiBase не хватает или лишний /v1, либо ID модели содержит опечатку. Сначала откройте список моделей и скопируйте ID.
429 — это недостаток баланса?
Не обязательно. 429 означает превышение скорости или квоты; при недостатке баланса могут возвращаться 401, 402 или 403 — ориентируйтесь на тело ошибки и страницу счёта.
Почему падает только потоковый режим или автодополнение?
Сначала подозревайте буферизацию прокси, таймаут простоя и различия возможностей интерфейса. Для потока сравните с не потоковым запросом; при сбое автодополнения проверьте, поддерживают ли модель и интерфейс autocomplete или FIM, и не назначайте чат-модель на роль autocomplete.
Continue больше не поддерживается — стоит ли её настраивать?
Существующие установки и форки сообщества работают, семантика ошибок остаётся той же, что у OpenAI-совместимых интерфейсов. Для нового проекта с долгой поддержкой стоит оценить активно развивающуюся альтернативу; если вы просто используете текущую среду, достаточно пройти по порядку из статьи.
Что дальше
Создайте тестовый ключ в ZSQH AI Gateway, прогоните команды curl из статьи для аутентификации, модели и потока, затем заполните config.yaml. Модели и цены — в тарифах на модели, они меняются вслед за поставщиками; при диагностике сначала фиксируйте переменные, потом заменяйте их по одной.
Читайте также:
- Альтернативы Continue и миграция
- Настройка Cline: Base URL, ключ и модель
- Ошибки Roo Code при работе с API
Примечание о товарных знаках: Continue — товарный знак Continue Dev, Inc.; Cursor, Anysphere, OpenAI, Anthropic, Claude и другие названия принадлежат их правообладателям. Статья носит технический характер и не означает аффилированности или партнёрства с указанными компаниями. Статус продукта, тексты ошибок и поведение интерфейсов могут меняться — сверяйтесь с официальной документацией и фактическими ответами.
