Даже когда агент по написанию кода создает каркас фронтенда, API и инфраструктурного кода, вы хотите, чтобы результат был предсказуемым. Команда AWS PACE (Prototyping and AI Customer Engineering) столкнулась с этим в работе с клиентами и упаковала свою настройку в виде плагина Nx.
Давайте разберемся, как это работает, почему Nx Devkit, лежащий в основе, стал еще важнее теперь, когда агенты могут писать такого рода автоматизацию, и с чего начать, если вы хотите создать свой собственный плагин.
Плагин Nx для AWS
AWS announced the Nx Plugin for AWS v1.0 на этой неделе, и Джек Стивенсон написал о том, как это работает, в блоге AWS Open Source. Я не буду повторять все здесь, поэтому прочитайте ту запись в блоге или ознакомьтесь с моим пошаговым руководством:
TL;DR: вы можете создать совершенно новое рабочее пространство AWS + Nx с помощью:
(Вы, конечно, можете использовать и npm)
Затем изучите возможности плагина, используя документацию по плагину, где они подробно описаны, включая учебное пособие «Dungeon Adventure», в котором создается полноценное приложение. Или просто укажите на него агенту.
Почему они его создали
Работа команды PACE заключается в исследовании сложных проблем для своих клиентов, и они подходят к этому через прототипирование.
Мы являемся частью PACE, команды Prototyping and AI Customer Engineering в AWS, и мы ежедневно сталкиваемся с противоречием между скоростью и готовностью к промышленной эксплуатации. Мы работаем с клиентами над проблемами, для которых еще нет очевидного ответа, или над технически рискованными идеями, которые ранее не были реализованы.
Мы являемся частью PACE, команды Prototyping and AI Customer Engineering в AWS, и мы ежедневно сталкиваемся с противоречием между скоростью и готовностью к промышленной эксплуатации. Мы работаем с клиентами над проблемами, для которых еще нет очевидного ответа, или над технически рискованными идеями, которые ранее не были реализованы.
Поэтому им потребовался инструмент, который позволяет им двигаться быстро, независимо от используемого языка.
Создание решений на AWS обычно означает инфраструктуру как код, бэкенд-сервисы, фронтенд и часто более одного языка в одном проекте. Нам нужна была система сборки, которая была бы независима от выбранного нами языка и могла бы управлять проектом, состоящим из множества движущихся частей. Наши команды остановились на Nx и использовали его в течение нескольких лет именно для этого [...]
Создание решений на AWS обычно означает инфраструктуру как код, бэкенд-сервисы, фронтенд и часто более одного языка в одном проекте. Нам нужна была система сборки, которая была бы независима от выбранного нами языка и могла бы управлять проектом, состоящим из множества движущихся частей. Наши команды остановились на Nx и использовали его в течение нескольких лет именно для этого [...]
Цель состоит в том, чтобы иметь рабочий и развернутый прототип, который уже содержит строительные блоки, которые можно напрямую взять и интегрировать в реальный продукт. Прежде чем выбрать плагин Nx, они изучили различные варианты, такие как шаблоны или подход на основе библиотек.
Генераторы Nx оказались тем, что подошло идеально. Вместо шаблона, который вы форкаете, или библиотеки, от которой вы зависите, генератор записывает код прямо в ваше рабочее пространство. Вы владеете этим кодом с момента его создания, и работа с ним не требует ничего специфичного для плагина. Когда вам нужно изменить что-то, что генератор не предусмотрел, вы можете редактировать код так, как обычно. И там, где шаблон оставлял сгенерированный код устаревать, миграции Nx позволяют улучшениям, которые мы выпускаем, достигать рабочих пространств, которые вы создали ранее. [...] Каждый генератор намеренно является автономным [...] в виде высокоуровневых строительных блоков: целых компонентов, которые вы можете собрать одной командой, работаете ли вы вручную или с помощью ИИ-помощника
Генераторы Nx оказались тем, что подошло идеально. Вместо шаблона, который вы форкаете, или библиотеки, от которой вы зависите, генератор записывает код прямо в ваше рабочее пространство. Вы владеете этим кодом с момента его создания, и работа с ним не требует ничего специфичного для плагина. Когда вам нужно изменить что-то, что генератор не предусмотрел, вы можете редактировать код так, как обычно. И там, где шаблон оставлял сгенерированный код устаревать, миграции Nx позволяют улучшениям, которые мы выпускаем, достигать рабочих пространств, которые вы создали ранее. [...] Каждый генератор намеренно является автономным [...] в виде высокоуровневых строительных блоков: целых компонентов, которые вы можете собрать одной командой, работаете ли вы вручную или с помощью ИИ-помощника
Генераторы детерминированы. Агент решает, какие из них запустить и как их соединить. Когда результат требует корректировки для конкретного случая использования, агент может отредактировать сгенерированный код так же, как и любой другой код в рабочем пространстве.
Nx Devkit как API расширяемости
Все, что создала команда AWS, базируется на Nx Devkit, том же API, который используют собственные плагины Nx. Он охватывает пользовательские пакеты установки, такие как create @aws/nx-workspace, генераторы, которые создают и изменяют код, исполнители (executors) и плагины графа проекта, которые обучают Nx новым инструментам и языкам.
Создание на основе Devkit раньше требовало реального времени. Вам нужно было изучить API генераторов и то, как плагины выводят проекты и задачи, поэтому пользовательская автоматизация должна была сэкономить вашей команде много работы, чтобы стоить затраченных усилий. Агенты по написанию кода хороши именно в этом типе инструментального кода, поэтому теперь вы можете делегировать большую его часть.
Некоторые примеры:
- Локальные генераторы рабочих пространств — укажите агенту на существующую библиотеку, и пусть он извлечет генератор, который создает новые с той же структурой. Я показал это в видео о генераторах рабочих пространств.
- Пользовательские правила линтинга — командные соглашения, которые не охватывает ни один публичный плагин ESLint, могут существовать в рабочем пространстве как пользовательские правила ESLint для рабочих пространств.
- Поддержка языков — плагин графа проекта считывает файлы конфигурации цепочки инструментов и превращает их в проекты, задачи и зависимости Nx. Руководство «Добавление поддержки языков в Nx» подробно описывает это на примере Python и uv, и оно включает промпт, который вы можете передать прямо своему агенту.
Поддержка языков — это также то, как Nx работает со стеками за пределами JavaScript. Сообщество @monodon/rust плагин привносит Rust в граф задач, который я использовал для объединения Rust и TanStack в одном монорепозитории. Сообщество @nxlv/python плагин делает то же самое для проектов на Python, построенных на Poetry. Плагины .NET, Maven и Gradle от нас (основной команды Nx) построены на тех же фундаментальных принципах Devkit.
Создайте свой собственный плагин
Если в вашей организации есть свой способ запуска новых проектов (стандартная библиотека аутентификации, внутренняя настройка развертывания, утвержденные фреймворки), он, вероятно, соответствует той же форме, что и плагин AWS. Эти руководства в разделе «Расширение Nx» являются хорошими отправными точками:
- Создайте плагин для конкретной организации, чтобы хранить в нем свои генераторы
- Локальные генераторы для автоматизации, которая нужна только одному рабочему пространству
- Создайте пакет установки для вашей собственной команды create-*, например @aws/nx-workspace
- Опубликуйте свой плагин, чтобы поделиться им в разных репозиториях
AWS также документирует building a plugin with their ts#nx-plugin generator, который предоставляет ваши генераторы ИИ-помощникам через сервер MCP.
Узнать больше
- Документация по плагину Nx для AWS
- Документация по расширению Nx
- Nx на YouTube
