Перейти к содержанию

AI-инструменты в редакторе (задача 34)

Принятое решение

Для разработки Alatyr используется расширение Continue для VS Code и локальный Ollama на ragserver.

  • Код обрабатывается локальными моделями на собственном сервере.
  • Работа в домашней сети идёт через http://192.168.1.200:11434.
  • Для работы вне дома требуется маршрут до домашней сети через VPN.
  • Основная модель чата и редактирования: qwen2.5-coder:3b.
  • Модель автодополнения: qwen2.5-coder:1.5b.
  • Модель embeddings: nomic-embed-text:latest.
  • Модели 7B и 32B не устанавливаются на текущий сервер с 8 GB доступной RAM.

Готовый конфиг: skeletons/continue-config.yaml.

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

Проверено 26.08.2026:

Компонент Состояние
VS Code 1.130.0, Windows x64
Continue расширение continue.continue установлено
Ollama 0.32.5, systemd-служба активна
Ollama API 192.168.1.200:11434
CPU/RAM Intel i3-7100U, системе доступно около 8 GB RAM, GPU для inference нет
Chat/edit model qwen2.5-coder:3b, около 1.9 GB на диске
Autocomplete model qwen2.5-coder:1.5b, около 986 MB на диске
Embedding model nomic-embed-text:latest, около 274 MB
Дополнительная модель llama3.2:3b, около 2.0 GB

Контрольные тесты:

  • Ollama API из Windows отвечает.
  • Прямой запрос к qwen2.5-coder:3b выполнен примерно за 17 секунд.
  • Continue chat вернул точный ответ CONTINUE_OK.
  • Tab autocomplete с qwen2.5-coder:1.5b сгенерировал тело TypeScript-функции.
  • Inline edit с qwen2.5-coder:3b заменил цикл на Array.reduce.
  • Тестовый файл удалён из alatyr-service.

Установка

Модели на ragserver

Ollama слушает LAN-адрес, а не localhost. Для команд CLI на самом сервере нужно явно задавать OLLAMA_HOST:

OLLAMA_HOST=192.168.1.200:11434 ollama pull qwen2.5-coder:3b
OLLAMA_HOST=192.168.1.200:11434 ollama pull qwen2.5-coder:1.5b
OLLAMA_HOST=192.168.1.200:11434 ollama pull nomic-embed-text
OLLAMA_HOST=192.168.1.200:11434 ollama list

Без OLLAMA_HOST клиент пытается подключиться к 127.0.0.1:11434 и сообщает, что сервер Ollama недоступен, хотя systemd-служба работает.

Расширение VS Code

code --install-extension continue.continue

Проверка:

code --list-extensions |
    Where-Object { $_ -ieq "continue.continue" }

Конфигурация Continue

Текущий формат Continue: YAML. Рабочий файл:

%USERPROFILE%\.continue\config.yaml

Установка шаблона:

$continueDir = Join-Path $HOME ".continue"
New-Item -ItemType Directory -Force $continueDir | Out-Null
Copy-Item `
    "C:\repos\alatyr\alatyr-infra-kb\skeletons\continue-config.yaml" `
    (Join-Path $continueDir "config.yaml")

После изменения конфига выполнить в VS Code:

Ctrl+Shift+P → Developer: Reload Window

Использование

Чат

Открыть панель Continue и выбрать Qwen 2.5 Coder 3B.

Тест:

Reply with exactly: CONTINUE_OK

Автодополнение

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

Qwen 2.5 Coder 1.5B Autocomplete

На текущем CPU первый ответ может занимать больше 10 секунд, поэтому в YAML установлено:

autocompleteOptions:
  modelTimeout: 30000

При появлении серого предложения принять его клавишей Tab.

Inline edit

  1. Выделить код.
  2. Нажать Ctrl+I.
  3. Описать изменение.
  4. Проверить красно-зелёный diff.
  5. Нажать Accept или Reject.

AI-изменения всегда нужно проверять человеком перед сохранением и коммитом.

Диагностика

Проверить API из Windows

Invoke-RestMethod `
    -Uri "http://192.168.1.200:11434/api/tags" `
    -TimeoutSec 15

Проверить загруженные модели

ssh ragserver 'OLLAMA_HOST=192.168.1.200:11434 ollama ps'

Во время работы Continue в списке появляются qwen2.5-coder:1.5b и/или qwen2.5-coder:3b.

Автодополнение не появляется

  1. Сохранить файл внутри рабочего репозитория. При onlyMyCode: true автодополнение в Untitled может не запускаться.
  2. Нажать индикатор Continue в строке состояния и убедиться, что меню предлагает Disable autocomplete. Это означает, что функция включена.
  3. Проверить, что выбрана модель qwen2.5-coder:1.5b.
  4. Проверить ollama ps.
  5. Убедиться, что modelTimeout равен 30000.
  6. Выполнить Developer: Reload Window.

Continue показывает поля API key

Поля OpenAI, Anthropic и Gemini относятся к дополнительным облачным провайдерам. Для локальной конфигурации Alatyr они не нужны. В них нельзя вставлять ключи без отдельного решения о передаче кода во внешний сервис.

Ограничения

  • Обе Qwen-модели работают на CPU, поэтому ответы медленнее облачных моделей.
  • Одновременная загрузка 1.5B и 3B занимает несколько гигабайт RAM.
  • Контекст установлен в 8192 токена, чтобы не перегружать текущий сервер.
  • Модели 7B и крупнее откладываются до замены железа по задаче INF-03.
  • Доступ из внешней сети через VPN отдельно не проверялся в рамках задачи 34.

Результат задачи 34

  • Continue установлен.
  • Конфигурация переведена на актуальный config.yaml.
  • Установлены модели 3B и 1.5B.
  • Проверен локальный chat.
  • Проверено tab autocomplete.
  • Проверено inline edit и принятие diff.
  • Временный тестовый файл удалён.
  • Фактическая конфигурация записана в KB.

Актуализировано 26.08.2026.