2026-09-05

Локальная агентская разработка

Можно ли программировать с AI-агентом полностью локально?

Программировать с Codex или Claude Code легко и приятно. Даёшь агенту задачу, он читает проект, меняет несколько файлов, запускает тесты, видит ошибку, исправляет её и продолжает работу, пока не получит результат.

Но у такого подхода есть очевидное ограничение: исходный код отправляется в облачный сервис.

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

Причём хотелось проверить это не на специально собранном AI-сервере, а на железе, которое уже было под рукой: MacBook Pro 2021 года с M1 Pro и 32 GB unified memory.

Модель действительно помещается

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

Я попробовал несколько вариантов Qwen 3.6 через Ollama:

  • Qwen 3.6 27B Coding;

  • Qwen 3.6 35B-A3B;

  • несколько разных агентских оболочек.

Особенно любопытным оказался Qwen 3.6 35B-A3B. Несмотря на 35 миллиардов параметров, это MoE-модель: на каждом токене активно только около 3 миллиардов параметров. Поэтому она неожиданно оказалась быстрее dense-модели 27B.

То есть довольно быстро выяснилось, что проблема не в том, можно ли вообще запустить современную coding-модель локально.

Можно.

Гораздо интереснее оказалось то, что происходит после запуска.

Эксперимент 1: Codex + Ollama

Codex умеет работать не только с моделями OpenAI, но и с локальным OpenAI-compatible endpoint. Поэтому схема получилась довольно естественная:

Codex → Ollama → Qwen

Inference при этом выполнялся на старом MacBook, а сам Codex и исходный код могли находиться на другой машине.

Технически всё заработало.

Практически — не очень.

Первый ответ однажды занял около семи минут. Кроме того, длинный агентский цикл оказался нестабильным: агент мог выполнить несколько действий, а затем просто остановиться, хотя задача очевидно ещё не была закончена.

И это оказалось важным наблюдением.

Для обычного чат-бота скорость генерации — одна из основных характеристик. Для coding agent этого недостаточно.

Хороший агент должен уметь сделать:

прочитать код → изменить → запустить тест → увидеть ошибку → исправить → снова запустить тест → продолжать до результата

Если после третьего шага он решает, что работа закончена, количество tokens per second уже не особенно важно.

Эксперименты с другими агентами и моделями

Дальше я попробовал несколько комбинаций агентов и локальных моделей.

Qwen 3.6 35B-A3B, например, на M1 Pro генерирует заметно быстрее 27B Coding. Я также попробовал Gemma и OpenCode.

Но постоянно возникала одна и та же проблема: агент начинал работать вполне разумно, выполнял несколько действий, а потом как будто “засыпал” посередине задачи.

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

Если мне нужно постоянно следить за агентом и говорить ему «продолжай», то часто быстрее просто сделать изменение самому.

Эксперимент 4: Pi + Qwen 3.6 27B Coding

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

Pi + Qwen 3.6 27B Coding.

Она оказалась не самой быстрой.

Но это пока единственная из проверенных мной комбинаций, которая достаточно стабильно доводит агентский цикл до конца.

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

И результаты оказываются вполне приемлемыми.

Это довольно сильно изменило мой взгляд на локальные coding-модели.

Оказалось, что вопрос уже не звучит как:

Может ли небольшая локальная модель программировать?

Может.

Более интересный вопрос:

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

И здесь разница между агентами оказалась, возможно, даже важнее разницы между моделями.

Так можно ли заниматься локальной агентской разработкой? Да.

На MacBook Pro 2021 года с 32 GB памяти я могу запустить полноценную coding-модель и дать ей реальную задачу в существующем проекте. Агент может читать репозиторий, менять код, запускать тесты и самостоятельно получать рабочий результат.

Ещё несколько лет назад это само по себе звучало бы довольно фантастически.

Но есть вторая часть ответа:

на моём железе это пока практически не имеет смысла.

Qwen 3.6 27B Coding работает достаточно хорошо, но слишком медленно. Некоторые операции занимают минуты. В результате работу, которую агент делает локально, я зачастую могу быстрее выполнить руками.

Облачные Codex и Claude Code ощущаются быстрее на порядок.

Поэтому эксперимент одновременно дал два результата:

локальная агентская разработка уже работает; потребительский ноутбук пятилетней давности для неё уже недостаточно быстр.

Следующий эксперимент — железо

Поэтому следующий шаг будет не очередная модель.

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

Pi + Qwen 3.6 27B Coding

и заменить только hardware.

В идеале — взять на некоторое время workstation с RTX 5090 32 GB и повторить те же реальные задачи.

Это даст гораздо более интересный ответ:

Что произойдёт, если убрать главный недостаток локального агента — скорость?

Если одна consumer GPU сможет сделать локальный Qwen достаточно быстрым, а Pi сохранит способность стабильно доводить задачи до конца, то полностью offline agentic development перестанет быть техническим экспериментом и превратится во вполне практичный рабочий инструмент.

И вот это уже хочется проверить.

 

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

 
  2026-07-19

Выложил Voice Inbox в закрытое тестирование

Выложил Voice Inbox в закрытое тестирование. 

 

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

 
  2026-07-13

Voice-Inbox на KMP

Захотелось пощупать Kotlin Multi Platform - это фреймворк позволяющий создавать нативные приложения под iOS и Android. Мне очень понравилось, тут еще Codex убрали лимиты на использование токенов. Вобщем - теперь Voice-Inbox работает еще и под iOS!

 

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

 
  2026-06-29

Voice Inbox

Замечаю, что чем полезнее и нужнее программа, тем с меньшей вероятностью я выложу её в публичный доступ — нужно это исправлять. Недавно заопенсорсил штуку, которую я уже несколько месяцев использую на регулярной основе, и этот текст тоже был подготовлен при помощи неё. Android-приложение для офлайнового распознавания голосовых заметок. Программа использует локальную модель и работает полностью офлайн. Я наговариваю заметки на диктофон на wear os часах, Android уже умеет автоматически сохранять эти звуковые файлы на телефон, и уже на нём я просто запускаю приложение и распознаю их в текст. Офигенно: просто и быстро.

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

 

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

 
  2026-05-23

Их разыскивает милиция

Несколько лет назад на одном рабочем созвоне коллега в шутку сказал:

— Кажется, я видел твоё фото на доске «Разыскивается полицией».

Мы посмеялись — такого точно не могло быть.

Но через несколько минут он прислал фотографию из полицейского участка в Самаре. И там действительно висело моё фото. Оказалось, местная полиция скачала мое фото с моего же сайта как пример как нужно кадрировать фото на заявление на паспорт.

В то время у меня был небольшой pet project — сервис для подготовки фотографий на документы. Он автоматически форматировал фото в соответствии с требованиями для паспортов и виз, чтобы их можно было быстро распечатать где угодно.

Проект давно перестал существовать. Но недавно мне снова понадобилось делать фотографии на документы, и я решил восстановить идею уже на современных технологиях.

И вот что меня действительно удивило.

То, что раньше требовало серьёзного backend’а, сложной обработки изображений и большого количества времени, сегодня можно собрать буквально за несколько часов.

Современный браузер теперь умеет:

  • удалять фон прямо на клиенте,
  • автоматически кадрировать фото,
  • подгонять его под официальные требования,
  • и готовить финальную версию для печати практически на любом принтере или в фотокиоске супермаркета.

Весь проект получился полностью open source и задеплоен на GitHub Pages. Privacy First - фото остается в браузере, open source - все как я люблю.

Иногда лучший способ почувствовать, насколько далеко шагнули технологии — это попробовать заново собрать собственный старый проект спустя несколько лет.

 

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

 
  2026-03-28

Блеск и нищета float

Какое расстояние между соседними числами в float? Что будет если к числу с плавающей точной прибавить другое чесло с плавающей точкой? Зависит от значения, результат может равняться ожидаемому но в некторых случаях разница между результатом и исходным числом может быть нулевой а в некторых отличаться на несколько сотен!

#include <stdio.h>

int main(void) {
    float x = 1e10f;

    printf("x        = %.0f\n", x);
    printf("x + 1    = %.0f\n", x + 1.0f);
    printf("x + 1000 = %.0f\n", x + 1000.0f);
    printf("x + 1024 = %.0f\n", x + 1024.0f);

    return 0;
}
	

x = 10000000000
x + 1 = 10000000000
x + 1000 = 10000001024
x + 1024 = 10000001024

Из-за особенностей хранения float при малых значениях точность представления чисел сопоставима с int а на больших значениях рассторяния между числами на численной оси увеличиваются и достигают довольно больших значений. Прям очень неожиданно может получиться если это не учитывать!

 

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

 
  2026-03-17

Диаграммы и ztools

Выложил новую версию ztools. Добавил примеры работы с графикой - круговые и пончиковые диаграммы. Примеры почти целиком сгеренировал Codex. Из-за отсутствия прослойки вроде виртуального DOM размер библиотеки получается минимальный - ее можно включить в промт агенту целиком и агент сразу понимает как писать код с ее использованием.  Получается AI Friendly Dom-First Reactivity. Прям здорово!

 

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

 
  2026-02-28

Опубликовал ztools

Меня давно волнует вопрос - почему javascript библиотеки такие грамоздкие? Репозиторий React занимает больше гигабайта! А точно, проблема, которую решает реакт может должна решаться набором программ с кодовой базой размером в 10 инсталлятора Windows NT?

Оживил, вернее переписал с нуля ztools.org.

Ztools - это небольшая библиотека размером всего в несколько сотен строчек кода на JavaScript, которые добавляют реактивность, конcтруирование dom элементов, веб-компоненты, SSR и многое другое...

Конечно это вайбкодинг, посмотрим что из этого получится...

 

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

 
  2026-02-20

Поставил OpenClаw

Сказать, что я под впечатлением это ничего не сказать. Разработчик, который может жить в лаптопе и питается электричеством и токенами. При этом всегда готов помочь, умеет использовать все инструменты которые умеет использовать обычный человек, и создает свои, готов работать 24 часа в сутки за умеренную плату. Да, это не бесплатно - ему нужны токены и электричество, как джин из анекдота, исполняющий желания за деньги.

 

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

 
  2026-01-12

Визуализация клавиатуры на экране

Просто удивительно, как быстро стало можно сделать прототип для своей идеи!

Одной из проблем кастомных клавиатур является невозможность быстро освоить печать на них. Хочется, чтобы было средство визуализации раскладки.

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

 

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