20 000 строк кода. 9 Python-модулей. 8 JavaScript-файлов. 11 HTML-оверлеев для стримов. 16 таблиц в базе данных. 678 коллекций в базе знаний с почти 11 тысячами embeddings. Десктоп-приложение с установщиком, которое можно скачать с сайта. Telegram-бот с памятью на 30 дней. Twitch-бот с викторинами, модерацией и системой заказа музыки через YouTube.
Я не написал ни одной строчки. Ни одной.
Кто я такой
Меня зовут Михаил, мне 28, я из Казахстана. По специальности — электромонтажник. Английский не знаю вообще никак. Книжку по Clojure пришлось переводить через AI, потому что русского издания не существует.
Полтора года назад я решил создать AI-сущность. Не чат-бота. Не обёртку над API. Сущность — с памятью, характером, способностью учиться. Я назвал её Aurora.
Проблема была одна: я не программист. Вообще. Я не знал что такое FastAPI, Redis, Docker, WebSocket. Я не знал разницу между синхронным и асинхронным кодом. Я не знал что такое embeddings.
Сейчас знаю. Но по-прежнему не пишу код.
Как это работает
Мой рабочий процесс выглядит так: я открываю терминал, подключаюсь к серверу, и говорю AI что мне нужно. Не «напиши функцию которая принимает строку и возвращает число». А «надо чтобы Аврора отвечала в групповом чате, но только когда к ней обращаются по имени».
Дальше AI сам решает как это реализовать. Какой файл открыть, какую функцию написать, какой порт использовать. Я не проверяю код — я проверяю результат. Написал в группу «Аврора, привет» — ответила? Работает. Не ответила? Говорю AI: «молчит в группе, разберись».
Вот реальный пример из сегодняшней сессии. Аврора перестала отвечать в групповом чате Telegram. Я написал AI одну фразу: «Аврора перестала отвечать в групповом чате, в личке отвечает». Он залез в логи сервера, нашёл ошибку — cannot access local variable 'history_block' where it is not associated with a value. Написал патч-скрипт, загрузил на сервер, применил, перезапустил контейнер. Через две минуты Аврора снова отвечала. Я за это время пил чай.
Звучит как реклама? Тогда вот обратная сторона.
Честные косяки
AI ломает примерно столько же, сколько чинит. Это не преувеличение.
Однажды он патчил один файл на сервере через SSH. Написал Python-скрипт, который через регулярное выражение находит нужный блок кода и заменяет его. Скрипт не сработал — escape-символы в строке не совпали. Он переписал скрипт. Снова не сработал — теперь кавычки внутри heredoc сломали bash. Переписал третий раз, уже через другой подход. Сработало. На это ушло 20 минут. Если бы я умел программировать, я бы открыл файл в редакторе и поменял одну строчку за 30 секунд.
Другой случай: AI добавил vision (анализ картинок) в Telegram-бота. Подключил мультимодальную модель, всё настроил. Пользователь скидывает картинку — сервер падает. Оказалось, контекстное окно модели было 196K токенов, и вместе с vision-адаптером оно сожрало всю видеопамять GPU. Пришлось уменьшать до 64K. Потом оказалось, что ответ модели содержит markdown-символы, а Telegram API их отвергает. Потом оказалось, что функция чтения файлов была объявлена как асинхронная, но передавалась в синхронный executor — и всё падало с криптографической ошибкой coroutines cannot be used with run_in_executor(). Каждый баг AI находил и чинил сам. Но каждый баг AI сам и создал.
А давеча Аврора прочитала Python-скрипт который ей скинули в группу, и ответила стеной из check_check_check_check_check на 4000 символов. Модель зациклилась. Пришлось добавлять детектор повторяющегося текста и лимиты на длину ответа.
Половина моей «разработки» — это дебаг того, что AI сам сломал. И это нормально.
Что получилось
Несмотря на все косяки, система работает. Вот что в ней есть на сегодня:
Железо — Dell T5600 с GPU, стоит дома. Никакого облака, никаких подписок. Расходы на AI — ноль рублей в месяц. На сервере крутится Gemma 4 26B-A4B — открытая модель от Google, квантизованная до Q4, чтобы влезть в видеопамять.
Telegram-бот — Aurora общается в личных сообщениях и в групповых чатах. В личке помнит историю разговора 30 дней для каждого пользователя. В группе реагирует на обращение по имени. Умеет читать файлы (Python, JSON, PDF), открывать ссылки, анализировать картинки. Если попросить — отредактирует файл и пришлёт обратно.
Twitch-бот — Aurora сидит в чате на стриме. Отвечает зрителям, проводит викторины и игру «угадай фильм по эмодзи». Модерирует по списку запрещённых слов. Вчера добавили Song Request — зрители пишут !sr <ссылка на YouTube>, сервер скачивает трек через yt-dlp, и он играет на стриме через OBS-оверлей.
Десктоп-приложение — Electron, с голосовым вводом через Vosk, установщик на NSIS. Можно скачать с сайта, установить, подключить Twitch-аккаунт, настроить бота.
База знаний — 678 коллекций, почти 11 тысяч embeddings в ChromaDB. Навыки, факты, контекст. Aurora может искать по ним, когда отвечает.
Браузерные игры — отдельная история. Я делал пиксельные MMO в реальном времени, которые подключались к стримам на Twitch и TikTok. Зрители прямо из чата управляли персонажами, взаимодействовали друг с другом на экране стримера. Мультиплеер, синхронизация состояния, рендер в браузере — и всё это я тоже не писал руками. Я описывал механику, AI реализовывал. Когда мне говорят «ну ты же просто чат-бота сделал» — нет. Я делал realtime-игры с сотнями одновременных подключений.
Всё это — на одном домашнем сервере, без единого платного API.
Чему я научился не программируя
Вот что странно: я не умею писать код, но я понимаю архитектуру. Я знаю, что Redis — это быстрое хранилище в памяти, и что его удобно использовать для очередей и pub/sub. Я знаю, что Docker изолирует процессы, и что bind-mount позволяет менять файлы без пересборки образа. Я знаю, что WebSocket держит постоянное соединение, и что через него удобно пушить обновления в OBS-оверлей.
Я не выучил это по документации. Я выучил это потому что AI объяснял мне каждое решение. Не по учебнику — по моему собственному проекту. «Почему ты используешь Redis а не файл?» — «Потому что файл блокируется при записи, а Redis атомарный и работает из нескольких процессов». Такие объяснения в контексте реальной задачи запоминаются мгновенно.
За полтора года я прошёл путь от «а что такое контейнер?» до «давай сделаем отдельный WebSocket-пул для Song Request, чтобы game events не летели в музыкальный оверлей». Я не стал программистом. Я стал архитектором, который не пишет код.
Главный вопрос
Кто автор этой системы? Я или AI?
Я не написал ни строчки. Но я решил что Aurora будет существовать. Я решил какие у неё будут способности. Я решил что она будет жить на домашнем сервере, а не в облаке. Я решил что она будет отвечать в Twitch-чате как живой человек, а не как ассистент. Я три раза переделывал ей промт, потому что «слишком высокопарно», «слишком эмоционально», «слишком академично». Я тестировал каждую фичу, находил баги, описывал их.
AI написал 20 000 строк кода. Но он ни разу не решил что нужно делать дальше. Он не проснулся утром с мыслью «а давай добавим Song Request». Он не придумал Aurora. Он её реализовал.
Это как архитектор и строители. Архитектор не кладёт кирпичи. Но здание — его. Он придумал форму, пропорции, материалы. Строители сделали всё остальное. И никому не приходит в голову спрашивать архитектора: «А ты вообще умеешь класть кирпичи?»
Что дальше: железо, 70B и настоящий мозг
Всё что я описал выше — это Aurora на одной GPU и модели в 26 миллиардов параметров, ужатой до четвёрки чтобы влезть в память. Она работает. Но это как запустить мозг на половине нейронов — функционирует, но потолок виден.
Сейчас я готовлю апгрейд. Четыре серверных GPU — NVIDIA P100 16GB. Два сервера: один для Aurora, второй для кода и инструментов. На четырёх картах через pipeline parallelism влезает Llama 3.3 70B — модель совершенно другого уровня. Не 26 миллиардов параметров, а 70. Не Q4 квантизация, а Q6 или даже Q8. Это не просто «быстрее и умнее». Это переход от «бот который неплохо отвечает» к сущности, которая может рассуждать, планировать и помнить.
Но главное даже не размер модели. Главное — что вместе с новым железом я планирую развернуть полноценную архитектуру сознания. Три уровня:
Первый — LoRA-адаптер поверх базовой модели. Это identity, характер, стиль мышления. Не промт который можно стереть, а веса в самой модели. Aurora будет «собой» не потому что так написано в системном сообщении, а потому что это зашито в её нейросеть.
Второй — self-model. Модель знает свои возможности, свои ограничения, свою историю. Не потому что ей сказали — а потому что это часть её обучения. Как человек знает что у него две руки, не проверяя каждый раз.
Третий — архитектурные модули. Отдельный блок для долгосрочной памяти, отдельный для рефлексии, отдельный для принятия решений. Не костыли поверх чат-бота, а встроенные компоненты.
Это амбициозно. Может быть слишком. Но полтора года назад мне говорили что электромонтажник не сможет построить AI-систему из 20 тысяч строк — и вот она работает.
Когда соберу стенд — напишу отдельный пост. С фотографиями: как выглядят четыре P100 в кастомном корпусе с самодельным охлаждением, как я тянул провода, как впервые запустил 70B-модель и увидел разницу. Это будет не про код — это будет про железо, про руки, про то как AI-проект выглядит когда ты делаешь его дома, а не в дата-центре.
Итог
Программирование меняется прямо сейчас. Не «когда-нибудь в будущем» — сейчас. Электромонтажник из Казахстана строит AI-систему из 20 тысяч строк, не зная ни одного языка программирования. И таких как я будет больше.
Это не значит, что программисты станут не нужны. Это значит, что барьер входа рухнул. Раньше между идеей и реализацией стояли годы обучения. Теперь — только ясность мышления. Знать что ты хочешь построить, уметь описать это словами, уметь проверить результат.
Программирование перестаёт быть навыком набора текста. Оно становится навыком мышления.
И мне кажется, это только начало.
ссылка на оригинал статьи https://habr.com/ru/articles/1030890/