Локальный ИИ-ассистент для кода: OpenCode + Docker Model Runner гайд 2026 | AiManual
AiManual Logo Ai / Manual.
25 Янв 2026 Гайд

Как развернуть локального ИИ-ассистента для кода с OpenCode и Docker Model Runner: гайд по приватности и экономии

Полный гайд по развертыванию приватного ИИ-ассистента для программирования на своем железе. Экономия, безопасность кода, настройка OpenCode и Docker Model Runne

Ваш код утекает в облако. Вы об этом знаете?

Каждый раз, когда вы пользуетесь GitHub Copilot или ChatGPT для программирования, фрагменты вашего кода летят на серверы Microsoft или OpenAI. Конфиденциальная логика, закрытые алгоритмы, архитектурные решения – всё это становится тренировочными данными для будущих моделей. Ваш конкурент может получить доступ к вашим наработкам через год, когда новая версия ИИ научится на вашем коде.

Есть и другая проблема – деньги. Команда из 10 разработчиков, активно использующих Copilot, тратит около $2000 в месяц. За год – $24 000. За эти деньги можно купить отличный сервер, который прослужит 3-4 года.

💡
Цифры на 2026 год: GitHub Copilot Business стоит $19 в месяц на пользователя. Средняя команда разработки – 8-12 человек. Итоговая сумма – $1824-$2736 ежемесячно. Локальный сервер с RTX 4090 (24GB) окупается за 4-6 месяцев.

Но главное не экономия, а контроль. Когда ваш ИИ работает локально, вы:

  • Никогда не получаете "Извините, я не могу помочь с этим вопросом" – потому что настроили модель сами
  • Работаете без интернета – в самолете, поезде, удаленке с плохим соединением
  • Тренируете модель на своих проектах – она знает вашу кодовую базу лучше любого облачного ассистента
  • Не зависите от политик компаний – сегодня разрешают, завтра запрещают

В статье "Локальный ИИ против Copilot" я уже писал, как индивидуальный подход к ИИ становится карьерным преимуществом. Сегодня разберем техническую реализацию.

Стек, который работает в 2026 году

Многие пробуют Ollama или LM Studio, сталкиваются с ограничениями и бросают. Проблема в том, что эти инструменты хороши для экспериментов, но не для production-использования в разработке.

Нужен стек, который:

  1. Работает в Docker – чтобы легко переносить между машинами
  2. Поддерживает современные модели – не только Llama, но и новые специализированные модели для кода
  3. Интегрируется с IDE – без этого всё бессмысленно
  4. Позволяет кастомизировать промпты – стандартные промпты часто дают посредственные результаты

После месяцев тестов я остановился на связке:

Компонент Зачем нужен Альтернативы
Docker Model Runner Универсальный контейнер для запуска любых LLM Ollama (менее гибкий), vLLM (сложнее в настройке)
OpenCode 3.0 Специализированная модель для программирования CodeLlama 2, DeepSeek-Coder
Continue.dev или Cursor Интеграция с IDE Встроенные плагины VS Code

Почему именно OpenCode 3.0? Эта модель вышла в конце 2025 года и показывает на 40% лучшие результаты в тестах HumanEval по сравнению с CodeLlama 2. Она обучена на 1.5 триллионах токенов кода (включая приватные репозитории компаний, которые разрешили использование). И самое главное – она отлично квантуется до 4-бит без значительной потери качества.

Важно: на 25.01.2026 OpenCode 3.0 доступна в размерах 7B, 13B и 34B параметров. Для большинства задач хватает 13B в 4-битном квантовании – она занимает ~8GB памяти и работает на картах от RTX 4060.

Шаг за шагом: от Docker до работающего ассистента

1 Подготовка железа и Docker

Начнем с минимальных требований. Если у вас ноутбук с 16GB RAM – этого достаточно для 7B модели. Для 13B лучше 32GB RAM и видеокарта с 8+GB памяти.

Устанавливаем Docker и NVIDIA Container Toolkit (если есть видеокарта NVIDIA):

# Для Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Для NVIDIA GPU
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

Проверяем, что Docker видит GPU:

docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
💡
Если у вас Mac с Apple Silicon (M1/M2/M3), установите Docker Desktop с поддержкой Rosetta. Docker Model Runner работает через трансляцию, но производительность будет ниже, чем на NVIDIA.

2 Скачиваем и запускаем Docker Model Runner

Docker Model Runner – это контейнер, который умеет загружать модели с Hugging Face, квантовать их на лету и предоставлять API совместимый с OpenAI.

Создаем директорию для проекта:

mkdir ~/local-code-ai && cd ~/local-code-ai

Создаем docker-compose.yml:

version: '3.8'

services:
  model-runner:
    image: ghcr.io/model-runner/model-runner:2026.01
    container_name: local-code-ai
    ports:
      - "8000:8000"
    volumes:
      - ./models:/app/models
      - ./config:/app/config
    environment:
      - MODEL_ID=OpenCode/OpenCode-13B-Instruct-GPTQ
      - QUANTIZATION=gptq-4bit-128g
      - MAX_MODEL_LEN=8192
      - DEVICE=cuda  # или mps для Mac
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    command: \
      --model ${MODEL_ID} \
      --quantization ${QUANTIZATION} \
      --api-key "local-key" \
      --host 0.0.0.0 \
      --port 8000

Запускаем:

docker-compose up -d

Ждем 5-15 минут (в зависимости от скорости интернета). Модель скачается автоматически (около 8GB для 13B в GPTQ).

Первая загрузка модели может занять время. Docker Model Runner кэширует модели в директории ./models, так что при перезапуске всё будет мгновенно.

3 Проверяем работу API

Отправляем тестовый запрос:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer local-key" \
  -d '{
    "model": "OpenCode-13B-Instruct-GPTQ",
    "messages": [
      {
        "role": "user",
        "content": "Напиши функцию на Python, которая проверяет, является ли строка палиндромом"
      }
    ],
    "max_tokens": 200
  }'

Если видите ответ с кодом – всё работает. Если нет, проверьте логи:

docker logs local-code-ai --tail 50

4 Интеграция с IDE – главный этап

Без интеграции с редактором кода вся эта затея теряет смысл. Есть три варианта:

Вариант A: Continue.dev – плагин для VS Code, который умеет работать с локальными моделями через OpenAI-совместимый API. Устанавливаем плагин, создаем конфиг:

// ~/.continue/config.json
{
  "models": [
    {
      "title": "Local OpenCode",
      "provider": "openai",
      "model": "opencode-13b",
      "apiBase": "http://localhost:8000",
      "apiKey": "local-key"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Local OpenCode",
    "provider": "openai",
    "model": "opencode-13b",
    "apiBase": "http://localhost:8000",
    "apiKey": "local-key"
  }
}

Вариант B: Cursor – редактор на базе VS Code со встроенной AI-интеграцией. В настройках указываем:

// В настройках Cursor
"cursor.localModel": {
  "endpoint": "http://localhost:8000",
  "apiKey": "local-key",
  "model": "opencode-13b"
}

Вариант C: Встроенный плагин VS Code – если не хотите устанавливать дополнительные редакторы. Ищите плагин "Local AI Assistant" в Marketplace.

💡
В статье "Идеальный стек" я подробно разбирал все варианты интеграции. Continue.dev – самый гибкий, Cursor – самый удобный из коробки.

Настройка промптов: превращаем модель в эксперта

Стандартные промпты OpenCode дают хорошие, но общие ответы. Чтобы модель понимала контекст вашего проекта, нужно её настроить.

Создаем файл system_prompt.txt в директории config:

Ты – старший разработчик с 10-летним опытом.
Специализация: {ваш стек технологий, например: Python, FastAPI, PostgreSQL, Docker}

Правила:
1. Всегда предлагай полные, готовые к использованию решения
2. Объясняй сложные моменты, но кратко
3. Предлагай альтернативные варианты, если они есть
4. Учитывай best practices 2026 года
5. Для Python используй type hints и async где уместно
6. Для API – OpenAPI 3.1 спецификацию

Контекст проекта:
- Архитектура: микросервисы
- БД: PostgreSQL 16 + Redis для кэша
- Контейнеризация: Docker + Kubernetes
- Мониторинг: Prometheus + Grafana

Стиль кода:
- Максимальная длина строки: 100 символов
- Докустрируй публичные функции и классы
- Используй logging вместо print
- Обработка ошибок через кастомные исключения

Обновляем docker-compose.yml, чтобы добавить system prompt:

environment:
  - MODEL_ID=OpenCode/OpenCode-13B-Instruct-GPTQ
  - SYSTEM_PROMPT_FILE=/app/config/system_prompt.txt
  # остальные переменные...

Перезапускаем контейнер:

docker-compose down && docker-compose up -d

Теперь модель будет учитывать ваш стек и стандарты кодирования.

Типичные ошибки и как их избежать

Я видел десятки попыток развернуть локальный ИИ. Вот что ломается чаще всего:

Ошибка Причина Решение
"Out of memory" при генерации Слишком большой контекст (max_tokens) Уменьшить max_tokens до 1024 или использовать streaming
Медленные ответы CPU inference вместо GPU Проверить, что Docker использует GPU (nvidia-smi в контейнере)
Плохое качество кода Неправильный temperature параметр Для кода использовать temperature=0.1-0.3, для креативных задач – 0.7-0.9
Модель "забывает" контекст Ограничение длины контекста модели OpenCode 3.0 поддерживает 8192 токена, не отправлять больше

Ещё одна частая проблема – люди пытаются запустить 34B модель на 16GB RAM. Не делайте так. 13B в 4-битном квантовании работает в 5 раз быстрее и даёт 90% качества 34B модели.

Оптимизация производительности: от 10 секунд до 2 секунд на ответ

По умолчанию Docker Model Runner настроен на стабильность, а не на скорость. Вот что нужно поменять:

  1. Включить continuous batching – обрабатывать несколько запросов параллельно
  2. Настроить PagedAttention – уменьшает использование памяти на 70%
  3. Использовать tensor parallelism для много-GPU систем

Добавляем в docker-compose.yml:

environment:
  - MAX_BATCH_SIZE=8
  - MAX_PREFILL_TOKENS=512
  - ENABLE_PAGED_ATTENTION=true
  - TENSOR_PARALLEL_SIZE=1  # для одной GPU, для двух – 2
  # остальные настройки...

После этих настроек среднее время ответа упадёт с 10-15 секунд до 2-4 секунд.

Что дальше? Fine-tuning на вашем коде

Базовая настройка промптами – это хорошо. Но настоящее волшебство начинается, когда модель учится на вашей кодовой базе.

Простой способ – создать векторную базу с embeddings вашего кода. Модель будет искать релевантные фрагменты перед генерацией ответа.

Более сложный (но эффективный) – fine-tuning LoRA адаптеров. В Docker Model Runner есть встроенная поддержка:

# Собираем датасет из вашего кода
python prepare_training_data.py --source ./your-code --output ./training_data.jsonl

# Запускаем fine-tuning
docker run --gpus all \
  -v ./training_data.jsonl:/app/data/train.jsonl \
  -v ./lora_adapters:/app/adapters \
  ghcr.io/model-runner/model-runner:2026.01 \
  --model OpenCode/OpenCode-13B-Instruct-GPTQ \
  --lora-training \
  --training-data /app/data/train.jsonl \
  --output-dir /app/adapters

После обучения (6-12 часов на RTX 4090) загружаем адаптеры вместе с моделью:

environment:
  - LORA_ADAPTERS=/app/adapters/opencode-lora
  # остальные настройки...

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

💡
Важно: fine-tuning на закрытом коде требует соблюдения лицензий. Если используете открытые модели – проверьте лицензию. OpenCode 3.0 имеет Apache 2.0 лицензию, которая разрешает коммерческое использование и модификацию.

Стоит ли овчинка выделки? Цифры

Давайте посчитаем на 25.01.2026:

  • Стоимость железа: Сервер с RTX 4090 (24GB) – $2500. Срок службы – 3 года. Ежемесячная стоимость: $69
  • Потребление энергии: 450W при нагрузке, 8 часов в день, $0.15 за кВт·ч = $16 в месяц
  • Итого: $85 в месяц за неограниченное использование
  • Copilot Business: $19 на разработчика × 10 человек = $190 в месяц

Экономия: $105 в месяц или $1260 в год. Но экономия – не главное.

Главное – ваши данные остаются вашими. Ваши архитектурные решения не становятся тренировочными данными для конкурентов. Ваша команда не зависит от доступности облачных сервисов.

И самое важное – вы создаёте эксперта, который знает ваш проект лучше любого внешнего консультанта. Через месяц fine-tuning'а модель будет предлагать решения, которые учитывают все нюансы вашей системы.

Это уже не просто автодополнение кода. Это коллективный разум вашей команды, сохранённый в весах нейросети.

Предупреждение: локальный ИИ – не панацея. Он требует настройки, мониторинга и обслуживания. Если у вас нет DevOps-навыков в команде, начинайте с малого – запустите 7B модель на ноутбуке и оцените пользу.

Дальнейшие шаги: после настройки базового стека посмотрите как дать локальной LLM доступ в интернет для поиска документации. Или изучите альтернативные локальные редакторы кода.

Следующий уровень – запустить кластер таких моделей для всей компании. Но это уже тема для отдельной статьи.