Головна / Статті / Локальна модель для коду на llama.cpp і підключення до VS Code

Локальна модель для коду на llama.cpp і підключення до VS Code

Замініть рахунки за токени локальною MoE-моделлю: оберіть квантизацію, налаштуйте прапорці llama-server під невелику відеокарту, підключіть Cline або Kilo Code і закрийте питання безпеки.

1882 слів

ШІ-агенти для програмування вміють читати репозиторій, накидати патчі, запускати тести й пояснювати незнайомий код, і команди з ними помітно швидші. Спірним лишається рахунок. Автономні агенти пожирають токени: один запит на кшталт «відрефактор цей модуль і полагодь тести, що падають» може з'їсти сотню тисяч вхідних токенів, перш ніж з'явиться бодай рядок коду.

Між оплатою за кожен токен і відмовою від ШІ є середній шлях: запустити модель у себе. Ноутбук із дискретною відеокартою може крутити тямущу модель для коду через llama.cpp, віддавати її як OpenAI-сумісний HTTP API й підключати до VS Code через розширення Cline або Kilo Code. Кожен зайвий токен нічого не коштує, і дані не залишають вашу мережу. Ось конфігурація, яка запрацювала.

Що потрібно заздалегідь

Залізо: дуже бажана окрема відеокарта NVIDIA, і що більше VRAM, то краще. Типові корпоративні ноутбуки мають приблизно 8 ГБ, і цього вистачить, якщо уважно обрати модель і квантизацію. Оперативна пам'ять теж важлива, бо частину моделі ви навмисно витісните в неї.

Софт: встановіть CUDA Toolkit версії 13.3 або новішої зі сторінки завантаження NVIDIA, локальним exe-інсталятором для своєї платформи. Він дає бібліотеки й API, які виділяють VRAM і запускають модель на відеокарті, і він же знадобиться, якщо колись збиратимете llama.cpp самі. Ще потрібні браузер і акаунт Hugging Face, щоб завантажити ваги.

Отримуємо llama.cpp

llama.cpp — це рушій інференсу. Він написаний на C і C++, ефективно запускає GGUF-моделі на звичайному залізі, використовує CUDA й містить HTTP-сервер, що імітує OpenAI API, — саме на цій можливості тримається вся конфігурація.

Вихідний код беріть у репозиторії llama.cpp, а готові бінарники для Windows і Linux лежать на сторінці релізів. Завантажте збірку під свою версію CUDA, наприклад пакет win-cuda-13.3-x64. Компілювати нічого не треба. Розпакуйте кудись простіше, наприклад у D:\ai\.

Важливі два виконувані файли:

  • llama-cli.exe дає інтерактивний чат у терміналі, зручно для перевірки встановлення.
  • llama-server.exe запускає HTTP-сервер з ендпоінтом /v1 у стилі OpenAI та чат-інтерфейсом у браузері.

Вибір моделі

Усе інше — механіка. Виграєте чи програєте ви саме на виборі моделі. Завантажуйте з Hugging Face формат .gguf, бо його читає llama.cpp.

Добирайте модель під задачу, а не чекайте, що одна зробить усе:

  • Програмування й агентна робота в IDE — найвимогливіший випадок. Агентові треба добре виконувати інструкції, надійно викликати інструменти й мати велике контекстне вікно, щоб тримати кілька файлів одразу. Qwen3.6 35B A3B тут добре себе показує і є вибором за замовчуванням для агентної роботи в IDE. Її GGUF-збірки можна завантажити з репозиторію unsloth, а решту закривають невеликі щільні моделі.
  • Швидкі питання й відповіді, підсумки та повідомлення комітів чудово робить значно менша щільна модель, і вона буде чуйнішою. І Cline, і Kilo Code дозволяють призначити для таких побічних задач легку маленьку модель окремо від основної.
  • Міркування над довгими документами потребують довжини контексту, а не кількості параметрів, і VRAM варто лишити під KV-кеш.

Віддавайте перевагу моделям Mixture-of-Experts. «A3B» у назві означає 35 мільярдів параметрів загалом і лише близько 3 мільярдів активних на токен. Ви отримуєте знання великої моделі майже зі швидкістю маленької, тож на обмеженому залізі MoE легко обжене щільну модель порівнянної якості.

Обирайте квантизацію чесно. Квантизація — це ступінь стиснення ваг: що нижче число Q, то менший файл і гірша якість відповідей. Розмір файлу добре показує, скільки VRAM і RAM займе модель. З 4–8 ГБ VRAM починайте шукати в діапазоні від Q4 до Q2, наприклад UD-IQ4_XS або UD-IQ2_M. Якщо сумніваєтеся, дайте будь-якому ШІ-асистентові свої характеристики, спершу VRAM, потім оперативку, і спитайте, яку квантизацію брати. Це дві хвилини, і вони окупаються.

Спершу димовий тест

Переконайтеся, що зв'язка працює, перш ніж чіпати VS Code. Відкрийте командний рядок у теці llama.cpp і виконайте:

"D:\ai\llama-b9590-bin-win-cuda-13.3-x64\llama-cli.exe" -m "D:\ai\llms\Qwen3.6-35B-A3B-UD-IQ2_M.gguf"

Перевірте дві речі. Перше: з'являється банер, модель завантажується, у терміналі можна спілкуватися, а швидкість у токенах виводиться. На ноутбучній RTX PRO 2000 вийшло приблизно 18 токенів за секунду на промпт і 30 на генерацію. Друге: відкрийте Диспетчер завдань, потім Продуктивність, потім GPU, і переконайтеся, що виділена пам'ять GPU підскочила. Якщо вона не змінюється, модель працює на CPU і у вас проблема з CUDA чи драйвером. Спершу виправте це, інакше все подальше буде нестерпно повільним.

Запуск сервера

Тепер по-справжньому. llama-server дає і інтерфейс у браузері, і API, з яким говоритиме IDE:

"D:\ai\llama-b9590-bin-win-cuda-13.3-x64\llama-server.exe" ^
  -m "D:\ai\llms\Qwen3.6-35B-A3B-UD-IQ2_M.gguf" ^
  --host 0.0.0.0 ^
  --port 8080 ^
  -ngl all ^
  -c 64000 ^
  -fa on ^
  --cache-type-k q4_0 ^
  --cache-type-v q4_0 ^
  --n-cpu-moe 22 ^
  -b 2048 ^
  -ub 2048 ^
  --no-mmap ^
  --reasoning off ^
  --reasoning-format none ^
  --reasoning-budget 0

Дочекайтеся повідомлення, що сервер слухає порт 8080 і всі слоти вільні, потім відкрийте http://localhost:8080 у браузері й привітайтеся.

Що роблять прапорці

Не копіюйте цю команду наосліп. Саме ці налаштування ви крутитимете, коли модель не вміщується.

  • Основне: -m — файл ваг, --port задає HTTP-порт для інтерфейсу й API, а --host 0.0.0.0 слухає всі інтерфейси, щоб могли підключатися інші машини в локальній мережі, водночас локально ви й далі використовуєте localhost.
  • Розміщення на GPU: -ngl all відправляє стандартні шари, тобто блоки уваги й не-MoE ваги, у VRAM. --n-cpu-moe 22 тримає ваги експертів стількох шарів в оперативній пам'яті, щоб не переповнити VRAM, і це ваша головна ручка налаштування на маленькій відеокарті.
  • Пам'ять і контекст: -c 64000 обмежує контекстне вікно в токенах, і більший контекст коштує більше пам'яті. -fa on вмикає ядра FlashAttention, які прискорюють обробку промпту й зменшують витрату VRAM. --cache-type-k і --cache-type-v зі значенням q4_0 зберігають кеші ключів і значень у 4 бітах, що дає велику економію на довгому контексті.
  • Пропускна здатність: -b і -ub задають розмір батча для попереднього заповнення промпту й мікробатч на GPU. Тримайте їх однаковими для найкращої пропускної здатності. --no-mmap завантажує всю модель у фізичну пам'ять одразу, а не підкачує частинами.
  • Вивід міркувань: --reasoning off, --reasoning-format none і --reasoning-budget 0 вимикають вбудовану обробку ланцюжка міркувань, прибирають теги think з потоку й дають явним міркуванням нульовий бюджет токенів.

Остання група важливіша, ніж здається. Агентні розширення чекають чистого виводу викликів інструментів, який можна розібрати, і сліди міркувань у потоці — часта причина, чому локальна модель «просто не працює» з агентом.

Коли модель не вміщується, не поспішайте переходити на дрібнішу квантизацію. Дійте по черзі: зменште -c, потім збільште --n-cpu-moe, потім квантизуйте KV-кеш. Зазвичай місце знаходиться.

Запуск як служби

Тримати вікно консолі відкритим безкінечно ненадійно. Windows дозволяє зареєструвати llama-server.exe як службу, щоб ендпоінт повертався після перезавантаження. На спільній командній машині, а не на особистих ноутбуках, це практично обов'язково, і перед сервером варто поставити TLS за допомогою --ssl-cert-file і --ssl-key-file, щоб промпти й код ніколи не йшли мережею незашифрованими.

Підключаємо VS Code

Цінність OpenAI-сумісного ендпоінта в тому, що агентні розширення вже вміють із ним працювати. Встановіть Cline з маркетплейсу VS Code. Під час першого запуску він спитає, як ви хочете його використовувати. Оберіть варіант зі своїм API-ключем, потім відкрийте Settings і API Configuration та заповніть:

  • Provider: пункт OpenAI Compatible.
  • Адреса: http://0.0.0.0:8080/v1, виправте, якщо сервер на іншому хості чи порту.
  • API Key: не потрібен.
  • Model ID: точна назва, яку повідомляє сервер, наприклад Qwen3.6-35B-A3B-UD-IQ2_M.
  • Context Window Size: 64000.

Контекстне вікно має збігатися зі значенням -c, з яким ви запустили сервер. Якщо Cline думає, що має 128K, а сервер виділив лише 64K, ви отримаєте помилки обрізання посеред задачі й збитого з пантелику агента.

У розділі Advanced подумайте про ввімкнення окремих моделей для режимів Plan і Act. Сильніша модель міркувань складає план, а швидша його виконує, і локально це так само корисно, як із хмарними API.

Kilo Code працює майже так само. Додайте власного провайдера, дайте йому ID на кшталт llamacpp, вкажіть у Base URL адресу /v1 вашого сервера, і він виявить модель, яку віддає сервер. Один урок, вивчений на гіркому досвіді: обирайте модель явно, а не довіряйте значенню за замовчуванням, і повторіть цей вибір для кожного режиму (Code, Ask, Debug, Orchestrator і Plan) у глобальній конфігурації.

Безпека понад усе

Одне хибне налаштування в агентному розширенні може відправити вихідний код вашого роботодавця у відкритий інтернет. Локальний запуск якраз і потрібен, щоб цього не сталося, тож охороняйте його ретельно.

  • Щоразу перевіряйте Base URL. Він має вказувати на ваш власний хост. Якщо кудись іще — туди й піде ваш код.
  • Вимкніть телеметрію. У Cline зніміть позначки зі звітів про помилки й використання в загальних налаштуваннях.
  • Вимкніть вебінструменти на кшталт браузингу й пошуку, якщо у вас немає погодженої причини їх використовувати.
  • Вимкніть MCP-сервери, які ви не контролюєте, а виконання команд у shell тримайте в режимі «питати», а не «дозволяти».
  • Ніколи не вмикайте режим YOLO для корпоративної кодової бази. Виконувати згенеровані агентом задачі без підтвердження так само нерозважливо, як звучить.
  • Використовуйте TLS завжди, коли сервер не на localhost. Для спільного командного комп'ютера віддавайте HTTPS і встановіть сертифікат сервера на кожну клієнтську машину, у Windows — через certutil.
  • Не завантажуйте код і дизайн на зовнішні сервери. Локальний інференс існує, щоб цього не робити.

Чи воно того варте?

Порахуйте, і локальний варіант легко виграє. Платне місце для програмування — це фіксована плата за людину й місячний ліміт токенів. API з оплатою за фактом ростуть разом із використанням, а з добрими інструментами використання стає інтенсивним. Сервер llama.cpp на власній машині коштує лише електрики й відеокарти, яка у вас уже є.

Компроміси чесні. Локальні моделі повільніші за передові хмарні й слабші на справді складних міркуваннях, і в налаштуваннях самого Cline зазначено, що найкраще він працює з передовими моделями. Не розраховуйте замінити найкращу хмарну модель у рішеннях рівня архітектури.

Але більшість токенів іде не на архітектуру. Основна маса — це шаблонний код, рефакторинг, заготовки тестів, пояснення коду, повідомлення комітів і одноманітні правки, і розумно обрана MoE-модель для коду справляється з усім цим на вашому залізі з нульовою граничною вартістю, а ваша інтелектуальна власність лишається в будівлі. Спершу використовуйте свою відеокарту, а платні місця лиште для роботи, якій вони справді потрібні.