Введение
Все в мире изменил прогресс. Как быть? Меняется и бес.
Фауст, Гёте
Здесь не будет выводов и счастливого финала – время продолжает свой ход, а утилита, созданием которой я занимался последнее время, лишь только начинает совершать обдуманные действия. Но обо всем по порядку!
В начале была Идея, что уже само по себе необычно.
Что, если наш замечательный ЭйАй, потребляющий бесконечное количество энергии, сможет напрячь свои нейроны (не бесплатно, конечно) и извергнет из своих матриц нечто материальное, объемное. Вещь, которую возможно потрогать руками и на производство которой можно потратить еще несколько киловатт-час энергии.
Сказано, но не сделано. Одним из моих хобби является 3D-печать. Когда все формы для пельменей отлиты, а лампы светят люменами по всей квартире, встает вопрос, а что дальше печатать? Конечно, коробочки.
Меня всегда впечатляло само таинство преображения цифры в пластик – линии, так ювелирно точно стелящиеся поверх предыдущих, в конечном итоге, превращающиеся в нечто, до этого нереальное. Поэтому Идея резко преобрела очертания – мы делаем интерфейс к принтеру, чтобы наш ЭйАй сам создавал модели, которые мы потом сможем испечь.
Часть 1. Финкинк
Нельзя просто взять и подключить нейросеть к принтеру. Это как пытаться микроскопом вбить гвоздь в стену – вещи друг о друге ничего не знают и микроскоп на гвозди лишь посматривал. Сомнительно, но молоток. Так обстоят дела и с программами. Именно для взаимопонимания люди придумали всякие разные интерфейсы, попытались обернуть это стандартизацией, чтобы не изобретать под каждую вещь свою инструкцию и постараться не запутаться в фундаментальных подходах... Ленились, в общем.

Поиск подсказал, что принтер и ЭйАй я могу связать друг с другом непосредственно через возможности CAD программ - в моем случае, к Fusion 360 от славной компании Autodesk подключается плагин, сокращая взаимодействие с прототипом до кучки команд (API). Такую магию можно сделать используя Python! Скажу вам только – это то, что нужно!
Помимо API от Fusion, нам нужно как-то научить ЭйАй понимать, что можно нажимать, а что нельзя. Помните, я говорил о стандартизации? Для подобного взаимодействия люди тоже изобрели стандарт – Model Context Protocol (MCP) – некий Type-C в мире нейросетей. Через него ИИ получает набор инструментов, доступных здесь и сейчас. Хочешь удалить все файлы на сервере? Есть для этого MCP. Хочешь во сне летать – для этого тоже есть MCP от Авиасейлс – поиск дешев... (эта реклама не была оплачена)
Если кратко, через протокол MCP ЭйАй получает информацию про доступные функции, описание входных-выходных данных и решает, как именно выполнять команды, дабы исполнить прихоть пользователя наиболее эффективно. Аххаха, сжигая максимальное количество токенов, естественно!
– А хочешь, я расскажу тебе, как с помощью мириад токенов развернуть свой сервер с самыми красивыми тулами и стройными промтами, при этом не задолжав банку почку?
– Что?
– Это правильный вопрос! Сейчас я создам пошаговый план, десять списков дел и маленькую вафельницу. Обмазанную мыслями старых моделей. В конце нужно будет расписаться в документе крайним пальцем правой руки. И да, не присылай мне больше сообщений от других моделей, они все тупыыыыееееее!
Конечно, мне стало интересно собрать свой MCP сервер (протокол стали называть сервером – ведь английские ученые объявили 2026-й годом подупавшего прода). Это звучит не только увлекательно, но и служит профилактикой Альцгеймера.
А еще это выглядит как пет-проект, который займет достойное место в моем портфолио и послужит компасом при поисках Работы Мечты™. К разработке!
Глава 2. Препарирование конкурентов
Настоящий инженер первым делом идет смотреть, что уже сделали другие инженеры. Это как страх чистого листа у писателей – если уже есть готовые инструменты, можно аккуратно подсмотреть реализацию, обосрать код подметить недостатки и найти потенциально интересные вещи. Быстрый гуглинг и перплексинг показали исключительный результат. Если убрать рекламу, сделано было...

Немного было сделано, в общем. К слову, примечательный факт. Безусловно, найдено несколько репозиториев, именуемых Fusion 360 MCP Server. И им даже меньше года. Но черта́, объединявшая их – число коммитов равное или близкое единице. Когда Питер Тиль в своей книге "От нуля к единице" описывал путь рождения стартапа, он же не это имел в виду? Нельзя просто взять и вложить весь функционал в один коммит. Так вот, все репозитории были едины в своей незавершенности – словно люди, родившие их, исчезли, так и не воплотив свои мысли в код. Или нейро-подписка закончилась.
Не теряя надежды, на второй странице поисковой выдачи, я всё-таки нашел плагин Кристофера Дрейка, человека большего опыта как в разработке, так и в безопасности. При беглом осмотре код представляется как надстройка над основным продуктом Кристофера – MCP-Link-server – последний весит слишком много, чтобы быть связанным исключительно с нашей задачей. Плагин без зоопарка внешних зависимостей (если не считать размер сервера, хах). Самым важным является поддержка Generic API от Autodesk – даже новые утилиты и инструменты, добавленные в программу позже, заработают без изменений в коде плагина. Отлично, Крис!
Мы так делать, конечно, не будем. Еще, мне не нравится слово плагин, я создам себе компаньона.
Идея вырывается на волю; лист бумаги разделяет пополам простая надпись:
AI → MCP → HTTP → Companion
Мы делаем свой MCP-сервер, ЭйАй общается с ним через простейший stdio, а MCP-сервер общается с крошкой HTTP-сервером, запущенным внутри Fusion360 (такие дела, да), отдавая крошке HTTP-запросы и получая результат обратно. За основу возьмем FastMCP, дальше разберемся по ходу.
Глава 3. Пруфф офф концепт
Мы создадим куб!
Для этого мы запустим свой http.server и эндпоинты execute и health, чтобы кидать в них get, post запросы и воротить джейсонами. И тыкать палочкой, жив ли...
С другой стороны, мы поднимем FastMCP с одной лишь тулзой create_box, из ничего создающей квадрат куб.
И сказано было вслух:
Нам нужен куб, высота его 10 мм, длина его 10 мм, ширина его 10 мм. Да удели нам несколько секунд твоего процессорного времени, да гэпэу мощностей, пресною водою охлаждённых и соблаговоли создать сию модель, о Великий Нейро ЭйАй.
ЭйАй видит наш сервер, спрашивает его по тулзам дозволенным, получает инструкции, как с ними общаться и, сгорая от переизбытка токенов, отдает команду на запуск. Команда летит со скоростью света в http.server, лишь чтобы в недрах Fusion исполнить несколько простых шагов:
- собраться с силами и вообразить из себя дизайнера
- найти или создать новый эскиз
- нарисовать квадрат, используя
addTwoPointRectangle - выдавить квадрат в куб через
extrudeFeatures - поделиться радостью со всеми – джейсонуть обратно
Так MCP и ЭйАй узнают, что у нас случилась магия и появился он
Bash(curl -s http://127.0.0.1:18765/execute -H 'Content-Type:
application/json' -d '{"command": "create_box", "params": {"width": 1,
"height": 1, "depth": 1}}' | jq)
⎿ {
"success": true,
"result": "Created box 'Body1' (1.0 x 1.0 x 1.0 cm)"
}
Done — Body1 created, 10×10×10 mm cube.

Силы и токены у нас не закончились, поэтому можно и второй коммит сделать. Нам нужно расширить возможности нашего полоумного MCP и научиться рисовать круги и прямоугольники. Но не это главное – нам нужно создать навык работы в разных плоскостях, XY-XZ-YZ, вот это вот всё. Для этого мы воспользуемся базовыми xxConstructionPlane. ЭйАй предлагает добавить бекдор fallback для запуска произвольного Python-кода – для работы с чем-то нестандартным. Кстати, это почти та самая единственная функция, которую использует Крис для запуска всего и вся, у нас это будет подстраховка на крайний случай. И кто мы такие, чтобы отказывать в разработке этого функционала!
Итого, чего на этом этапе мы добились? Научились создавать свой MCP-сервер с тулзами, узнали про возможности автоматизации в недрах Fusion, получили базовый куб и не бесплатно, как раньше, а по подписке. Ну и подождали, пока над нами издеваются.
❯ ok, using our MCP tool, create a cube, 10-10-10 mm
⏺ Fusion works in cm, so 10mm = 1cm.
Душнила.
Теперь ничто нас не сдерживает, мы готовы написать свой первый Hello world. Высечь буквами по поверхности – никак иначе.
Глава 4. Текстинг
Задача никак не затрагивает вывод спутников на орбиту, но преследует простую логику – на плоскости нужно написать текст, потом этот текст выдавить в буквы. Ну, как иногда на дверях в квартиру клеют шильдик, кто в теремке живет.
В процессе реализации случился конфуз, когда буквы с начинкой внутри обрабатывались некорректно.
Получались как четырехлистный клевер, что на трафарете ниже.

Пришлось изобрести _outer_profile_indices. Функция возвращала только внешние контуры — их мы (я, они) выдавливали. Работает для всех букв с отверстиями. Без отверстий и так работало.
Применив все навыки промпт инженерии, я приступил к строительству.
❯ ok, using our MCP, create a rectangle 4cm-3cm, extrude it by 0.3cm and write "vas3k.club" on it. Do your best, Roboto font
⏺ Let me build this step by step.
...
...
...
Good, base plate done. Now create text on the top face. I'll use an offset sketch at Z=0.3 (top of the plate).
...
...
...
I'll center "vas3k.club" on the plate. The plate is 4x3cm at origin, so I'll place the text centered with some padding.
...
...
...
Done! A 4×3cm plate with "vas3k.club" embossed 0.5mm on top, Roboto Bold. The text is centered and all letter holes (in a, 3, b) are correctly handled — no filled-in letters.

Горизонт на скрине завален, но у нас явно получился прямоугольник 4x3 см с надписью по центру. Вон, сверху же написано, The text is centered. И форма не смущает.

Ведь врет как дышит. И просит извинений. Это прямо новая грань работы с инструментами.

Естественно, свои извинения я заменил холодными фактами измерений. С такими доводами ЭйАй препираться не стал – признав свою ошибку, откатился до пустого листа и начал сжигать токены с удвоенной силой. Затем скрипя матрицами еще больше, признал свою вину лишь отчасти, сославшись на некорректные аргументы функции. Перед этим рапортуя, что он изучил API вдоль и поперек. Ну прямо как в жизни.

Важное дополнение – скриншоты с текстом сделаны из более свежей версии утилиты. По канонам Нолана (которого, кстати, тоже зовут Кристофер), функция отката изменений будет сделана два коммита вперед, она буквально стремится нам навстречу. Без этого функционала я подчищал макет после каждого теста самостоятельно. Можно сказать, работал на ЭйАй.
На этом этапе мы научились выражать мысли словами, считать буквы и врать центрировать элементы на объекте. Всегда есть, что улучшать, новые возможности уже в беклоге, но, самое важное, впереди нас ждет схлопывание пространства – нам нужно скгруглять края создаваемых элементов. Этим и займемся.
Глава 5. Э фью моментс латте

Не буду грузить вас списком первоочередных инструментов, необходимых ЭйАйюю для создания вещей, с которыми бы справился любой первоклассник. Хотя... Изготовление сложных конструкций подразумевает использование не только примитивов (квадратов, прямоугольников, окружностей), но и работу с основой основ - прямыми линиями. Не стоит забывать и про дугу, без которой не обойдется ни один дизайн сложнее таблички с надписью. При работе с объектом важно уметь вращать, зеркально отражать, протягивать, и плавно соединять детали. И это не считая скругления краев, для этого нам также нужно сжечь токены сделать функционал. А что насчет отмены? ЭйАй сейчас может отменять только одну операцию за раз. Нужно дать ему способностей делать несколько операций ОДНОВРЕМЕННО. Как же еще можно нарисовать куб, отменить сделанное – и повторить всё 10 раз подряд? Если хотите, я могу подготовить список первоочередных задач, список списков функций, только скажите.
Квантово скакнув в момент, где у нас всё это уже реализовано, пришло время сделать нечто новое, ни на что не похожее. У меня на столе лежали внутренности жесткого диска – люблю я разбирать всякое. И с текущим функционалом я решил нарисовать поворотный рычаг считывателя данных (актуатор, выделено красным)

Но есть нюанс:
What device does this part, circled in red, belong to?
⏺ The red circle highlights the metal “bracket/lever” of the electromagnetic relay mechanism — essentially an armature (moving part) with a frame/holder for the contact group.
⏺ If you tell me what device it is from (brand/model, or what kind of unit), I can give you a more accurate description of its purpose (relay, contactor, bell, electromagnetic drive, etc.).
Здесь меня поджидал судьбоносный момент – ЭйАй не знает, что это такое. Как бы много данных ни лежало в основе обучения, рассчитывать на правильный ответ с первого раза — наивность. После общения подробностями, исключающими недопонимание, полученный эскиз отдаленно напоминал оригинал. Настолько меня вдохновил финальный результат, что я поспешил его распечатать.

Конечно, это один маленький шаг для человека, но в тот момент я словно попал под дофаминовый душ – Идея сквозь код смогла трансформироваться из слов в цифры и была выдавлена пластиком в физический объект, недоступный ранее. Магия!
Эксперимент подсветил серьезный изъян всей системы, с ним и попробуем разобраться. Ведь дальше нам предстоит сделать деталь невероятной сложности и простоты одновременно, основу всей истории. КРЕПЛЕНИЕ.
Здесь же стало очевидно, что не всё можно достать языком, некоторые вещи необходимо видеть и ощущать. Это наша киллер-фича, кожаные мешки! Хотя для некоторых кое-что так и осталось сокрытым... Но сейчас не об этом, нам нужно виденье!
Глава 6. Виденье поменялось

Позвольте, мысль свою я опишу.
И расскажу, что ви́денье не с нами.
ЭйАй какими-то словами
пытается нам смыслы донести.
И ошибается...

Мы легко проходим через проверки на человечность – без труда находим мой пирожочек на этих картинках и даже начинаем задавать вопросы, почему нам подсовывают лошадь.
Нейросети воспринимают изображения иначе — они не понимают картинку так, как мы. Для них это набор паттернов, текстур, форм и статистических закономерностей. Они оперируют цифрами, а не смыслами.
На результат влияют и ограничения энкодера – обменника пикселей на цифры. Например, энкодер CLIP сжимает любое изображение, каким бы сложным оно ни было, всего в 768 чисел. Мелкие надписи, цифры, сложные сцены – всё это теряется. В финале числа преобразуются в текст длиной до 77 токенов (куски слов, по сути тоже числа), включая специальные токены начала и конца ([SOS] и [EOS]) – на выходе мы получаем лишь базовое описание сцены, не более того.
Однажды, исключительно в образовательных целях я обошел эти ограничения – на базе CLIP реализовал распознавание сцен NSFW контента. В процессе пришлось сделать не только обрезание (чтобы получать вектор изображения, а не текст) энкодера, но и свой классификатор происходящего, накачать всякого, в gradio написать интерфейс по разметке датасета и вручную (почти, в какой-то момент я хакнул флагманскую GPT4.1, чтобы она мне помогла, а то мы с женой уже не справлялись с разметкой) отобрать тысячи изображений под обучение модели. Получилось – NSFW видео на диаграмме Ганта выглядели, как минимум, эротично. Эта история заслуживает отдельного поста.
Конечно, технологии давно продвинулись вперед и CLIP здесь поминали как пример. Но модели не видят мир так, как видим его мы. Это стало ощутимо, стоило мне попросить крепление для колонки, чтобы повесить её на SKADIS – это такая доска с отверстиями из Ikea.

Раз мы умеем с точностью создавать детали для жесткого диска, почему бы нам не сделать крепление для нашей круглой портативной колонки? Не что-то исключительное, простейший вариант "чтобы не выпала и висела на стене". Сказано-описано, найден референс.
Не предвидя сложностей, я загрузил приглянувшуюся картинку и набросал короткую спецификацию с размерами. Там, где на примере были дырки отверстия, попросил добавить крепления крепления.

How it works:
1. The two hooks slide into Skadis holes (40mm apart) and the lips catch behind the board
2. The vertical back plate transfers load to the hooks
3. The diagonal gusset reinforces the shelf-to-plate joint
4. The cylindrical cup holds the speaker upright with ~1mm clearance per side (inner dia 88mm vs speaker 86mm)
5. The cup is 28mm tall — holds about 55% of the speaker's 45mm height, secure but easy to remove
Долго ли, коротко ли токены сжигались, да изрыгнул ЭйАй из себя нечто.

Какое ТЗ – ТАКОЙ И РЕЗУЛЬТАТ! Колонку можно вставить? Да. На SKADIS повесить? Да. Не благодари!
Олег, ты мне снова нужен. Я не так чувствую. Как вообще такое можно было сотворить? Ах да, задание и слепота. Нужно что-то с этим делать. Все силы были вложены в ТЗ, о грядущих улучшениях речи пока не шло. Я даже сходил к другому ЭйАйюю, чтобы он оценил задумки и сжёг свои токены дополнил спецификацию. Местами выслушивая "10 причин, почему другая нейронка тупаяошиблась", я двигался к цели и результат не заставил себя ждать. И это, разумеется, сказалось и на спецификации, и на результате.
A wall-mounted cradle for the IKEA SKADIS pegboard that holds a cylindrical
Bluetooth speaker. The cradle has a Y-shaped profile: two side arms wrap around
the speaker from the sides, a central neck connects them to a mounting foot, and
the foot carries two SKADIS hook tabs. Two small retention lips at the arm tips
prevent the speaker from rolling out.
(и еще 400 строчек...)
Долго ли, коротко ли токены сжигались, да изрыгнул ЭйАй из себя нечто (дежавю).

Да, вы абсолютно правы, здесь нужно переделать буквально всё. Сейчас я отменю все шаги и начну заново. И ТЫ НЕ СМОЖЕШЬ МНЕ ПОМЕШАТЬ, АХАХАХАХА. Держи, теперь точно получилось!
We can build it now with v0.1.8. Here's why:
All required operations exist:
- revolve for the thick arms (240°, 1.5cm wall)
- extrude for the body filler and C-channel hooks
- combine_bodies to merge everything
- fillet_edges for organic transitions
- measure to verify dimensions (new)
- sketch_project if we need to align features (new)
- construction_plane for offset sketches

Если вы хотели ключ от всех дверей, так вот он. Им можно познать неизведанное, переместиться в любую точку пространства и двигать стрелки часов, передавая спецификацию азбукой Морзе.
Но токены ведь нужно сжигать и дальше! Следует добавить несколько новых инструментов, покрыть код тестами (вообще, это я попросил, не ругайте меня за TDD), чтобы путем неимоверных усилий сделать крепления. И обновить ТЗ, как же без этого.


Перетасовывая известные элементы и опираясь на опыт предков, можно создавать отличные объекты. Но в ситуациях, где нужно придумать что-то новое и применить креативность, на начало 2026-го года мы всё еще буксуем – такие вещи нейросетям неподвластны.
Пожалуй, это главная мысль, которую я вынес (и опыта ведро) из данной истории. Смотрите, ведь кубик и стойло для макбука получились вполне себе ничего. Я даже не указывал толщину ноутбука – ЭйАй сам её нашел. За красивости я попросил, чтобы вы не подумали, что инструмент готов ко взрослой жизни к проду.

Крепление, в итоге, сделано.

Не могу сказать, что ЭйАй справился полностью самостоятельно – в нескольких случаях мне пришлось вмешаться и объяснить, что нам нужно делать. Но это были финальные шаги. С выбором формы я не мешал, после нескольких итераций в спецификации закрепилась именно она, максимально отличаясь от начальной задумки.
Моё крепление представляло бы из себя крючок - ведь на колонке есть для этого петелька. Но кто я такой, чтобы подсказывать настоящие шедевры.
И да, за мной скругление передних граней, ведь ЭйАй научился делать это слишком давно и уже успел забыть. Не вините его в этом. Простим ему и финт с петлями – крепления пришлось перевернуть – в начале он их развернул на 180 градусов. Скорее всего, в спецификации остались ошметки фразы "колонка не должна выпадать", трансформировавшись в "крепление обхватывает колонку". А недосказанность приводит к сгоранию лишних токенов креативности. И, как мы знаем, тут у нас отверстие...
Но это уже победа, друзья! Задача сделана, пластика потрачено по минимуму.
Заключение
Да, творческие задания моделям даются пока с трудом. Но это же инструмент. Мы же не ждём от отвертки нравоучений, когда срезаем грани на шурупе? Верно и тут. Мы трансформируем идею в прототип, пробуем и ошибаемся – упрощая себе процесс и/или перекладывая часть рутины на машину. Ведь именно этого мы и хотели от будущего – избавленные от скучных дел и монотонных задач люди начнут создавать шедевры, и любой день будет освещаться прорывными достижениями в каждой отрасли.
Цивилизация продвигается, расширяя число важных операций, которые мы можем выполнить, не думая о них.
Альфред Норт Уайтхед (Alfred North Whitehead, 1861–1947)
И да, я очень очень очень часто повторял фразу "сжигать токены". Год назад я первый раз пошутил, что нейросети построены на базовом принципе - не дать пользователю ответ сразу, коротко и ясно, а сделать это максимально бо́льшим количеством данных, сгенерированных и преобразованных далее в реальные деньги. Мне тогда показалось это смешным и остроумным. Месяцы шли, появлялись новые флагманские модели и мне уже не казалось, я явно это ощущал – когда на вопрос про список получал развернутые ответы без списков и предложение его сформировать. Ну а сейчас это максимально классно обернули агентами, размышлениями и такими вот улучшения, как "опция отмены, чтобы откатывать действия, ошибочно сделаные ранее" в моем случае.
Ведь модель не видит, что нарисовано. Даже со скриншотами с разных ракурсов. Хочешь, я составлю пошаговый план, как реализовать эту фуууу...
Но я не могу не признать тот факт, что разработка изменилась – она уже совсем не та, что была даже год назад. Сейчас мало писать код, нужно уметь его читать, понимать, грамотно формулировать требования, объяснять желаемый результат и держать в голове дюжину способов проверить созданное. Теперь разработчик – не просто человек с дебаггером. Это бриллиант с зачатками менеджера, тестировщики, разработчика, дизайнера – индивид бесконечно эрудированный и с богатым жизненным опытом. Что да факапов, их будет много, но это наше легаси.

Чем больше кода, тем острее вопрос безопасности. Всё больше людей начнут понимать, что бездумно раздавать доступы и ключи к личным данным — прямой путь к утечкам. Ситуаций вроде OpenClaw будет только больше. А сами нейросети обзаведутся лишними нейронами, препятствуя ролевым играм и безусловной вере на словах в административные привилегии. Мир станет чуточку светлее, и мы еще больше окунемся в прокрастинацию.
Я не обещал счастливого конца, но рассказал историю одного крепления. Оно появилось из ничего и теперь висит в подвешенном состоянии. Утилита продолжит свой путь – ведь столько всего еще предстоит создать и напечать. Плюс, не забываем, правило разработки таково и никакао – беклог никогда не бывает пустым.
В начале была Идея, в конце будет слово. Даже два.
Как бы ни развивался прогресс и насколько бы близко мы ни летали рядом с AGI, я верю в тебя – ты справишься.


Вырисовывается перспектива, что в недалеком будущем все еще будут пригождаться живые люди... ведь будут же, да?
Неистово всхрюкнула с некоторых мемов и "не все можно достать языком"))) спасибо!!!
классный рассказ, испытывал очень похожие чувства совсем недавно!
fusion меня расстроил своей закрытостью и проприетарностью (хоть и инструмент хороший), поэтому пришлось автоматизировать иначе: https://vas3k.club/project/30712/