AI-агенты уже стали частью повседневной разработки. Сначала это выглядит как магия: формулируешь задачу, получаешь код, тесты, иногда даже готовый PR.

Но довольно быстро приходит осознание:

  • токены улетают слишком быстро;

  • задача выполняется дольше, чем ожидалось;

  • результат не всегда совпадает с тем, что было задумано.

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

Уровень 0. Чат в браузере

Так выглядело начало индустрии — и первый опыт AI для большинства из нас. Первый запрос, первый ответ, первые галлюцинации. Кажется, это было вчера, хотя прошло уже два-три года.

С тех пор чат в браузере прошел заметную эволюцию: модели поумнели, а сами интерфейсы получили полезный инструментарий — от веб-поиска до работы с открытыми источниками. На качестве ответов это сказалось напрямую: меньше фантазий, больше проверяемых фактов и уверенности в результате.

Попросите код для Spring Security с OAuth — в ответ вы получите полноценную конфигурацию для приложения. Вопрос — какого?

Того самого «среднего приложения с GitHub»: на смеси тысяч учебных работ, шаблонов вроде Spring Petclinic и других типовых примеров (вопрос качества пока оставим за скобками).

Возьмем другой пример: попросим чат создать JPA-сущность. И снова никаких проблем.

Класс, поля — всё на месте. И всё вроде нормально, но есть нюанс. Содержит ли код аннотации Lombok, а если содержит, то какие и с какими параметрами? Проставлены ли JPA-аннотации: @Column, @OneToMany, @ManyToMany и т. д.? Сгенерированный код вполне может быть корректным, однако совершенно не соответствовать соглашениям, закрепленным в вашем проекте и компании. И снова это связано с проблемой того самого «среднего приложения с GitHub».

Ситуацию можно улучшить, добавив в контекст чата нужные сведения: приложив к запросу шаблон сущности из проекта, указав ссылку на пример проекта, в котором учтены правила на GitHub. Одним словом: добро пожаловать в prompt engineering.

Однако довольно быстро становится ясно: такой prompt engineering нужен почти для каждого запроса, который вы отправляете в чат. И тут возникает практичный вопрос: если я как разработчик постоянно переключаюсь между IDE и браузером и каждый раз переношу правила, шаблоны кода и версии зависимостей, почему бы не встроить чат прямо в IDE?

Уровень 1. Интеграция чата в IDE

Самое время найти IDE-расширение с AI-функциями. Сегодня такие плагины обычно сразу дают и чат, и агентный режим (к нему вернемся позже). На практике вы получаете автодополнение в позиции курсора, генерацию кода по запросу и чат, где можно явно передавать контекст через ссылки на файл или его фрагмент — чаще всего через @.

Теперь, попросив в чате сгенерировать JPA-сущность и приложив в качестве примера уже существующую, вы с высокой вероятностью получите код, близкий к ожидаемому.

В этот момент легко почувствовать прилив сил: кажется, что продуктивность вышла на новый уровень.

Итак, каждый раз когда появляется новая задача, мы теперь определяем, какие объекты/файлы нужно модифицировать, какие команды выполнить (в терминале). Затем открываем чат и последовательно попросив AI сгенерировать нужный код/команды, добавляя в контекст примеры и референсы.

Размберемся на примере: добавим в приложение Spring Petclinic REST Endpoint возвращающий список домашних животных для по id владельца. Для этого нам потребуется:

  • добавить derived метод в PetRepository

  • создать сервис PetService и метод вызывающий репозиторий

  • создать маппер PetMapper и метод маппинга Pet -> PetDto

  • создать метод в PetRestController принимающий id и возвращающий List

Осталось только попросить AI в чате сгенерировать код для каждого компонента и реаализация завершена.

После нескольких итераций становится очевидно: основная рутина теперь не в написании кода, а в планировании шагов. Естественным образом рождается вопрос — может ли AI сам определить, какие файлы и объекты нужно модифицировать и как?

Как оказалось вполне.

Уровень 2. Агентное программирование

По сложившейся практике агентный режим чаще запускают из терминала, хотя в большинстве AI-плагинов для IDE он тоже уже есть. Чтобы не усложнять старт, установим Claude Code от Anthropic; для начала обычно достаточно базовой подписки за $20 в месяц.

После запуска агента в терминале можно повторить ту же задачу с API и сравнить подходы. В отличие от чат-сценария, здесь агент сам определяет, какие части проекта нужно изменить, и выполняет работу от начала до конца. На выходе часто получается код, сопоставимый с ручной реализацией. Кажется будущее уже наступило.

Значит, пора проверить агента на задаче посложнее. Попросим его добавить в Spring Petclinic учет рабочего расписания ветеринаров и валидацию при создании визита: расписание должно существовать, а время — не пересекаться с уже назначенными приемами. Спустя некоторое время и десятки потраченных токенов мы увидим...

К сожалению, сложно уверенно сказать, что именно мы получим на выходе. В одном случае агент действительно попадет в ожидания, но в другом — предложит решение, которое нас не устроит ни с точки зрения пользовательского сценария, ни по качеству реализации. И, что важно, второй вариант статистически вероятнее, поскольку пространство возможных решений значительно больше пространства тех, что устраивали бы именно вас.

Подробнее вопрос уровней агентного программирования мы разбирали на прямой трансляции Spring АйО и Amplicode:

Возникает вопрос: можно ли как-то помочь агенту?

Уровень 3. Skills

Самое время усилить нашего агента. Для этого у нас есть различные иснтрументы: 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-приложение с учётом архитектуры (в том числе DDD)

  • понимать Spring Data JPA: настройка модели, работа с репозиториями и транзакциями

  • работать с DTO и мапперами (MapStruct, ModelMapper)

  • конфигурировать Spring Security

  • создавать CRUD REST и настраивать Spring MVC

  • отлаживать приложение с помощью агента

  • и не только: возможности постоянно расширяются

И всё это устанавливается практически одной кнопкой (ну хорошо, двумя).

Spring Agent Toolkit: как установить

Если коротко:

  1. Устанавливаем плагин Amplicode в IDE (страница загрузки).

  2. После перезапуска IDE на Welcome screen нажимаем кнопку «Настроить Spring Agent».

Полную инструкцию по установке смотрите в документации Spring Agent.

Рекомендую сейчас остановиться, поставить себе Toolkit и дать агенту задачу на реализацию — а пока агент её выполняет, можно дочитать и статью.

А теперь — немного подробнее о том, что входит в состав Spring Agent Toolkit.

Spring MCP

Данный сервер поставляется вместе с плагином Amplicode, который вы устанавливаете в IDEA. Он решает две задачи.

  1. Первая — дать агенту возможность анализировать приложение и взаимодействовать с ним в парадигме Spring-фреймворка. Например, с помощью этого MCP агент сможет посмотреть структуру приложения, связи бина с другими компонентами и получить доменную модель.

  2. Вторая — дать авторам и разработчикам Skill-ов (в том числе нам самим — команде Spring Agent Toolkit) доступ к заранее структурированной и консолидированной информации о вашем приложении. Это значит, что если, например, разработчику в рамках Skill-а нужно построить дерево зависимостей сущности, то сделать это можно за несколько последовательных вызовов MCP. С помощью Spring MCP авторы Skill-ов могут запускать и отлаживать приложение, а также запускать тесты и скрипты Connekt.

Ниже — лишь малая часть доступных функций:

  • list_spring_beans_tool, list_all_domain_entities, list_project_endpoints — список бинов, сущностей и эндпоинтов, в том числе в библиотеках и стартерах

  • get_bean_injection_info, get_entity_details, get_endpoint_info — доступ к структурированной информации о связях бина и структуре сущностей

  • create_migration_script — генерация миграционных скриптов

  • read_class_file — доступ к содержимому файлов в зависимостях

Полный список можно посмотреть после подключения MCP к агенту.

Spring Skills

Над этим набором работала команда, которая не только более десяти лет разрабатывает на Spring, но и последние пять лет создаёт инструменты в IntelliJ IDEA для разработчиков по всему миру (Amplicode, JPA Buddy). Skills в наборе вобрали в себя накопленную за годы экспертизу и обратную связь. Однако мало собрать Skills, в которых сведены подряд все лучшие практики: важно, чтобы они применялись уместно и не мешали разработке именно вашего приложения.

Большое спасибо экспертам из Spring АйО за то, что помогали собирать фидбек по использованию Spring Skills и делились своими мыслями касаемо того, какие из частей работы со Spring-экосистемой хотелось бы сильнее всего видеть в формате Skills.

В будущем открытый репозиторий будет пополняться скиллами от экспертов Spring АйО и разработчиков Amplicode.

Поэтому Skills из набора часто сначала смотрят на текущие паттерны применения технологии в вашем проекте и только потом добавляют своё экспертное видение. В результате получается не всегда «идеальный», зато подходящий вашему приложению код. Однако если результат генерации содержит явные проблемы, Skill подскажет агенту, что стоит указать на них разработчику и предложить возможные исправления.

Кроме того, все Skills тестируются на совместную работу: это значит, что в них нет взаимных противоречий и что они подключаются только там, где действительно нужны. Если же агент загрузил несколько Skill-ов сразу, проверяется, что их совместная работа не мешает достижению того результата, который закладывался при разработке этих Skill-ов.

Вот только некоторые из них:

  • Spring Planning — создаёт структурированный план реализации с интерактивным сбором контекста, выбором архитектуры и декомпозицией задач

  • Spring Explore — исследует приложение Spring Boot и формирует контекст проекта: технологический стек, структуру модулей, доменные сущности, REST-эндпоинты

  • Spring Data JPA — правила и рекомендации по работе со Spring Data JPA: создание и изменение сущностей, репозиториев, проекций и транзакционного кода

  • CRUD REST Controller — создаёт Spring REST-контроллер с CRUD-эндпоинтами

  • Java Debug — отладка приложений через отладчик IntelliJ IDEA: брейкпоинты, debug-сессии, пошаговое выполнение, вычисление выражений, инспекция состояния во время выполнения

Полный список Skill-ов — в репозитории на GitHub; состав набора постоянно пополняется.

Заключение

И это ещё не всё: в нашем бэклоге — огромное число задач, как связанных с написанием новых Skill-ов, так и с улучшением существующих. Мы ценим обратную связь и поощряем активных участников бесплатными лицензиями, мерч-боксами и другими подарками.

Пробуйте Spring Agent Toolkit, присылайте обратную связь и рассказывайте о своём опыте использования в социальных сетях. А больше про разработку на Java с AI-агентами читайте в нашем ТГК-канале.