Создание с помощью ИИ (MCP)
Как помощник с ИИ, например Claude или Codex, создаёт и изменяет фигуры, группирует их и делает снимки вида в вашем открытом редакторе.
layerling поставляется с сервером MCP. MCP - это стандарт, через который помощник с ИИ может пользоваться инструментами в других программах. С его помощью клиент ИИ, например Claude или Codex, видит открытую вкладку редактора и работает в ней: создаёт фигуры, меняет размеры, группирует, вырезает, скругляет кромки, читает сцену и делает снимки вида. Вы описываете деталь, ИИ её строит, вы смотрите и в любой момент можете вмешаться.
Связующее звено между клиентом ИИ и редактором работает локально на вашем компьютере. Но учтите: то, что читает ИИ, то есть сцена и снимки вида, уходит поставщику вашего клиента ИИ, как и любой другой ввод там.
Настройка
- Возьмите layerling с GitHub и запустите его в папке проекта командой npm run dev. Node.js должен быть установлен. В Windows об этом позаботится строка быстрого запуска в README.
- Откройте вкладку редактора, например http://127.0.0.1:3000/?editor=1. Можно доверить это ИИ: когда ни один редактор не открыт, первый инструмент, которому он нужен, сам запускает браузер с редактором и ждёт, пока тот подключится. Это работает для layerling на вашем компьютере; копии на NAS или сервере нужен редактор, открытый вами. Задайте LAYERLING_MCP_OPEN_EDITOR=0 для сервера MCP, чтобы это отключить.
- Подключите свой клиент ИИ к серверу MCP. Клиент запускает его сам командой node scripts/layerling-mcp-server.mjs.
Claude Code
Устанавливать ничего не нужно: в проекте есть .mcp.json, который регистрирует сервер, и навык в .claude/skills/layerling-mcp-skill. Откройте папку layerling в Claude Code и попросите, например: «Используй инструменты layerling MCP, чтобы перечислить мои открытые редакторы и посмотреть сцену».
Claude Desktop
Claude Desktop не читает файлы проекта. Впишите сервер в его собственную конфигурацию. Как образец используйте docs/mcp/claude-desktop-config.example.json в проекте, заменив путь к скрипту на абсолютный путь на вашем компьютере. Затем перезапустите Claude Desktop.
Codex
Скопируйте навык из docs/skills/layerling-mcp-skill в папку навыков Codex, впишите сервер в конфигурацию Codex по образцу docs/mcp/codex-config.example.toml и перезапустите Codex.
Подробные инструкции для всех трёх есть в README на GitHub.
Копия на NAS или сервере
Копия, которую вы размещаете сами, может позволить клиенту ИИ управлять её открытыми редакторами по сети. По умолчанию это выключено: тот, кто может управлять связующим звеном, может читать и менять открытые проекты. На сервере задайте LAYERLING_MCP_REMOTE равным true, а LAYERLING_MCP_TOKEN — секретом не короче 16 символов (для образа Docker — в environment: compose-файла; пересобирать ничего не нужно). Откройте вкладку редактора этой копии и держите её открытой, а клиенту MCP передайте адрес и тот же токен: LAYERLING_URL=http://nas:3000 и LAYERLING_MCP_TOKEN=<токен>.
Получить список редакторов и управлять ими может только клиент с токеном. Страницам редактора токен не нужен, но они учитываются только под адресом или именем, доступным из вашей собственной сети (IP-адрес, имя без точки или оканчивающееся на .local либо .lan); настоящий домен за обратным прокси вписывается в LAYERLING_MCP_ALLOWED_HOSTS. Используйте это в сети, которой доверяете, а за её пределами — через HTTPS. Подробности — в README.
Что умеет ИИ
ИИ работает с теми же функциями, что и вы, и тем же путём, что ваши действия в редакторе. Новые функции layerling сразу получают своё действие MCP. Инструменты:
| Инструмент | Что он делает |
|---|---|
layerling_list_editors | перечисляет открытые вкладки редактора |
layerling_open_editor | открывает новую вкладку редактора в браузере по умолчанию и ждёт, пока она подключится (только на вашем компьютере) |
layerling_read_scene | читает сцену, выделение, единицы измерения и точные размеры всех объектов |
layerling_list_objects | перечисляет все объекты с размерами, положением, поворотом и id |
layerling_select_objects | выделяет объекты |
layerling_delete_objects | удаляет объекты |
layerling_create_shape | создаёт фигуру: куб, цилиндр, текст (в том числе по дуге), резьбу, шестерню, тело из эскиза и все остальные |
layerling_import_file | импортирует файл, как окно импорта: цветной OBJ или 3MF — по телу на цвет, а 3MF с несколькими объектами — по телу на объект |
layerling_add_font | добавляет свой шрифт для текста из файла TrueType, OpenType или WOFF; шрифт остаётся в браузере, а проект хранит только используемые буквы |
layerling_list_fonts | перечисляет встроенные шрифты и собственные, с id и именем |
layerling_import_mesh | приносит треугольную сетку в проект |
layerling_update_object | меняет размеры, положение, цвет, имя, режим тела или отверстия и всё остальное, из чего состоит фигура, включая кромку букв текста |
layerling_align_objects | выравнивает объекты друг относительно друга |
layerling_scale_objects | масштабирует объекты в процентах — все вместе или каждый на месте |
layerling_lay_flat | укладывает объект одной из граней на стол |
layerling_place_on_face | ставит объекты на грань другого объекта, в том числе наклонную, — как клавиша C |
layerling_perforate_face | прорезает узор отверстий в плоской грани; отверстия остаются отверстиями, сгруппированными с телом |
layerling_sweep_sketch | протягивает прямоугольное или круглое сечение вдоль траектории из точек как одно точное тело; замкнутая траектория даёт кольцо |
layerling_push_face | вытягивает плоскую грань наружу или вырезает в ней карман, с отступом от края и радиусом углов; новая деталь — тело из эскиза, сгруппированное с телом |
layerling_mate_faces | подводит грань одного объекта к грани другого: грань к грани или вровень |
layerling_open_group | открывает группу, чтобы менять её детали по одной, в том числе группу внутри открытой |
layerling_close_group | снова закрывает её («Готово») или отменяет |
layerling_group_objects | группирует объекты |
layerling_ungroup_objects | разбирает группы |
layerling_boolean_cut | вырезает материал из тел отверстиями |
layerling_intersect_objects | оставляет только то, что есть общего у объектов (Пересечение) |
layerling_separate_parts | разделяет фигуру на её отдельные части |
layerling_split_objects | разделяет тела или отверстия надвое плоскостью |
layerling_list_edges | перечисляет настоящие CAD-кромки объекта |
layerling_apply_edge_treatment | обрабатывает выбранные кромки фаской или скруглением |
layerling_hollow_object | создаёт у тела оболочку с равномерной стенкой |
layerling_array_objects | размножает в ряд или по кругу |
layerling_bundle_objects | связывает объекты, как Ctrl+B: они двигаются вместе, сохраняют цвет и тип и выходят в экспорт по отдельности |
layerling_layer_text | превращает текст в стопку слоёв для многоцветной печати (буквы, более широкие ободки, пластина без отверстий) или собирает стопку заново — с отверстием под брелок, углами каждого слоя и скруглённой кромкой букв либо фаской; со списком имён — по бирке на имя |
layerling_layer_icon | превращает SVG-значок (текст файла или выдавленное тело эскиза) в многослойную бирку со значком для многоцветной печати — значок, более широкие ободки, пластина без отверстий — или собирает её заново с новой шириной или слоями; с количеством заполняет стол печати копиями |
layerling_measure_section | измеряет по плоскости сечения между двумя точками, которые прилипают к контуру: толщину стенки, зазоры, посадки |
layerling_show_overhangs | включает и выключает штриховку нависаний, задаёт угол и сообщает для каждого тела, какая площадь потребовала бы поддержек |
layerling_estimate_print | оценивает объём, вес и расход филамента для выделения или всего проекта: для сплошного тела, а также грубо — со стенками и заполнением, как в окне экспорта |
layerling_add_reference_points | ставит опорные точки — по центру, углам или серединам рёбер объектов, либо в точных позициях, — к которым привязываются фигуры |
layerling_list_reference_points | перечисляет опорные точки с их id и позициями |
layerling_remove_reference_points | удаляет опорные точки по id или все сразу |
layerling_inspect_errors | показывает последнее сообщение и последнюю ошибку, а также сообщения и ошибки сеанса |
layerling_wrap_around_cylinder | оборачивает лежащее плоско тело — например SVG или текст — вокруг цилиндра, наружу или внутрь, как гравировку |
layerling_simplify_mesh | уменьшает число треугольников импортированной сетки — до доли в процентах или до заданного числа |
layerling_save_custom_shape | сохраняет тела как собственную фигуру, на сервере или в браузере, чтобы вставлять их в другие проекты |
layerling_list_custom_shapes | перечисляет собственные фигуры на сервере и в браузере |
layerling_insert_custom_shape | вставляет собственную фигуру в открытый проект, при желании в точку x/z |
layerling_delete_custom_shape | удаляет собственную фигуру; вставленные тела остаются |
layerling_show_workplane | скрывает и показывает рабочую плоскость с её сеткой — например, чтобы снять деталь снизу (только вид) |
layerling_set_section_view | включает вид в разрезе вдоль плоскости, чтобы заглянуть внутрь (только вид: ничего не разделяется на части) |
layerling_clear_history | удаляет все шаги отмены навсегда, как кнопка «Удалить историю» в панели истории; требует confirm: true |
layerling_set_history_view | показывает более раннее состояние проекта, как панель истории (сам проект остаётся нетронутым; инструменты правки ждут, пока она закрыта) |
layerling_export_section_svg | возвращает контуры на плоскости сечения как SVG в масштабе 1:1, из тех же тел, что и при экспорте |
layerling_export_drawing | строит чертёж для мастерской из экспорта «2D»: три вида в масштабе 1:1 на листе ISO, с габаритными размерами и таблицей круглых отверстий — как текст SVG или как PDF |
layerling_set_workplane | ставит рабочую плоскость на бок тела или обратно на основание, а также скрывает и показывает её |
layerling_capture_image | делает снимок вида: спереди, сверху, сбоку, по диагонали из угла и другие |
Это позволяет ИИ проверять себя: он что-то создаёт, делает снимок, смотрит и улучшает.
Пример
Вы говорите: «Сделай мне круглую коробку 60 мм в диаметре, 40 мм высотой, со стенкой 2,5 мм, открытую сверху, и плоскую крышку с надписью „Tea“ по дуге». ИИ создаёт цилиндры, у одного создаёт оболочку, ставит на крышку текст по дуге и в конце делает снимки, чтобы проверить, всё ли подходит.