MAATRIX / Блог / Continue: установка ИИ-помощника для кода со своим сервером

Continue: установка ИИ-помощника для кода со своим сервером

Continue: установка ИИ-помощника для кода со своим сервером

MAATRIX

Copilot и Cursor решают задачу «ИИ пишет код рядом со мной» одним способом: подпиской в валюте и жёсткой привязкой к одному облачному провайдеру модели. Смените план — потеряете доступ. Провайдер поднимет цену или ограничит регион — доступ так же оборвётся. Continue устроен иначе: это открытое расширение, которое само по себе ничего не решает за вас — оно просто соединяет редактор с любой моделью, какую вы укажете, в том числе с той, что крутится на вашем собственном сервере. Ниже — установка Continue, варианты подключения моделей и настройка связки с LiteLLM на VPS, которая даёт единую точку входа вместо кучи разрозненных API-ключей.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Continue и чем он отличается от Copilot и Cursor

Continue — это открытый исходный код: расширение для VS Code и для семейства IDE на JetBrains (IntelliJ IDEA, PyCharm, WebStorm и остальные), которое добавляет в редактор автодополнение кода, чат по проекту и команды рефакторинга. Логика работы простая: расширение перехватывает то, что вы печатаете или выделяете, формирует промпт и отправляет его на эндпоинт модели, который вы сами прописали в конфиге.

Ключевое отличие от Copilot и Cursor — в том, кто выбирает модель. У Copilot модель одна и зашита в продукт GitHub, у Cursor выбор шире, но всё равно ограничен списком, который поддерживает сам Cursor, и тарифом. Continue не привязан ни к одному провайдеру: в конфиге можно указать облачную модель по API-ключу — OpenAI, Anthropic, любую другую с OpenAI-совместимым API — или локальную модель, поднятую на своём железе через Ollama, vLLM или LiteLLM. Расширение одинаково общается что с облаком, что со своим сервером, потому что везде говорит на одном протоколе.

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

Установка расширения Continue из маркетплейса VS Code

Ставится Continue как обычное расширение, без отдельного бинарника и без демона в фоне.

  1. Откройте VS Code, перейдите на вкладку Extensions (значок квадратов на боковой панели или сочетание Ctrl+Shift+X / Cmd+Shift+X).
  2. В строке поиска введите Continue — в выдаче нужен пункт от организации Continue Dev.
  3. Нажмите Install. После установки в боковой панели появится отдельная иконка Continue — через неё открывается чат и настройки.
  4. При первом запуске расширение предложит быстрый старт с готовым облачным провайдером. Этот шаг можно пропустить — свои модели прописываются вручную в конфиге, разбор ниже.

Для JetBrains-редакторов путь тот же по смыслу: в Settings → Plugins ищете Continue и ставите из Marketplace. Логика конфигурации и формат файла в обоих случаях одинаковые, дальнейшие примеры одинаково применимы что к VS Code, что к IntelliJ.

Отдельно проверьте версию редактора: Continue активно развивается, и совсем старые сборки VS Code иногда не тянут актуальный релиз расширения. Если Install неактивен или расширение не подгружает конфиг — первым делом обновите сам редактор, а не переустанавливайте плагин.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Развернуть LiteLLM

Варианты подключения моделей: напрямую или через свой сервер

У Continue два принципиально разных способа получить модель.

Напрямую по ключу. В конфиге указывается провайдер (например, openai или anthropic), модель и API-ключ. Просто, работает сразу, но у этого пути есть накопительный минус: каждый ключ живёт в конфиге отдельно, лимиты и биллинг у каждого провайдера свои, а смена модели с одного провайдера на другого — это правка конфига в каждом проекте, где Continue установлен, плюс новый ключ, который снова нужно где-то хранить.

Через свой сервер с LiteLLM как единым шлюзом. LiteLLM — прокси, который стоит перед разными моделями (облачными и локальными) и отдаёт их все через один OpenAI-совместимый эндпоинт со своим ключом. Continue в этом случае знает только один адрес — ваш сервер — а какая модель за ним реально отвечает, решается на стороне LiteLLM.

Разница на практике ощутима в трёх местах:

  • Переключение моделей на лету. Добавили новую модель в конфиг LiteLLM на сервере — она сразу доступна во всех проектах, где Continue смотрит на этот эндпоинт, без правки локальных файлов на каждой машине.
  • Единая точка биллинга и лимитов. Вместо разрозненных ключей у каждого провайдера — один список ключей и бюджетов в LiteLLM, с общей статистикой расхода по всем моделям сразу.
  • Отвязка от конкретного облака. Если завтра выгоднее окажется другая модель или провайдер поднимет цену, меняется конфиг на сервере, а не привычки всей команды.

Для одиночного разработчика с одной моделью прямое подключение по ключу — рабочий и достаточный вариант. Как только моделей больше одной или редакторов и участников больше одного, схема со своим сервером и LiteLLM окупается почти сразу же за счёт того, что не нужно синхронизировать ключи вручную. Сравнение LiteLLM с готовыми агрегаторами вроде OpenRouter разобрано отдельно в материале LiteLLM против OpenRouter: что выгоднее и когда, а сколько ресурсов закладывать под сам прокси — в статье Сколько RAM нужно для LiteLLM Gateway.

Настройка LiteLLM на VPS как прокси

Разворачивать LiteLLM с нуля в этом материале не нужно — подробная пошаговая установка есть в отдельной статье Как установить и настроить LiteLLM на VPS. Здесь — минимум, достаточный, чтобы Continue было к чему подключаться.

Базовый запуск через pip выглядит так:

pip install 'litellm[proxy]'
litellm --config /etc/litellm/config.yaml --port 4000

Файл config.yaml описывает, какие модели прокси отдаёт наружу и какими ключами пользуется сам, обращаясь к реальным провайдерам:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: sk-openai-xxxxxxxx
  - model_name: claude-sonnet
    litellm_params:
      model: anthropic/claude-sonnet-4-5
      api_key: sk-ant-xxxxxxxx

general_settings:
  master_key: sk-litellm-master-xxxxxxxx

master_key — тот единственный ключ, который дальше увидит Continue. Реальные ключи OpenAI и Anthropic остаются на сервере и в клиентский конфиг не попадают. Порт 4000 наружу лучше не открывать напрямую — как и с любым API-сервером, правильная связка это Nginx с HTTPS-сертификатом перед LiteLLM и фаервол, закрывающий прямой доступ к порту снаружи.

Конфигурация config.json Continue со своим эндпоинтом

Continue хранит настройки в конфигурационном файле, доступном через команду Continue: Open Config из палитры команд редактора (Ctrl+Shift+P / Cmd+Shift+P) либо через шестерёнку в боковой панели расширения. Для подключения к своему LiteLLM-прокси модель описывается как OpenAI-совместимый провайдер с адресом вашего сервера вместо адреса OpenAI:

{
  "models": [
    {
      "title": "Мой сервер — GPT-4o",
      "provider": "openai",
      "model": "gpt-4o",
      "apiBase": "https://ai.example-domain.io/v1",
      "apiKey": "sk-litellm-master-xxxxxxxx"
    },
    {
      "title": "Мой сервер — Claude Sonnet",
      "provider": "openai",
      "model": "claude-sonnet",
      "apiBase": "https://ai.example-domain.io/v1",
      "apiKey": "sk-litellm-master-xxxxxxxx"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Автодополнение",
    "provider": "openai",
    "model": "gpt-4o",
    "apiBase": "https://ai.example-domain.io/v1",
    "apiKey": "sk-litellm-master-xxxxxxxx"
  }
}

Три момента, на которые стоит обратить внимание:

  • provider: "openai" указывается даже для моделей Anthropic — потому что Continue обращается не напрямую к Anthropic, а к LiteLLM, а тот отдаёт единый OpenAI-совместимый интерфейс независимо от того, какая модель реально отвечает.
  • model в конфиге Continue должен совпадать с model_name в config.yaml LiteLLM, а не с внутренним именем модели у провайдера — это то самое поле, по которому прокси решает, куда маршрутизировать запрос.
  • tabAutocompleteModel задаётся отдельно от списка моделей чата и обычно указывает на более быструю и дешёвую модель — автодополнение срабатывает на каждое нажатие клавиши, и гонять на это тяжёлую модель нерационально по деньгам и по задержке.

После сохранения конфига Continue переподхватывает настройки без перезапуска редактора — новые модели сразу появляются в выпадающем списке над окном чата.

Практическое использование: автодополнение, чат, объяснение и рефакторинг

С рабочим конфигом Continue закрывает те же сценарии, что и Copilot с Cursor, только через выбранную вами модель.

Автодополнение кода. Работает как призрачный текст (ghost text) прямо в редакторе, по мере набора — модель предлагает продолжение строки или блока, Tab принимает предложение. Именно этот сценарий чувствительнее всего к задержке ответа, поэтому для него обычно берут отдельную, более быструю модель.

Чат по коду. Боковая панель с диалогом, куда можно подтягивать контекст: конкретный файл, выделенный блок, весь открытый проект через специальные команды контекста (@file, @codebase и подобные). Модель отвечает с учётом реального кода, а не только текста вопроса.

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

Рефакторинг по команде. Выделяете блок, пишете инструкцию текстом («вынеси в отдельную функцию», «перепиши на async/await», «добавь обработку ошибок») — Continue формирует диff, который можно принять целиком, частично или отклонить. Ничего не применяется к файлу автоматически без подтверждения.

Все эти режимы используют модели из одного и того же config.json — если чат и автодополнение указывают на один и тот же сервер LiteLLM, переключение моделей в интерфейсе Continue происходит без единой правки конфига.

Ограничения и нюансы связки со своим сервером

У подхода со своим сервером есть обратная сторона, о которой стоит знать заранее.

Сетевая задержка. Автодополнение и чат нативных облачных эндпоинтов OpenAI и Anthropic оптимизированы под минимальный отклик и физически ближе к массовому трафику. Запрос к своему серверу добавляет дополнительный сетевой прыжок, и на медленном автодополнении, срабатывающем на каждое нажатие клавиши, разница в десятки-сотни миллисекунд заметна на глаз. Для чата и рефакторинга, где ответ ждут секундами, а не долями секунды, эта разница обычно не критична.

Локация сервера решает половину задержки. Если основная аудитория и сами разработчики физически в России, а сервер стоит в Лондоне или в США, каждый запрос идёт через океан или как минимум через границу — и наоборот. Выбирайте локацию VPS ближе к тем, кто реально пишет код через Continue, а не к тому, где физически находятся облачные API моделей — LiteLLM всё равно обращается к ним с сервера, а не с ноутбука разработчика.

Единая точка отказа. Пока модель ходит напрямую к OpenAI, авария в одном облаке ломает только эту модель. Когда весь трафик идёт через один сервер с LiteLLM, авария или простое обслуживание этого сервера временно останавливают доступ ко всем моделям сразу для всех, кто на него завязан. На практике это решается резервным API-ключом напрямую к провайдеру про запас, прописанным вторым пунктом в models конфига Continue.

Ключ LiteLLM — это одна точка компрометации вместо нескольких. Утечка master_key даёт доступ сразу ко всем моделям за прокси. Ротация ключа и ограничение бюджета на каждый выданный ключ в LiteLLM — не опция, а обязательная часть настройки, если сервером пользуется больше одного человека.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Развернуть LiteLLM

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

Continue бесплатен?

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

Можно ли использовать Continue вообще без своего сервера?

Да, расширение прекрасно работает с прямым подключением по API-ключу к OpenAI, Anthropic или другому провайдеру. Свой сервер с LiteLLM нужен не для базовой работы, а для удобства, когда моделей и проектов становится больше одной-двух.

Работает ли Continue офлайн?

Только если модель за эндпоинтом сама локальная и без выхода в интернет — например, поднятая через Ollama на том же сервере. Само расширение всегда обращается к какому-то HTTP-эндпоинту, будь то облако или ваш сервер.

Чем LiteLLM лучше, чем просто вписать ключ OpenAI в config.json Continue?

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

Нужен ли отдельный сервер под LiteLLM, если модели всё равно облачные?

Формально нет — можно подключаться напрямую. Но даже проксируя чисто облачные модели, отдельный сервер даёт единую точку биллинга, ограничение бюджета по ключам и защиту реальных API-ключей провайдеров от попадания в конфиги на рабочих машинах разработчиков.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.