Архив рубрики ~Лента новостей~

OpenCode с NorthMiniCode на своем железе

OpenCode с NorthMiniCode на своем железе
OpenCode с NorthMiniCode на своем железе

В последнее время большинство обсуждений агентской разработки крутится вокруг Claude Code, Codex, Gemini CLI и других облачных инструментов. Но, с одной стороны, киты индустрии блокируют нам доступы снаружи, с другой — чиновничьи умы блокируют нам доступ изнутри, потому необходимо иметь под рукой локальный инструмент для агентской разработки.

9 июня 2026 вышла модель NorthMiniCode, в отличие от qwen и подобных, специально заточенная под агентские циклы. Планирование, инструменты, редактирование, терминал — это то, на что заточена модель. Подробно разбирать архитектурные особенности будем в следующий раз, а сейчас опишу свой опыт развертывания данной модели и использования ее в OpenCode на домашнем компьютере.

Железо

Решение по компоновке было временным, но стало постоянным, лишь добавилась крышка под углом для защиты от животных

У меня такой домашний сервер/игровой/медиацентр, на котором гоняются всякие qwen, hashcat, Hermes и подобные, иногда играются StarCraft и каждый день ребёнок гоняет Minecraft и снимает видосы.

Компонент

Значение

CPU

Ryzen 7 5700G

RAM

64 GB

GPU #1

RTX 5060 Ti 16 GB

GPU #2

RTX 3060 12 GB

OS

Ubuntu 24.04 LTS

Если бы было две 5060 — было бы проще и быстрее. Но их нет. Вообще, для модели рекомендуется минимум одна H100, но ее у меня тоже нет, работаем с тем, что есть.

Настройка среды для инференса

Архитектура модели cohere2_moe в момент моего эксперимента была еще не добавлена в llama.cpp, пришлось собирать версию из PR. На момент написания статьи он уже влит в master, потому можно собирать из него:

git clone https://github.com/ggml-org/llama.cpp cd llama.cpp cmake -B build -DGGML_CUDA=ON cmake —build build —config Release -jf7de9e4362b36f14bf09110bb542adb4

Если сборка падает с ошибкой «Unsupported gpu architecture», следует обновить драйвер Nvidia и Nvidia CUDA до последней версии.

После успешной сборки:

./build/bin/llama-cli —list-devices8d16b72fe9bc67a741b28acf9fa6f0a3

должен показывать все имеющиеся видеокарты.

Качаем модель

Тут все просто, лучший способ — поставить huggungface cli, авторизоваться по токену и скачать GGUF версию в нужную директорию:

hf download unsloth/North-Mini-Code-1.0-GGUF —include «North-Mini-Code-1.0-UD-Q4_K_M.gguf» —local-dir ~/models/north-mini-code 7192c19755bd35bb620166fb35f407e0

Разумеется, при более мощном железе можно и нужно искать и качать другие веса.

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

Первым делом следует учесть специфику железа — в случае с несколькими видеокартами правильно распределить по ним модель. В llama.cpp для этого используется параметр tensor-split. Для двух моих видеокарт:

RTX 5060 Ti = 16 GB
RTX 3060 = 12 GB

Правильное значение для этого параметра —tensor-split 16,12что дает нам распределение по картам:

57% -> GPU0
43% -> GPU1

Далее — контекст. Если просто запустить с параметром:

—ctx-size 131072684083c39673a0a2acdc1b0cbee72c5e

то в моем случае получается ошибка:

failed to allocate buffer for kv cached9bdcd087f79f808f236df837513e932

Хотя свободной памяти, казалось бы, достаточно. Лог показал:

n_parallel = 4e44cde59e7987da28a9127311fea99ed

То есть llama‑server автоматически создал четыре слота. Каждый слот хранит собственный KV Cache. Фактически я случайно попросил сервер зарезервировать память сразу под четыре независимых сессии. Если не планируется параллельная работа нескольких кодинг‑агентов и нет лишней памяти — это бессмысленно, стоит ограничить флагом:

—parallel 18606b85342ef17ba89e0752c75ebc1a4

Финальная конфигурация запуска для моего железа выглядит так:

./build/bin/llama-server —model /media/storage/models/north-mini-code/North-Mini-Code-1.0-UD-Q4_K_M.gguf —jinja —n-gpu-layers 99 —ctx-size 65536 —parallel 1 —cache-type-k q8_0 —cache-type-v q8_0 —tensor-split 16,12 —temp 0.2 —top-p 0.9 —top-k 40 —repeat-penalty 1.15 —repeat-last-n 2048 —host 0.0.0.0 —port 8080dabaeea3e83334897f6d09467732390c

Тут нужно прояснить — если модель поддерживает 500к контекста — она поддерживает, но не бесплатно. Каждый дополнительный токен контекста увеличивает KV Cache, который, если отдельно не шаманить, потребляет ту же видеопамять, которую потребляют загруженные веса модели. Поэтому, если с одним экземпляром контекста llama сервер всё равно падает, ругаясь на недостаток память — стоит попробовать уменьшить контекст.

Также можно уменьшить n‑gpu‑layers, уменьшив количество слоёв модели, загружаемых в видеопамять, но это может сильно ударить по производительности — часть слоёв будет лежать в озу и обрабатываться на cpu, мои эксперименты с подобным показали, что в этом случае видеокарты простаивают, ожидая cpu. Хотя, возможно, я чего‑то не знаю и можно это как‑то оптимизировать, глубоко не копал.

Также можно сэкономить видеопамять, увеличив квантование KV‑кешей. Если грубо — суть квантования в переходе с более точного формата на более грубый, от чего незначительно страдает качество ответов.

Подключаем OpenCode

Тут тоже все просто, llama.cpp предоставляет OpenAI-compatible API. Устанавливаем OpenCode, пишем в конфиг:

{ «provider»: { «llamacpp»: { «npm»: «@ai-sdk/openai-compatible», «name»: «llama.cpp», «options»: { «baseURL»: «http://127.0.0.1:8080/v1», «apiKey»: «sk-local» } } } } 58b0cc5f6cb58606bbfc1b44ee8515ef

После этого OpenCode начинает использовать локальную модель как обычный OpenAI API.

Результаты

Итоговая конфигурация:

Параметр

Значение

Модель

North Mini Code UD-Q4_K_M

GPU

RTX 5060 Ti + RTX 3060

RAM

64 GB

Контекст

65536

Параллельность

1

Скорость

~84 tok/s

OpenCode

Да

OpenAI API

Да

Под рукой был такой проект:

999a7af4e8b44fba3d353fe129090dbd

Проект не маленький, далеко не идеальный, связан с финансами, в общем, близок к боевому проду. Нужно было добавить новую фичу — форму редактирования транзакции. Фаза планирования прошла успешно, связка OpenCode + NorthMiniCode успешно определила недостающие endpoints в backend части, позадавала вопросы о том, как будем реализовывать. На фазе реализации началось странное:

Зациклилось
Зациклилось

Модель начала зацикливаться, но это вылечилось корректировкой параметра –repeat-penalty и более не повторялось. Работа пошла:

Логи llama сервера
Логи llama сервера

Довольно интересно наблюдать за работой видеокарт при исполнении задачи, можно заметить рывки и приседания при вызове тулзов:

nvtop: Сверху 5060, снизу 3060, оранжевое — память, голубое — загрузка gpu
nvtop: Сверху 5060, снизу 3060, оранжевое — память, голубое — загрузка gpu
Агент в процессе работы
Агент в процессе работы

По итогу OpenCode бодро отчитался о результатах:

Все готово (почти)
Все готово (почти)

Но ревью показало, что результаты хоть и работоспособны, но не идеальны, забылось несколько старых импортов в TypeScript коде, размылись архитектурные границы. После фидбека OpenCode так же бодро все поправил. Задача решена, фича добавлена, NorthMiniCode работает.

Итог

В итоге мы имеем инструмент, способный на обычном домашнем компьютере помогать с планированием и писать код на уровне бухого мидла. Планирование и самопроверка — не самая сильная сторона NorthMiniCode, тут, возможно, стоит поэкспериментировать с другими моделями. Если углубится в эксперименты с квантированием и поглубже закопаться в llama.cpp — возможно, можно выжать ещё больше.

Пока оно у меня работает только на персональных проектах, в режиме «запустил проработанный заранее подробный план в ralphex loop и забыл до вечера». Но и в таком варианте это работает лучше, чем кодинг-агенты всего год назад. Полновесной заменой ClaudeCode или Codex это назвать сложно — нужно больше ревью, нужен более ответственный подход к планированию. Однако экономия времени налицо.

Сам факт self-hosted решения на таких мощностях дает надежду на скорое избавление от зависимости от воли нескольких крупных корпораций.

Иметь под рукой не зависящую от интернет-соединения вообще штуку, которая может быстро автоматизировать небольшой фикс/фичу/рефакторинг — бесценно.

Источник: habr.com

❌ Нет похожих статей с такими тегами

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Он сделал так, чтобы ваш бесплатный видеоплеер работал без сбоев. Теперь он делает то же самое для роботов. Новости робототехники ИИ добрался до коров. И оказался бизнесом на $2 млрд Архив рубрики ~Обо всем~ Российские ученые восстановили аксоны поврежденного спинного мозга свиней. Для этого они использовали фузогенный препарат Архив рубрики ~Обо всем~ Я провел тесты Siri AI на MacOS 27, используя те же методы, что и для ChatGPT и Gemini — вот результаты. Архив рубрики ~Обо всем~ Ранние земледельцы из неолитического поселения получали битум из двух источников. На это указал анализ находок из окрестностей Иерусалима Архив рубрики ~Обо всем~ Кишечные бактерии предскажут эффективность иммунотерапии только в сообществе: Медицина Архив рубрики ~Обо всем~ Ответы на мини-кроссворд NYT за пятницу, 19 июня. Архив рубрики ~Обо всем~ Магазин отказал в гарантии покупателю RX 9070 XT, пострадавшей от плавления 12V-2×6 Архив рубрики ~Коротко из Telegram~ От ANDROID AVTO с любовью 🚘 Архив рубрики ~Коротко из Telegram~ AVG Cleaner — Полезная системная утилита, которая позволит интеллектуально анализировать… Архив рубрики ~Коротко из Telegram~ Новость из Telegram 19.06.2026 22:20 Архив рубрики ~Коротко из Telegram~ ✅Solid Explorer File Manager ▶️Версия: 3.5.7 💬Solid Explorer File Manager… Архив рубрики ~Обо всем~ Зарянка покормила птенца оляпки. Необычный случай зафиксирован в Шотландии Новости робототехники Компания General Intuition ведет переговоры о привлечении 300 миллионов долларов при оценке примерно в 2 миллиарда долларов. Новости робототехники Он сделал так, чтобы ваш бесплатный видеоплеер работал без сбоев. Теперь он делает то же самое для роботов. Новости робототехники ИИ добрался до коров. И оказался бизнесом на $2 млрд Архив рубрики ~Обо всем~ Российские ученые восстановили аксоны поврежденного спинного мозга свиней. Для этого они использовали фузогенный препарат Архив рубрики ~Обо всем~ Я провел тесты Siri AI на MacOS 27, используя те же методы, что и для ChatGPT и Gemini — вот результаты. Архив рубрики ~Обо всем~ Ранние земледельцы из неолитического поселения получали битум из двух источников. На это указал анализ находок из окрестностей Иерусалима Архив рубрики ~Обо всем~ Кишечные бактерии предскажут эффективность иммунотерапии только в сообществе: Медицина Архив рубрики ~Обо всем~ Ответы на мини-кроссворд NYT за пятницу, 19 июня. Архив рубрики ~Обо всем~ Магазин отказал в гарантии покупателю RX 9070 XT, пострадавшей от плавления 12V-2×6 Архив рубрики ~Коротко из Telegram~ От ANDROID AVTO с любовью 🚘 Архив рубрики ~Коротко из Telegram~ AVG Cleaner — Полезная системная утилита, которая позволит интеллектуально анализировать… Архив рубрики ~Коротко из Telegram~ Новость из Telegram 19.06.2026 22:20 Архив рубрики ~Коротко из Telegram~ ✅Solid Explorer File Manager ▶️Версия: 3.5.7 💬Solid Explorer File Manager… Архив рубрики ~Обо всем~ Зарянка покормила птенца оляпки. Необычный случай зафиксирован в Шотландии Новости робототехники Компания General Intuition ведет переговоры о привлечении 300 миллионов долларов при оценке примерно в 2 миллиарда долларов.

Оставить комментарий