AI-агенты уже стали частью повседневной разработки. Сначала это выглядит как магия: формулируешь задачу, получаешь код, тесты, иногда даже готовый PR.
Но довольно быстро приходит осознание:
В этой статье разберем, что с этим можно сделать на практике и почему для хорошего результата критически важен правильно подобранный набор инструментов.
Так выглядело начало индустрии — и первый опыт AI для большинства из нас. Первый запрос, первый ответ, первые галлюцинации. Кажется, это было вчера, хотя прошло уже два-три года.
С тех пор чат в браузере прошел заметную эволюцию: модели поумнели, а сами интерфейсы получили полезный инструментарий — от веб-поиска до работы с открытыми источниками. На качестве ответов это сказалось напрямую: меньше фантазий, больше проверяемых фактов и уверенности в результате.
Попросите код для Spring Security с OAuth — в ответ вы получите полноценную конфигурацию для приложения. Вопрос — какого?
Того самого «среднего приложения с GitHub»: на смеси тысяч учебных работ, шаблонов вроде Spring Petclinic и других типовых примеров (вопрос качества пока оставим за скобками).
Возьмем другой пример: попросим чат создать JPA-сущность. И снова никаких проблем.
Класс, поля — всё на месте. И всё вроде нормально, но есть нюанс. Содержит ли код аннотации Lombok, а если содержит, то какие и с какими параметрами? Проставлены ли JPA-аннотации: @Column, @OneToMany, @ManyToMany и т. д.? Сгенерированный код вполне может быть корректным, однако совершенно не соответствовать соглашениям, закрепленным в вашем проекте и компании. И снова это связано с проблемой того самого «среднего приложения с GitHub».
Ситуацию можно улучшить, добавив в контекст чата нужные сведения: приложив к запросу шаблон сущности из проекта, указав ссылку на пример проекта, в котором учтены правила на GitHub. Одним словом: добро пожаловать в prompt engineering.
Однако довольно быстро становится ясно: такой prompt engineering нужен почти для каждого запроса, который вы отправляете в чат. И тут возникает практичный вопрос: если я как разработчик постоянно переключаюсь между IDE и браузером и каждый раз переношу правила, шаблоны кода и версии зависимостей, почему бы не встроить чат прямо в IDE?
Самое время найти IDE-расширение с AI-функциями. Сегодня такие плагины обычно сразу дают и чат, и агентный режим (к нему вернемся позже). На практике вы получаете автодополнение в позиции курсора, генерацию кода по запросу и чат, где можно явно передавать контекст через ссылки на файл или его фрагмент — чаще всего через @.
Теперь, попросив в чате сгенерировать JPA-сущность и приложив в качестве примера уже существующую, вы с высокой вероятностью получите код, близкий к ожидаемому.
В этот момент легко почувствовать прилив сил: кажется, что продуктивность вышла на новый уровень.
Итак, каждый раз когда появляется новая задача, мы теперь определяем, какие объекты/файлы нужно модифицировать, какие команды выполнить (в терминале). Затем открываем чат и последовательно попросив AI сгенерировать нужный код/команды, добавляя в контекст примеры и референсы.
Размберемся на примере: добавим в приложение Spring Petclinic REST Endpoint возвращающий список домашних животных для по id владельца. Для этого нам потребуется:
Осталось только попросить AI в чате сгенерировать код для каждого компонента и реаализация завершена.
После нескольких итераций становится очевидно: основная рутина теперь не в написании кода, а в планировании шагов. Естественным образом рождается вопрос — может ли AI сам определить, какие файлы и объекты нужно модифицировать и как?
Как оказалось вполне.
По сложившейся практике агентный режим чаще запускают из терминала, хотя в большинстве AI-плагинов для IDE он тоже уже есть. Чтобы не усложнять старт, установим Claude Code от Anthropic; для начала обычно достаточно базовой подписки за $20 в месяц.
После запуска агента в терминале можно повторить ту же задачу с API и сравнить подходы. В отличие от чат-сценария, здесь агент сам определяет, какие части проекта нужно изменить, и выполняет работу от начала до конца. На выходе часто получается код, сопоставимый с ручной реализацией. Кажется будущее уже наступило.
Значит, пора проверить агента на задаче посложнее. Попросим его добавить в Spring Petclinic учет рабочего расписания ветеринаров и валидацию при создании визита: расписание должно существовать, а время — не пересекаться с уже назначенными приемами. Спустя некоторое время и десятки потраченных токенов мы увидим...
К сожалению, сложно уверенно сказать, что именно мы получим на выходе. В одном случае агент действительно попадет в ожидания, но в другом — предложит решение, которое нас не устроит ни с точки зрения пользовательского сценария, ни по качеству реализации. И, что важно, второй вариант статистически вероятнее, поскольку пространство возможных решений значительно больше пространства тех, что устраивали бы именно вас.
Подробнее вопрос уровней агентного программирования мы разбирали на прямой трансляции Spring АйО и Amplicode:
Возникает вопрос: можно ли как-то помочь агенту?
Самое время усилить нашего агента. Для этого у нас есть различные иснтрументы: MCP, Skills, CLAUDE.md/AGENTS.md, SubAgents. Попробуем собрать себе такой набор.
На агрегаторах SkillHub и SkillsMP можно найти более миллиона Skills, которые, кажется, покрывают почти любой сценарий. При таком объеме качество отдельных Skill-ов неизбежно колеблется: скорость выполнения, расход токенов и качество генерации не всегда соответствуют ожиданиям. Тем не менее базовую задачу, ради которой они создавались, большинство из них решает.
Но со временем почти каждый, кто собирает собственный набор, замечает: Skills начинают мешать друг другу. Это известная проблема: агент может подгружать много Skill-ов, и все они работают в общем контексте.
Выход, конечно, есть: можно писать Skills самостоятельно. Anthropic выложил в открытый доступ курс о том, как создавать Skills, а тексты уже подобранных Skill-ов доступны для редактирования. Этот путь не быстрый и включает множество трудностей, в том числе необходимость адаптировать и тестировать весь набор под разные модели.
В этот момент мы обычно приходим к развилке: либо продолжать «есть этот кактус» — вручную собирать набор, разбирать конфликты и поддерживать набор в рабочем состоянии, — либо откатиться к чистому агенту или к агенту с минимальным набором Skill-ов для элементарных операций.
Для тех, кто «давно тут сидит», ситуация может показаться до боли знакомой — именно такую мы могли наблюдать на заре ИТ-индустрии. Вспомните, как мы сначала любовно настраивали Vim и Emacs, а потом переходили на NetBeans и Eclipse с их extension pack на все случаи жизни. Теперь же, взяв новый компьютер, часто достаточно установить IntelliJ IDEA/OpenIDE — и можно сразу начать работать. Похоже, мы всё ещё в начале пути…
Конечно, сейчас никто не может сказать, что будет с IntelliJ IDEA в мире победившего AI, однако к эпохе Eclipse с extension pack всё уже готово. Именно этот переход мы и предлагаем вам совершить, установив Spring Agent Toolkit — набор Skill-ов, MCP и хуков, совместно протестированных и необходимых для разработки Spring-приложений с помощью агентов. Ну как, захотелось?
Это комплексное решение, установив которое вы научите своего агента:
И всё это устанавливается практически одной кнопкой (ну хорошо, двумя).
Если коротко:

Полную инструкцию по установке смотрите в документации Spring Agent.
Рекомендую сейчас остановиться, поставить себе Toolkit и дать агенту задачу на реализацию — а пока агент её выполняет, можно дочитать и статью.
А теперь — немного подробнее о том, что входит в состав Spring Agent Toolkit.
Данный сервер поставляется вместе с плагином Amplicode, который вы устанавливаете в IDEA. Он решает две задачи.
Ниже — лишь малая часть доступных функций:
Полный список можно посмотреть после подключения MCP к агенту.
Над этим набором работала команда, которая не только более десяти лет разрабатывает на Spring, но и последние пять лет создаёт инструменты в IntelliJ IDEA для разработчиков по всему миру (Amplicode, JPA Buddy). Skills в наборе вобрали в себя накопленную за годы экспертизу и обратную связь. Однако мало собрать Skills, в которых сведены подряд все лучшие практики: важно, чтобы они применялись уместно и не мешали разработке именно вашего приложения.
Большое спасибо экспертам из Spring АйО за то, что помогали собирать фидбек по использованию Spring Skills и делились своими мыслями касаемо того, какие из частей работы со Spring-экосистемой хотелось бы сильнее всего видеть в формате Skills.
В будущем открытый репозиторий будет пополняться скиллами от экспертов Spring АйО и разработчиков Amplicode.
Поэтому Skills из набора часто сначала смотрят на текущие паттерны применения технологии в вашем проекте и только потом добавляют своё экспертное видение. В результате получается не всегда «идеальный», зато подходящий вашему приложению код. Однако если результат генерации содержит явные проблемы, Skill подскажет агенту, что стоит указать на них разработчику и предложить возможные исправления.
Кроме того, все Skills тестируются на совместную работу: это значит, что в них нет взаимных противоречий и что они подключаются только там, где действительно нужны. Если же агент загрузил несколько Skill-ов сразу, проверяется, что их совместная работа не мешает достижению того результата, который закладывался при разработке этих Skill-ов.
Вот только некоторые из них:
Полный список Skill-ов — в репозитории на GitHub; состав набора постоянно пополняется.
И это ещё не всё: в нашем бэклоге — огромное число задач, как связанных с написанием новых Skill-ов, так и с улучшением существующих. Мы ценим обратную связь и поощряем активных участников бесплатными лицензиями, мерч-боксами и другими подарками.
Пробуйте Spring Agent Toolkit, присылайте обратную связь и рассказывайте о своём опыте использования в социальных сетях. А больше про разработку на Java с AI-агентами читайте в нашем ТГК-канале.

Впервые опубликовано на Хабре.