Свой Copilot в «шкафу»: приватный AIагент и автокомплит без подписки
Введение
Я тестировал несколько подходов для локального запуска LLM и остановился на связке llama.cpp + Continue + Roo как рабочем варианте для приватного агента и автокомплита в IDE. В статье — оптимальная установка для macOS (Apple Silicon), выбор моделей в формате GGUF, запуск локальных серверов, настройка Continue и Roo, а также практические советы по автокомплиту и чек‑лист соответствия требованиям Хабра.
Что проверялось и почему выбрал этот путь
Вывод: связка llama.cpp (локальный движок, поддержка GGUF/квантования) + Continue (локальный провайдер/конфиг) + Roo (IDE‑плагин) даёт баланс приватности, скорости и интеграции.
Установка llama.cpp: оптимальная инструкция для macOS (Apple Silicon)
Подготовка окружения
Полную инструкцию можно прочитать тут
# Установить Xcode Command Line Tools
xcode-select --install
# Проверить clang
clang --version
Сборка llama.cpp с Metal (Apple Silicon)
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release
# Проверка
./build/bin/llama-cli --help
Пояснение: GGML_METAL=ON включает аппаратное ускорение через Metal — существенно ускоряет инференс на Apple Silicon.
Выбор моделей и формат GGUF
Агент (диалог/планирование): крупная квантованная сборка (например, 30–32B в q4_k/awq).
Автокомплит (IDE): лёгкая модель 3B–7B в GGUF‑q8/q4 для низкой задержки.
Примечание: мультимодальные (VL) сборки содержат vision‑энкодер — если вы не используете изображения, берите текстовую/кодовую сборку.
Про то что такое квантование моделей можно прочитать тут
Скачивание и размещение моделей
Скачайте GGUF‑файлы в llama.cpp/models.
Для Hugging Face используйте huggingface_hub или git lfs (если репозиторий требует LFS).
Проверьте лицензию и целостность файлов перед использованием.
Запуск моделей как локальный сервер
Проверка свободных портов (macOS)
sudo lsof -nP -iTCP -sTCP:LISTEN
Примеры запуска (llama-server)
cd llama.cpp
# Агент (порт 9001)
./build/bin/llama-server -m models/qwen2.5-coder-30b-q4_k_s.gguf --port 9001 --ctx-size 30000
# Автокомплит (порт 9002)
./build/bin/llama-server -m models/qwen2.5-coder-3b-instruct-q8_0.gguf --port 9002 --ctx-size 30000
Пояснения:
--ctx-size увеличивает контекст; подбирайте по модели и доступной памяти.
Если порт занят — найдите PID через lsof и аккуратно завершите процесс (kill <PID>), только если уверены.
Настройка Continue (локальный конфиг)
В Continue → Settings → Local Config используйте такой конфиг:
yaml
name: Local Config
version: 1.0.0
schema: v1
models:
- name: Qwen2.5 Coder 30B Local (llama.cpp)
provider: llama.cpp
model: qwen2.5-coder-30b-q4_k_s
apiKey: ""
defaultCompletionOptions:
maxTokens: 16384
contextLength: 32768
apiBase: http://127.0.0.1:9001
roles:
- chat
- edit
- apply
- name: Qwen2.5 Coder 7B (Fast)
provider: llama.cpp
model: qwen2.5-coder-3b-instruct-q8_0
apiBase: http://127.0.0.1:9002
apiKey: ""
roles:
- autocomplete
- embed
Примечание: локальный сервер обычно не требует apiKey; оставьте пустым.
Настройка Roo / IDE
Установите Roo (VS Code) или RunVSAgent (JetBrains) из магазина плагинов.
Добавьте OpenAI‑compatible провайдера: http://127.0.0.1:9001. В поле пароля можно поставить любое значение для локального теста.
Пример запроса: «Проверь main.go и опиши логику» — плагин отправит контекст локальному агенту и вернёт ответ в IDE.
Практические советы по автокомплиту
Контекст: отправляйте только последние N строк (например, 200–1000 токенов), чтобы снизить задержку.
Параметры генерации: temperature: 0.0–0.2, top_p: 0.7–0.95, max_tokens: 64–256 для автодополнения.
System prompt: задайте роль «assistant for code completion» и добавьте правила форматирования (например, возвращать только код без лишних пояснений при автодополнении).
Квантование: сравните q4_1, q4_k, q8_0 и AWQ — разные методы дают разный компромисс между скоростью и качеством.
Что не подошло и почему
Ollama — удобна, но на моём Mac потребляла больше ресурсов и сильнее грелась при длительной работе.
MLX / GUI‑оболочки — мало плагинов для IDE, не хватало гибкости для автокомплита.
Облачные решения — не соответствуют требованиям приватности и отсутствию подписки.
Заключение
Локальная связка llama.cpp + Continue + Roo позволяет получить приватный Copilot без подписки: тяжёлая квантованная модель для агента и лёгкая — для автокомплита. На Apple Silicon важно собирать llama.cpp с Metal‑ускорением и тестировать разные методы квантования, чтобы найти баланс между скоростью и качеством. Если вам важна приватность и контроль над данными, этот путь даёт рабочее, гибкое и расширяемое решение для ежедневной разработки.
Ссылки и ресурсы
llama.cpp — репозиторий проекта (GitHub)
Hugging Face — репозитории моделей и релизы GGUF
Continue — документация и настройки плагина/приложения
Roo / RunVSAgent — плагины для VS Code / JetBrains

