Continue.dev: превращаем VS Code в IDE с AI-ассистентом

opensourceitaivscodecontinuellm
← Back to Blog

Введение: Когда Copilot стоит денег, а хочется локальной LLM

GitHub Copilot — отличный инструмент. Но он платный (10$/мес за Individual), требует интернета и привязывает вас к модели от Microsoft. Если вы хотите использовать локальную LLM — Llama, Mistral, Qwen — прямо в VS Code, вам нужен Continue.dev.

Continue — это open-source расширение для VS Code (и Neovim, и JetBrains), которое подключается к любой LLM-бэкенду: Ollama, llama.cpp, vLLM, OpenAI, Anthropic. Вы получаете функционал Copilot — бесплатно, приватно, с моделями на вашем компьютере.

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

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

Continue.dev — это open-source (лицензия Apache 2.0) AI-ассистент для разработчиков, который:

  1. Работает с любой LLM — локальной (Ollama, llama.cpp) или облачной (OpenAI, Anthropic, Gemini)
  2. Полностью кастомизируем — Modelfile-подобная конфигурация в JSON, свои промпты, свои инструменты
  3. Работает офлайн — если бэкенд локальный, интернет не нужен
  4. Открытый код — никаких чёрных ящиков, можно форкнуть и доработать
# Установка в VS Code
# Расширение: "Continue" (автор Continue Dev)
# Или через командную палитру:
# Ctrl+Shift+P → "Extensions: Install Extensions" → "Continue"

Ключевое отличие от Copilot: Copilot привязывает вас к одной модели (GitHub-выбранной). Continue позволяет переключаться между моделями, использовать локальные модели бесплатно и полностью контролировать свои данные.


Установка и первый запуск

VS Code

  1. Откройте Extensions (Ctrl+Shift+X)
  2. Найдите "Continue"
  3. Нажмите Install
  4. Перезапустите VS Code

После установки в правой части редактора появится иконка Continue (⌘L на Mac, Ctrl+L на Windows/Linux).

Neovim

-- В вашем nvim-конфиге
-- Используйте Mason для установки mason-lspconfig
-- Затем добавьте lsp-конфигурацию для Continue

Continue поддерживает LSP-протокол, поэтому работает с любым редактором, поддерживающим Language Server Protocol.

JetBrains IDEs

Установка аналогична VS Code — через Plugin Marketplace. Поддерживаются IntelliJ IDEA, PyCharm, WebStorm, GoLand и другие.


Бэкенды: подключение моделей

Самая мощная сторона Continue — поддержка множества бэкендов. Конфигурация хранится в ~/.continue/config.json.

Ollama: локальная модель бесплатно

{
  "models": [
    {
      "title": "Llama 3.2",
      "provider": "ollama",
      "model": "llama3.2"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Llama 3.2 (Fast)",
    "provider": "ollama",
    "model": "llama3.2:3b"
  }
}

Быстрый старт:

# Установите Ollama
brew install ollama
ollama pull llama3.2

# Перезапустите VS Code
# Continue автоматически подключится к localhost:11434

llama.cpp: прямой запуск GGUF

{
  "models": [
    {
      "title": "Qwen 2.5 7B",
      "provider": "llama.cpp",
      "model": "./models/qwen2.5-7b-instruct.Q4_K_M.gguf",
      "apiBase": "http://localhost:8080"
    }
  ]
}

Запустите сервер llama.cpp:

./server -m ./models/qwen2.5-7b-instruct.Q4_K_M.gguf -c 8192 -ngl 35

vLLM: production-качество для локального API

{
  "models": [
    {
      "title": "Mistral 7B (vLLM)",
      "provider": "openai",
      "model": "mistralai/Mistral-7B-Instruct-v0.3",
      "apiBase": "http://localhost:8000/v1/"
    }
  ]
}
pip install vllm
python -m vllm.entrypoints.openai.api_server \
  --model mistralai/Mistral-7B-Instruct-v0.3 \
  --max-model-len 8192 \
  --port 8000

OpenAI и Anthropic: облачные модели

{
  "models": [
    {
      "title": "GPT-4o",
      "provider": "openai",
      "model": "gpt-4o",
      "apiKey": "sk-..."
    },
    {
      "title": "Claude Sonnet",
      "provider": "anthropic",
      "model": "claude-sonnet-4-20250514",
      "apiKey": "sk-ant-..."
    }
  ]
}

Mix: несколько моделей для разных задач

{
  "models": [
    {
      "title": "Llama 3.2 (Локальная)",
      "provider": "ollama",
      "model": "llama3.2"
    },
    {
      "title": "GPT-4o (Облачная)",
      "provider": "openai",
      "model": "gpt-4o",
      "apiKey": "sk-..."
    },
    {
      "title": "Claude Sonnet (Облачная)",
      "provider": "anthropic",
      "model": "claude-sonnet-4-20250514",
      "apiKey": "sk-ant-..."
    }
  ]
}

Continue позволяет переключаться между моделями через командную палитру: Ctrl+Shift+P → "Continue: Change Model".


Интерфейс: чат, коммиты и автодополнение

Чат с кодом (Ctrl+L / ⌘L)

Основной интерфейс — чат, открываемый по Ctrl+L. Он показывает:

  • Контекст: текущий файл автоматически включается в промпт
  • Выделение: выбранный код отправляется как контекст
  • Результат: ответ LLM с возможностью вставки в редактор
Выделите функцию → Ctrl+L → "Почему этот код не работает?"
→ LLM анализирует и отвечает с примерами
→ Кнопка "Insert" вставляет исправленный код

Команды в чате

Continue поддерживает slash-команды для специфических задач:

Команда Описание
/edit Редактирует выделенный код
/comment Добавляет комментарии к коду
/share Экспортирует историю чата
/cmd Генерирует команду терминала
/so Ищет решение на Stack Overflow
/new Начинает новый чат
/clear Очищает историю чата

Tab Autocomplete (Ctrl+Tab)

Continue предлагает автодополнение кода, работающее с локальной моделью:

{
  "tabAutocompleteModel": {
    "title": "StarCoder2 (Fast)",
    "provider": "ollama",
    "model": "starcoder2:3b"
  }
}

Настройка автодополнения:

{
  "tabAutocompleteOptions": {
    "maxPromptTokens": 1500,
    "prefixPercentage": 0.5,
    "debounceDelay": 250,
    "multilineCompletions": "always"
  }
}

Inline Chat (Ctrl+I / ⌘I)

Inline-чат позволяет редактировать код прямо на месте, без переключения на боковой чат:

  1. Выделите код
  2. Нажмите Ctrl+I
  3. Введите инструкцию: "Добавь обработку ошибок"
  4. Получите diff прямо в редакторе

Продвинутая конфигурация

System Prompt: настройка поведения модели

{
  "systemMessage": "Ты — опытный senior-разработчик. Отвечай кратко, с примерами кода. Если не знаешь ответа — скажи прямо. Не генерируй код, если не уверен."
}

Custom Prompts: свои команды для чата

{
  "contextProviders": [
    {
      "name": "code",
      "params": {}
    },
    {
      "name": "docs",
      "params": {}
    },
    {
      "name": "open",
      "params": {}
    },
    {
      "name": "diff",
      "params": {}
    }
  ]
}

Context Providers: что отправляется в промпт

Continue собирает контекст из разных источников:

Provider Описание
code Текущий файл и связанные файлы
open Все открытые вкладки
diff Несохранённые изменения в git
terminal Вывод терминала
problems Ошибки и предупреждения из панели Problems
docs Документация проекта
url Содержимое по URL
folder Содержимое папки проекта

Пример: полный config.json

{
  "models": [
    {
      "title": "Llama 3.2",
      "provider": "ollama",
      "model": "llama3.2"
    },
    {
      "title": "GPT-4o",
      "provider": "openai",
      "model": "gpt-4o",
      "apiKey": "${OPENAI_API_KEY}"
    }
  ],
  "tabAutocompleteModel": {
    "title": "StarCoder2",
    "provider": "ollama",
    "model": "starcoder2:3b"
  },
  "tabAutocompleteOptions": {
    "maxPromptTokens": 1500,
    "debounceDelay": 200,
    "multilineCompletions": "always"
  },
  "systemMessage": "Ты — senior-разработчик. Отвечай с примерами кода.",
  "allowAnonymousTelemetry": false,
  "contextProviders": [
    { "name": "code" },
    { "name": "open" },
    { "name": "diff" },
    { "name": "terminal" },
    { "name": "problems" }
  ]
}

Environment Variables и безопасность

Хранение API-ключей

{
  "models": [
    {
      "title": "GPT-4o",
      "provider": "openai",
      "model": "gpt-4o",
      "apiKey": "${OPENAI_API_KEY}"
    }
  ]
}

Continue поддерживает переменные окружения через синтаксис ${VAR_NAME}. Установите ключи в окружение:

# В ~/.zshrc или ~/.bashrc
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."

Конфиденциальность

{
  "allowAnonymousTelemetry": false
}

По умолчанию Continue отправляет анонимную телеметрию. Отключите её для полной приватности.


RAG с Continue: работа с документацией

Continue поддерживает индексацию собственной документации для RAG-поиска:

{
  "contextProviders": [
    {
      "name": "docs",
      "params": {
        "docsToIndex": ["./docs", "./README.md"]
      }
    }
  ]
}

Настройка через UI

  1. Откройте настройки Continue (шестерёнка в чате)
  2. Перейдите в "Documentation"
  3. Добавьте URL или пути к файлам
  4. Нажмите "Index"

Пример: индексация React-документации

{
  "contextProviders": [
    {
      "name": "docs",
      "params": {
        "urls": [
          "https://react.dev/reference/react",
          "https://react.dev/learn"
        ]
      }
    }
  ]
}

Теперь при запросе "Как использовать useEffect?" Continue найдёт ответ в официальной документации React.


Continue в команде: shared configuration

Team config.json

{
  "__comment": "Этот файл можно коммитить в репозиторий для команды"
}

Создайте .continue/config.json в корне проекта — Continue автоматически использует его вместо глобального конфига.

Пример: командный стандарт

{
  "models": [
    {
      "title": "Qwen 2.5 (Локальная)",
      "provider": "ollama",
      "model": "qwen2.5:7b"
    }
  ],
  "tabAutocompleteModel": {
    "title": "StarCoder2",
    "provider": "ollama",
    "model": "starcoder2:3b"
  },
  "systemMessage": "Ты — разработчик проекта o6. Пиши код в стиле проекта. Используй TypeScript, не добавляй лишних зависимостей."
}

.gitignore для личных ключей

# Личные API-ключи
.continue/config.local.json

Используйте .continue/config.local.json для личных настроек с ключами, а .continue/config.json — для общих настроек команды.


Производительность и оптимизация

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

Фактор Влияние
Модель 3B ≈ в 3x быстрее 7B
Квантование Q4 ≈ в 2x быстрее F16
num_ctx Меньше контекст = быстрее
GPU CUDA/Metal ≈ в 5x быстрее CPU

Рекомендуемые модели для autocomplete

Модель Размер Скорость Качество
starcoder2:3b 2.1 ГБ ⚡ Быстрая ★★★★
deepseek-coder:1.3b 900 МБ ⚡⚡ Очень быстрая ★★★
codellama:7b 4.1 ГБ Средняя ★★★★★
qwen2.5-coder:3b 2.0 ГБ ⚡ Быстрая ★★★★

Оптимизация для MacBook

{
  "models": [
    {
      "title": "Llama 3.2 (Metal)",
      "provider": "ollama",
      "model": "llama3.2",
      "engine": "llama.cpp"
    }
  ],
  "tabAutocompleteModel": {
    "title": "StarCoder2 (Metal)",
    "provider": "ollama",
    "model": "starcoder2:3b"
  }
}

Типичные проблемы и решения

Проблема 1: Continue не подключается к Ollama

Симптом: В чате ошибка "Connection refused" или "Model not found".

Решение:

# Проверьте, запущен ли Ollama
ollama list

# Проверьте порт
curl http://localhost:11434/api/tags

# Перезапустите Ollama
ollama serve &

# Проверьте config.json
cat ~/.continue/config.json

Проблема 2: Медленное автодополнение

Симптом: Задержка при нажатии Tab — 2-5 секунд.

Решение:

  1. Используйте меньшую модель (3B вместо 7B)
  2. Уменьшите maxPromptTokens до 500-1000
  3. Уменьшите debounceDelay до 100-150 мс
  4. Используйте GPU-бэкенд (CUDA/Metal)
{
  "tabAutocompleteOptions": {
    "maxPromptTokens": 800,
    "debounceDelay": 150
  }
}

Проблема 3: Модель "галлюцинирует" или даёт бессмысленные ответы

Решение:

  1. Увеличьте system prompt с конкретными инструкциями
  2. Попробуйте другую модель с лучшей инструкцией
  3. Уменьшите temperature (если бэкенд поддерживает)
{
  "systemMessage": "Ты — senior-разработчик TypeScript. Отвечай ТОЛЬКО по существу. Если не знаешь ответа — скажи 'Не знаю'. Не генерируй псевдокод."
}

Проблема 4: Конфликт с GitHub Copilot

Решение: Отключите Copilot или настройте приоритеты:

{
  "tabAutocompleteOptions": {
    "useVsCodeEditorContext": true,
    "showInlineSuggestion": true
  }
}

Или полностью отключите Copilot в настройках VS Code:

{
  "github.copilot.enable": {
    "*": false
  }
}

Проблема 5: Не индексируется документация

Решение:

# Проверьте права доступа к файлам
ls -la ./docs/

# Проверьте логи Continue
# Cmd+Shift+P → "Developer: Open Process Explorer"

# Убедитесь, что формат файлов поддерживается
# .md, .txt, .py, .ts — поддерживаются
# .pdf, .docx — могут не поддерживаться

Continue vs Copilot: честное сравнение

Функция Continue Copilot
Цена Бесплатно (локально) $10/мес
Модели Любая Только GitHub-выбранная
Офлайн Да (с локальной моделью) Нет
Приватность 100% (локально) Код уходит на сервер
Автодополнение Да (кастомизируемое) Да (закрытое)
Чат Да Да
Редактирование кода Да (/edit) Да (Ghost Text)
RAG с документацией Да Нет (только Codebase)
Кастомные промпты Да Нет
Командная настройка Да (shared config) Нет
Поддержка IDE VS Code, JetBrains, Neovim VS Code, JetBrains, Vim
Open Source Да (Apache 2.0) Нет

Чек-лист: первый день с Continue

  1. Установить расширение Continue из Marketplace
  2. Установить Ollama: brew install ollama
  3. Скачать модель: ollama pull llama3.2
  4. Настроить ~/.continue/config.json
  5. Перезапустить VS Code
  6. Протестировать чат (Ctrl+L)
  7. Протестировать автодополнение (Ctrl+Tab)
  8. Добавить system prompt
  9. Настроить context providers
  10. Добавить документацию для RAG

Итоги

Continue.dev — это лучший способ начать работу с AI-ассистентом в VS Code:

  • Бесплатно: Локальные модели через Ollama — никаких подписок
  • Приватно: Код не покидает ваш компьютер
  • Гибко: Любая модель, любой бэкенд, любой промпт
  • Открыто: Apache 2.0, можно форкать и дорабатывать

С чего начать прямо сейчас:

# 1. Установите Ollama
brew install ollama

# 2. Скачайте модель
ollama pull llama3.2

# 3. Установите расширение Continue в VS Code

# 4. Настройте config.json
# 5. Начните работать с AI-ассистентом

Continue — это не просто "бесплатный Copilot". Это более мощный, более гибкий и более приватный инструмент для разработчиков, которые ценят контроль над своими данными и рабочим процессом.


Ссылки