Consulting Work Блог Контакт
← Назад к блогу

Я отдал 3D-принтер под управление ИИ за один вечер. Он трижды промахнулся - и это лучшая часть

Я отдал 3D-принтер под управление ИИ за один вечер. Он трижды промахнулся - и это лучшая часть

Камера внутри принтера показала пустой стол, сопло уехало в угол, поехал первый слой. Я смотрю на телефон и понимаю: пластик не идёт. Сопло греется, голова ездит, а из неё - ничего. Принтер честно печатал воздух.

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

С чего началось

У меня Bambu Lab P1S и Claude Code на маке. Идея была наглая: дать ИИ управлять принтером целиком. Не «сгенерируй мне STL», а по-настоящему - посмотреть камерой, что на столе, нарезать модель, зарядить нужный пластик, запустить печать, следить за ней. И заодно уметь то, что мне давно надоедало делать руками: «напечатай эту деталь на 3% больше», «поменяй на модели цифру».

За вечер это выросло в живую систему: два набора инструментов (отдельно 3D-моделирование, отдельно управление принтером), связь с P1S по локальной сети, снимки с камеры, слайсинг из командной строки.

И первым делом система прогнала саму себя на маленьком деле - спроектировала с нуля брелок с моими инициалами, нарезала его и подготовила к печати. Ерунда на вид, но это была проверка всей цепочки разом: от «хочу такую штуку» до готового к столу файла, без единого клика мышкой. Цепочка сработала. А дальше начались настоящие приключения - и интересно как раз то, где я спотыкался.

Брелок с инициалами, спроектированный системой с нуля
Первое сквозное испытание: брелок, придуманный и подготовленный к печати с нуля, без единого клика мышкой.

Грабли №1: печать по воздуху

Первый запуск - и принтер поехал печатать без пластика. Я это увидел глазами раньше, чем понял головой: на камере голова ездит, а следа нет.

Камера внутри Bambu Lab P1S: печатающая голова над пустым столом
Камера внутри P1S: голова ездит над столом, а пластик не идёт. Печать по воздуху, вид изнутри.

Причина оказалась тупой и красивой одновременно. Когда нарезаешь файл «на лету», без привязки к AMS, в задании нет команды «подай филамент из лотка». Принтер считает, что пластик уже в сопле, и спокойно рисует пустоту. Стандартная библиотечная команда «загрузить филамент» слала код лотка 255 - а это значит «внешняя катушка, никакая». Пришлось лезть в протокол и слать реальный номер лотка. После этого принтер честно потянул коричневый PLA из третьего слота, прогрелся, продул сопло - и поехал уже с пластиком.

Урок, который я записал себе намертво: проверяй не «команда принята», а «в сопле реально есть филамент».

Грабли №2: шрифт, который я угадывал три раза

У меня есть модель здания университета, на крыше выгравировано «Graduation 2026». Я захотел поменять год - логично же, одна цифра.

Оказалось, это детектив. Модель - готовая STL, никаких «просто поменять текст». Сначала я вообще анализировал не тот скат крыши: по рендеру нельзя понять, с какой стороны смотришь, и я два часа ломал голову над геометрией, которой там не было. Прорыв дал «рентген» - карта глубины, где надпись читается как на фото, с точными координатами каждой буквы.

Карта глубины модели: надпись «Graduation 2026» проступает как на рентгене
«Рентген» модели - карта глубины. Надпись читается как на фото, с точными координатами каждой буквы, и сразу видно, с какой стороны крыши смотришь.

Дальше - шрифт. Первый вариант я подобрал на глаз, получилась семёрка не в тему. Мимо. Потом алгоритм сравнил гравировку со всеми шрифтами системы и уверенно сказал «Didot Bold с растяжкой». Тоже мимо - растяжка оказалась оптическим обманом от наклона крыши, а не настоящей. И только когда я догадался залезть в исходный проект Bambu Studio, нашёл правду: там было записано «Noto Sans Batak» - шрифт без латинских букв, и программа молча подставила запасной, китайский Songti. Вот им всё и напечатано.

Вытащенная из модели маска надписи «Graduation 2026» чёрным по белому
Вытащенная маска надписи - по ней алгоритм и сравнивал начертания со всеми шрифтами системы.

Даже когда шрифт стал правильным, я ещё дважды ловил себя на мелочах: семёрка стояла чуть ниже соседних цифр, потом чуть выше. Мерил по линейке прямо на модели, пока не легло в ноль. Заодно понял, почему семёрка «не такая»: в шрифте она от природы чуть короче двойки, это дизайн, а не ошибка.

Цифры «2027» с линиями капители и базовой линии для выравнивания
Линейка прямо на модели: семёрка то ниже, то выше соседей. Двигал, пока не легло в ноль.

Грабли №3: уголки поехали вверх

Печать идёт, я смотрю трансляцию с телефона - и вижу, что концы длинных зданий приподнялись над столом. Первая мысль была «перегрелся стол».

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

Трансляция с камеры: коричневые здания почти готовы, одно свалилось в клубок спагетти
Тот же прогон, но дальше: одно из зданий оторвало, и оно свернулось в клубок лапши. Вот так на деле и выглядит «с первого раза не вышло».

И вот тут я сам себя поймал на неправильной догадке. Проверил по документации Bambu и по практике: «слишком горячий стол» в диапазоне PLA - это миф. 55 градусов - ровно то, что нужно; перегрев дал бы раздутый низ, а не задранные края. Задранные углы - это усадка плюс недостаточное прилипание. У меня в профиле нарезки просто была выключена кайма, и длинные тонкие края ничем не прижимались. Плюс обдув на всю мощность с первых слоёв ускорял усадку.

Из этого родилась, наверное, самая полезная штука за вечер: база типовых ошибок печати и проверка модели ДО запуска. Теперь система сама смотрит на деталь и говорит: «большой плоский след - добавь кайму», «крутое нависание - нужны поддержки», «высокая деталь на узком основании - опрокинется». Не после провала, а заранее.

И тогда я дал ей глаза

Само коробление я поймал на трансляции случайно - просто смотрел. И подумал: а зачем «просто смотреть» должен я? Пусть смотрит система.

Теперь каждые пять минут во время печати она берёт кадр с камеры и спрашивает у зрячей модели: всё нормально или уже катастрофа - клубок «спагетти», отвалилась деталь, наплыв на сопле? Если провал - мне падает сообщение с фотографией, ещё до того, как принтер сам поймёт, что печатает в пустоту. Раньше про сорванную печать узнаёшь через час, когда весь стол в лапше. Теперь - почти сразу.

Честно скажу, где предел: грубый провал вроде спагетти она видит уверенно, а вот лёгкое коробление, как у моих зданий, назвала «чисто». Так что глаза - это страховка от катастрофы, а не замена проверке перед печатью. Пусть будут оба: и «подумать заранее», и «присмотреть по ходу».

Момент, когда я реально охренел

Знаете, в какой момент до меня дошло, что это не игрушка? Я сказал словами: «проверь камерой, что стол пуст, и запусти печать». И принтер в другой комнате загудел. Сам. Прогрелся, лизнул стол, потянул пластик и поехал - а я сижу с телефоном и смотрю на это как на фокус.

Камера внутри принтера: чистый пустой стол, готовый к печати
«Проверь камерой, что стол пуст, и запусти печать». Стол пуст - и железка в другой комнате загудела сама.

До этого я двадцать раз открывал слайсер мышкой, возил модель по столу, тыкал галочки. А тут - одна фраза, и железка в соседней комнате делает физический объект. Я реально сидел и глупо улыбался. Не потому что «ИИ умный», а потому что впервые расстояние между «я хочу вот такую деталь» и «деталь лежит на столе» схлопнулось почти в ноль.

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

Как всё это стало командами (про MCP)

Чтобы это не было кучей разрозненных скриптов, я собрал всё в два набора инструментов - то, что называют MCP-серверами. Разделил специально: один отвечает только за 3D-модели (создать, измерить, растянуть, добавить текст, разрезать, посчитать генеративно, проверить перед печатью), второй - только за принтер (статус, камера, зарядить пластик, нарезать, запустить, стоп, включить трансляцию).

Смысл простой: теперь принтер и моделирование - это не программы, в которые надо лезть, а обычные команды, которые понимает ассистент. «Покажи камеру». «Проверь модель на проблемы». «Посчитай кронштейн под такую нагрузку». «Запусти печать с коричневого лотка». Разделил на два сервера намеренно - чтобы работа с формой и работа с железом не путались, как отвёртка и дрель лежат в разных ящиках.

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

Приватная камера, которую нельзя найти

Отдельная история - трансляция с камеры. Я хотел смотреть печать с телефона откуда угодно, но чтобы доступ был только у меня и чтобы эту дверь нельзя было даже нащупать.

Сделали через мой собственный сервер, а не через публичный сервис. Случайное имя под общим сертификатом, чтобы его не было в поисковых логах. Вход только по личному сертификату на устройстве - без него сервер рвёт связь ещё до пароля, перебирать нечего. Прямой заход по адресу сервера просто обрывается. Паранойя? Возможно. Но камера внутри моего дома - ровно тот случай, где паранойя уместна.

И финал, ради которого всё затевалось

В одном ролике я увидел стул, где несущий «скелет» спроектирован генеративно: задаёшь, где крепления и где нагрузка, а расчёт по прочности сам убирает весь лишний материал. Остаётся органическая структура, похожая на кость. Мне захотелось так же.

Теперь система это умеет. Задаёшь габарит, точки опоры и нагрузку - и солвер выдаёт ферменную деталь, где материал стоит только там, где реально работает. Первый кронштейн уже лежит готовым к печати.

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

Первая цифра - три часа. Следующие три - по минуте

Вот это, наверное, и есть главное, что я понял за вечер.

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

Готовая модель здания с надписью «Graduation 2027»
Первая правильная семёрка - результат почти трёх часов возни. Зато после неё система уже знала, как делать год.

А потом я просто сказал: «теперь сделай 2028, 2029 и 2030». И вот тут случилось то, ради чего всё и затевалось. Правила уже записаны, инструменты собраны, шрифт и глубина выверены - и три новых года вышли за минуту-две каждый. Сразу правильные. Без единой итерации.

То есть я сначала потратил часы, чтобы научить систему делать ОДНУ вещь хорошо. А дальше все похожие задачи она щёлкает мгновенно. Первая деталь оплачивает всю дорогу; остальные едут по ней бесплатно.

И это оказалось не разово

Дальше пошли обычные просьбы - и вот тут стало видно, что вечер был потрачен не зря.

Я захотел напечатать те же здания на другие годы. Просто сказал: сделай 2028, 2029, 2030. Через пару минут все три лежали готовые - с той же выверенной глубиной и шрифтом, что я так долго вылизывал на семёрке.

Синтетический рендер стола с моделями зданий на 2028, 2029 и 2030 годы
2028, 2029, 2030 - выехали за минуту-две каждый, сразу правильные, с той же глубиной и шрифтом, что я вылизывал на семёрке.

Потом всплыла отличная история про ошибку - и про то, как быстро она теперь чинится. Оказалось, для годов взяли НЕ ту модель здания: старый черновик вместо финальной версии, которую я реально отправлял в университет. Я сказал об этом - и система полезла в мою почту, нашла то самое немецкое письмо с вложением, определила правильный файл (с открытой аркой-проходом и расширенным слотом под фотографию), сверила геометрию и переприменила все четыре года уже к правильной модели. Минуты. Ошибка исправилась почти так же быстро, как возникла.

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

Реальный кадр с камеры: четыре ровно напечатанных здания с годами на крышах
Кадр с камеры принтера: четыре здания с каймой, углы прижаты, годы на крышах. С первого запуска - все прошлые ошибки уже в правилах.

Здания на четыре года, исправленная на лету модель - и всё это уже без трёхчасовых мучений. Первый раз учишь, дальше просто пользуешься.

Подставка, которая нас мучает до сих пор

А потом я попросил подставку под ноутбук - и на этом лёгкая жизнь закончилась.

Началось бодро. Я назвал модель, Dell Latitude 5430, сказал «складную и лёгкую» - и через несколько минут получил плоский набор из четырёх деталей: две ажурные боковины, посчитанные под нагрузку, две поперечины, всё защёлкивается за пятнадцать секунд, весит около 55 граммов. На бумаге - победа.

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

Я его забраковал. «Складная» в моей голове значило не «разбери на палки и сложи в стопку», а настоящие шарниры: раскрыл - поставил, сложил - плоская пластина в сумку. Один предмет, ни одной отделяемой детали. Сказал переделать.

И вот тут началась сага, которая идёт до сих пор.

Сначала были костяные формы - скелет из плавленых веток, красивый в отдельных ракурсах и совершенно нерабочий как механизм: петля, слепленная из капель, не крутится. Потом ворониевая резьба - уже теплее, ячейки градиентом, как в дизайнерских вещах. Потом ночь, когда генератор без проверок наштамповал десяток «вариантов» и слал их мне в телеграм. Утром я написал честно: это говно. Не видно, как оно складывается, ноутбук на половину из них не поставишь, а напечатай - и ничего не поедет.

Костяная фаза: скелет из плавленых веток
Костяная фаза. Вблизи - почти скульптура, как механизм - ноль: петля из капель не крутится.

Ворониевая фаза: складной клин с ячейками-градиентом
Ворониевая фаза: ячейки плотнее у краёв, крупнее в середине. Уже похоже на вещь, но механизм ещё сырой.

Ночная фаза: один из автоматических вариантов, отправленных в мусор
Из ночной серии без проверок. Таких пришло десять. Все - в мусор, и поделом.

После этого разноса я перестроил процесс - и вот это, мне кажется, самая интересная часть. Теперь по ночам крутится автономный цикл: каждые несколько минут свежая сессия читает файл состояния, изучает настоящие складные подставки с высокими оценками, улучшает генератор и строит кандидата. А дальше главное слово - «доказывает». Складывание проверяется геометрией: поворот вокруг реальной оси петли, ни одного пересечения деталей в обеих позах, центр тяжести ноутбука строго между опорами, нагрузка идёт в жёсткий упор, а не в тонкий штырь. Потом отдельный судья-дизайнер решает, не стыдно ли это вообще показывать. Мусор до телефона больше не доезжает.

За первую же ночь цикл намотал тринадцать итераций. Вот лучшее на утро: ажурная дека, нога-подпорка на печатаемой сразу собранной петле, кулачковый замок, который вес ноутбука сам же и прижимает. 111 граммов.

Складная подставка: раскрытый вид, ворониевая дека
Утро после тринадцати итераций: ажурная дека, нога-подпорка, кулачковый замок. 111 граммов.

Та же подставка сложенная - плоская пластина
Она же сложенная: плоская пластина, петля лежит на столе - так и печатается, уже собранной.

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

Середина складывания: нога на полпути
Середина хода: видно, что складывание - это настоящий поворот на петле, а не магия рендера.

Готово? Ещё нет. Я всё ещё не уверен в прочности кулачка под полутора килограммами, мне не нравится узкий хват, и утром я снова отправил всё на переделку - теперь с каталогами петель и замков, которые параллельно собирают три отдельных агента. Но сравните точки: от «набора палок» до объекта, который сам доказывает числами, что складывается и держит.

Страдание? Ещё какое. Но ровно на таких страданиях система и учится - каждый разнос превращается в новое правило проверки. И я почти уверен: следующую складную вещь она сделает с первого захода. Проверим.

Что я вынес

Самое ценное за вечер - не то, что заработало с первого раза, а то, что НЕ заработало. Печать по воздуху, три промаха по шрифту, задранные углы, неверная догадка про перегрев. Каждая ошибка превратилась в правило, которое система теперь помнит за меня.

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

Но я и не покупал пятиминутный шорткат. Я строил не «замену цифры», а систему, которая теперь может сделать почти что угодно: спроектировать, посчитать на прочность, нарезать, зарядить пластик, запустить печать, присмотреть за ней и подсказать, где я налажаю. Один раз вложился - и дальше это работает на любой объект, а не на одну надпись.

И да, честно: это пока сыро. Альфа, может даже раньше альфы. Насколько качественно оно будет вытягивать сложные вещи - ещё проверять и проверять. Первая партия вышла с подранными углами, настройки были не те; но база ошибок уже собрана, профиль исправлен, и следующая партия вышла ровной - фото с готовыми зданиями выше. Не идеально с первого раза - а быстро до правильного.

И знаете что? Вот этот момент - когда у тебя в руках сырая, живая, только что построенная штука, которая уже что-то умеет и вот-вот научится большему - это самый кайф. Не готовый глянцевый продукт, а вот эта стадия, когда всё только рождается. Я реально от этого кайфую.

Я до сих пор не уверен, что стул из того ролика выдержит мои 80 килограммов. И не уверен, что моя система завтра не споткнётся на чём-то новом. Но складную подставку для ноутбука, которую спроектировала машина, я уже хочу подержать в руках - и это чувство важнее любой гарантии.

Нужно что-то похожее для вашего бизнеса? Посмотрите, как я могу помочь →