Я дал Claude доступ к перьевому плоттеру: ИИ рисует вживую

Я дал Claude доступ к перьевому плоттеру: ИИ рисует вживую

Языковые модели научились управлять физическими устройствами — и это уже не фантастика. Один разработчик подключил перьевой плоттер к Claude через Model Context Protocol и получил систему, где ИИ самостоятельно генерирует векторную графику и рисует её на бумаге в реальном времени. Никаких промежуточных скриптов, никакого копирования кода вручную — только диалог с моделью и механический манипулятор, который воплощает её идеи в атомах.

Проект выходит за рамки технической демонстрации. Это прецедент нового подхода к инструментам для ИИ-агентов: не абстрактные «нарисуй картинку» промпты, а прямой доступ к API физических устройств через стандартизированный протокол. Разбираемся в архитектуре, философии и практических применениях.

Перьевой плоттер как интерфейс для языковой модели

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

Автор проекта использовал AxiDraw — популярную модель с USB-подключением и открытым Python API. Устройство управляется командами, которые описывают траектории движения: координаты точек, скорость пера, высоту подъёма. Стандартный workflow выглядит так: художник создаёт SVG в графическом редакторе, конвертирует его в формат плоттера через утилиту типа vpype, отправляет на устройство.

Но что если убрать графический редактор из этой цепочки? Claude умеет генерировать SVG-код — он обучен на миллионах примеров векторной графики. Логичный шаг: дать модели прямой доступ к плоттеру через MCP-сервер, который принимает SVG и переводит его в команды устройства. Теперь создание рисунка превращается в диалог: «Нарисуй спираль Фибоначчи с 12 витками», модель генерирует код, вызывает инструмент, плоттер начинает рисовать.

Критичный момент — скорость обратной связи. Плоттер медленный: простой паттерн занимает 5 минут, сложный — час. Claude генерирует SVG за секунду. Это огромный feedback loop, который исключает быстрые итерации. Но это и преимущество: forced slowness заставляет думать о дизайне заранее, тщательно формулировать промпты, а не брутфорсить варианты.

MCP-сервер: архитектура прямого доступа к железу

Model Context Protocol — это JSON-RPC протокол для подключения внешних инструментов к языковым моделям. Вместо хардкодинга function calling в приложении, вы создаёте standalone-сервер, который декларирует свои возможности через JSON Schema. Claude видит список инструментов, понимает их назначение по описанию и может вызывать их в процессе генерации ответа.

MCP-сервер для плоттера состоит из трёх компонентов. Первый — transport layer (stdio или HTTP), который обрабатывает JSON-RPC сообщения. Второй — registry инструментов, который возвращает список доступных методов через tools/list. Третий — executor, который парсит вызовы tools/call и выполняет действия.

В случае плоттера executor делает следующее: принимает SVG-строку из аргументов вызова, парсит её через библиотеку vpype (швейцарский нож для векторной графики), оптимизирует пути — упрощает кривые Безье, сортирует слои для минимизации движений пера, конвертирует в команды pyaxidraw, отправляет на USB-порт устройства. Весь процесс занимает доли секунды, основное время тратится на физическое рисование.

Безопасность требует ограничений. Автор добавил rate limiting: максимум один plot_svg вызов в 10 секунд, максимум 1000 точек в SVG. Это защита от случайных багов (например, Claude генерирует бесконечный цикл линий) и от гипотетического jailbreak, где злоумышленник заставляет модель спамить команды и ломать мотор. Второй слой защиты — валидация SVG: только path элементы, никаких фильтров, градиентов, внешних ссылок.

Код MCP-сервера занимает около 150 строк Python. Это не production-решение с observability и error recovery, а proof of concept. Но он работает стабильно для экспериментов и демонстрирует главную идею: инструменты для ИИ должны быть максимально прямыми. Не давайте модели абстракции типа «нарисуй картинку» — дайте конкретный API с чётким контрактом.

В видео выше — полный разбор процесса создания MCP-сервера для плоттера, примеры промптов для Claude и демонстрация того, как модель итеративно улучшает рисунки на основе ошибок устройства.

Генерация SVG: как Claude понимает векторную графику

SVG (Scalable Vector Graphics) — это XML-формат для описания двумерной графики через математические примитивы: линии, кривые, формы. Claude обучен на огромном корпусе SVG-кода — от иконок до инфографики — и отлично понимает структуру формата.

Простой пример: «Нарисуй круг радиусом 50 с центром в точке (100, 100)». Claude генерирует:

<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
  <circle cx="100" cy="100" r="50" fill="none" stroke="black"/>
</svg>

Для плоттера критично, чтобы SVG содержал только контуры (stroke), без заливки (fill). Перо не может заполнить область цветом — только обвести. Автор решил это через строгий system prompt: «Всегда используй fill="none" и stroke="black", только path и line элементы, никаких rect, circle, polygon (их нужно конвертировать в пути)».

Второй нюанс — координаты. SVG использует абстрактные единицы, но плоттер работает в миллиметрах. vpype автоматически нормализует viewBox к размеру бумаги (например, A4 = 210×297 мм). Claude не знает физических размеров — он генерирует SVG в условных единицах, библиотека масштабирует.

Третий нюанс — оптимизация путей. Если SVG содержит тысячи коротких сегментов, плоттер будет дёргаться, тратить время на подъёмы/опускания пера. vpype команды linemerge и linesort решают это: объединяют соседние линии, сортируют по близости, минимизируют холостые движения. Качество рисунка улучшается в разы.

Когда Claude ошибается (например, генерирует некорректный XML или выходит за границы viewBox), MCP-сервер возвращает ошибку. Модель видит её в контексте диалога и может исправиться: упростить паттерн, изменить параметры, переписать код. Это не hardcoded retry-логика — это reasoning, где модель адаптируется на основе feedback.

Практические применения: от искусства до образования

Очевидный use case — generative art. Художник описывает идею на естественном языке: «Нарисуй органическую сетку из кривых, вдохновлённую венами листа, с асимметрией и плотностью, убывающей от центра». Claude генерирует математически точный SVG, плоттер рисует, художник смотрит на результат, корректирует промпт, итерируется. Это как Figma для процедурной графики, но вместо мыши — язык.

Второе применение — образование. Студенты изучают алгоритмы: сортировки, фракталы, L-системы. Вместо того чтобы писать код на Python и дебажить синтаксис, они описывают алгоритм Claude, который генерирует визуализацию и рисует её на бумаге. Физический артефакт как результат обучения — это мощная мотивация. Можно создать серию заданий: «Реализуй кривую Гильберта 4-го порядка», «Нарисуй дерево Пифагора с углом 45°», «Построй диаграмму Вороного для 20 случайных точек».

Третье применение — прототипирование UI. Дизайнер хочет быстро проверить идею раскладки, но не хочет открывать Figma. Он просит Claude: «Нарисуй wireframe лендинга с хедером, тремя карточками фич и футером». Плоттер рисует скетч на бумаге за пару минут. Дизайнер видит пропорции, вносит правки, итерируется физически — это быстрее, чем кликать в интерфейсе.

Четвёртое — кастомизация подарков и мерча. Представьте сервис, где клиент вводит текст типа «Нарисуй геометрический паттерн в стиле ар-деко с инициалами A.K.». Claude генерирует уникальный дизайн, плоттер рисует его на открытке или постере. Это not scalable для массового производства, но отлично для small batch и персонализации.

Ограничения и будущее MCP-экосистемы

Главное ограничение — отсутствие обратной связи от устройства. Claude не видит, что плоттер нарисовал, если вы не передадите это явно. Нет камеры, сенсоров, проверки результата. Модель работает вслепую, только по успеху/ошибке tools/call. Можно улучшить это, добавив webcam над плоттером и отправляя фото Claude через vision API. Тогда модель увидит проблемы — перо высохло, бумага сдвинулась, линии наложились — и предложит решение.

Второе ограничение — эстетика. Claude генерирует технически корректные SVG, но художественная ценность зависит от промпта. Иногда паттерны выглядят слишком механически, без органичности. Решение — обучать модель на референсах конкретного стиля или использовать fine-tuning для artistic domain. Но это уже prompt engineering и data curation, а не инфраструктура.

Третье — скорость. Плоттер медленный по определению. Если нужно создать 100 вариаций паттерна, это часы работы. Можно распараллелить: несколько плоттеров, управляемых одной моделью через MCP load balancer. Или использовать virtual plotting — рендерить SVG в PNG для быстрого preview, физически рисовать только финальные версии.

Будущее MCP — универсальный протокол для tool use. Сегодня это плоттер, завтра — CNC-станок, 3D-принтер, лазерный резак, паяльная станция. Представьте Claude, который проектирует печатную плату, генерирует Gerber-файлы, отправляет на производство, получает feedback от тестирования, итерирует дизайн. Или управляет роботом-манипулятором для сборки прототипов.

Риски очевидны: если модель ошибётся в G-code для CNC, можно сломать фрезу или испортить заготовку. Нужны safeguards: симуляция перед выполнением, человеческое подтверждение для критичных операций, hardware killswitches. Но потенциал огромен — AI-driven fabrication, где идея превращается в физический объект через natural language интерфейс.

Заключение

Проект «Claude управляет плоттером» показывает, что граница между software и hardware размывается. Языковые модели выходят за пределы текстовых интерфейсов и начинают взаимодействовать с физическим миром через стандартизированные API. Это не AGI, не робот из научной фантастики — это просто хорошо спроектированный протокол между рассуждающей моделью и исполнительным устройством.

MCP даёт фундамент для экспериментов. Если у вас есть плоттер, CNC, 3D-принтер, MIDI-контроллер или любое устройство с API — попробуйте подключить его к Claude. Начинайте с безопасных инструментов, добавляйте rate limits, логируйте вызовы, тестируйте на dummy-данных. Публикуйте результаты, делитесь кодом, стройте экосистему.

Будущее инженерии — это не просто написание кода. Это описание намерений на естественном языке и делегирование реализации системам, которые понимают и software, и hardware. Плоттер, рисующий по команде Claude — маленький шаг в этом направлении.

Можно ещё почитать:
Loading...
Пожалуйста ждите...