Как стать автором
Поиск
Написать публикацию
Обновить
61.89

Как мы сделали AI-агента и пользуемся им на практике

Время на прочтение6 мин
Количество просмотров772

Привет, Хабр! В последнем обновлении Explyt мы добавили AI-агента для написания кода. В этой статье расскажем, что он умеет и как мы сами его используем.

Пару месяцев назад в нашем плагине не было AI‑агента, а был только ассистент для генерации тестов. И пока агент не появился, в работе мы использовали другие известные плагины. Лично мне очень нравился Copilot, из‑за своего минималистичного интерфейса и контроля за контекстом. Однако фичи копайлота в первую очередь доезжали до VSCode, а пользователю IntelliJ IDEA приходилось дожидаться их месяцами. Поэтому для прототипирования и скаффолдинга, написания бойлерплейтного кода с помощью AI‑агентов мне приходилось переключаться между любимой средой разработки и IntelliJ, что было несколько неудобно.

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

Что может агент?

Агент может выполнять произвольную задачу по запросу в чате.

Например, на видео выше показано, как по запросу агент решает следующую задачу: посылать пользователю письмо с сообщением «Пароль был успешно изменен!» после изменения пользователем пароля. Агент читает существующий код, шаблоны и тесты и добавляет нужную функциональность:

  1. новый код в сервисы

  2. шаблон письма, которое будет отправлено пользователю

  3. необходимые строки в файлы ресурсов (постоянно пользуюсь)

  4. интеграционные тесты на новую функциональность

Агент пишет новый сервис с нуля по спецификации

Приложение на демо дает возможность студентам просматривать обучающие видеокурсы. На видео показано, как агент по спецификации создаёт новый сервис, позволяющий студенту управлять избранными страницами, например, добавить курс в избранное и посмотреть список избранных курсов. Агент добавляет:

  • необходимые DTO для избранного

  • сервис управления избранными курсами и его реализацию

  • репозиторий для управления избранными курсами

  • контроллер для управления избранными курсами

Агент добавляет комментарии в код

Агент читает код репозитория и добавляет docstring-комментарий к каждому методу требуемого сервиса.

Агент пишет документацию по коду

Агент читает код репозитория и добавляет документацию по требуемому сервису:

  • его ключевые ответственности

  • описание основных методов

  • как производится валидация данных и управление ошибками

  • как производится взаимодействие с базой данных

  • как происходит кэширование

  • какие есть регулярные запланированные задачи

  • как устроено логирование

  • какая у сервиса ответственность по части безопасности

  • какие у сервиса есть зависимости

Агент умеет самостоятельно:

  • использовать инструменты для редактирования кода

  • использовать средства для исследования проекта

  • выполнять команды в терминале

  • анализировать проект на наличие ошибок компиляции

Агент видит и может модифицировать все файлы в данном проекте, в частности: код, тесты, шаблоны, ресурсы, документацию, конфигурации сборки. Агент может добавлять новые файлы любых типов при необходимости.

Пользователь:

  • проверяет изменения, внесённые агентом, может любое из них принять или отменить

  • может разрешить или запретить агенту использовать некоторые инструменты, например, вызов консольных команд

Бонус - наши любимые фичи

Агент рисует кликабельные кнопки

Взаимодействие с LLM через кнопки позволяют на короткое время почувствовать себя zero‑coder'ом:) На видео по промпту создается новая фича для AI‑ассистента:

Агент формирует интерактивные чеклисты

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

AI-ассистенты: где хайп, а где реальная польза

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

Однако в процессе пользования сгенерированным кодом может оказаться, что поддерживать его очень дорого; не хватает как раз тех вещей, от которых удалось убежать раньше: продуманного API, тестов и ответственного за фичу программиста, к которому можно пойти с вопросами.

Иначе (реальная история) на вопросы про фичу кодовнер будет отвечать:

Я не помню что там делал

AI‑агенты, как иногда кажется, стремятся исполнить главное и самое сокровенное желание разработчика — избавить его от необходимости писать код. Но в реальности получается, что «жар» все‑таки «загребается», но уже чужими руками, и на перспективу человеческая экспертность, ценность комментов, тестов и документации выше, чем ценность самого кода.

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

Более безопасное применение AI‑агентов — в задачах, где нужно разобраться в незнакомом проекте, подебажить проблему. Иногда именно тебе приходится разбираться в ошибке, когда твоя фича использует новый компонент или, как обычно бывает, когда просто некому еще. Например, однажды агент по детальному описанию проблемы помог найти ошибку в конфиге сборки. О том, что этот конфиг вообще влияет на работу приложения, я не знал.

Еще, по нашему опыту, безопасно применять агентов, когда нужно сделать локальное изменение в проекте, которое ты понимаешь, как сделать в коде. Соответственно, можешь сформулировать задачку не абстрактно («gpt4o, сделай, чтобы была кнопка, при нажатии на которую моделька улучшает пользовательский промпт»), а на уровне конкретных деталей реализации («в таком-то контроллере добавь такой‑то класс...»).

Удобно и наоборот, когда не ты промптишь LLM, а LLM промптит тебя, задавая уточняющие вопросы. Такой подход хорошо работает с нашей фичей с кликабельными кнопками (см. пример выше).

Даже с учётом этих рекомендаций агенты не гарантируют ускорения работы. Если изменение небольшое — быстрее сделать самому, чем описывать задачу агенту и ревьюить результат. Если это глобальный рефакторинг — потом …

Стол сломаешь

… все это рефакторить и править. Поэтому при использовании агента надо искать баланс между ограниченностью задачи и реальным ускорением разработки.

Много отрицательных впечатлений возникает из‑за misuse агентов. Мы в будущем будем форсировать на уровне UI/UX best practices, чтобы сделать плохо было все сложнее и сложнее. Например, уже работаем над компонентом, который позволит индексировать и отдавать агенту не только текущую кодовую базу, но и используемые библиотеки с их документацией. Так агент будет «знать» про эти компоненты, меньше ошибаться и лучше кодить.

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

Если хочется попробовать самому

В Explyt 4.0, кроме AI-агента, добавлены генерация тестов по исполнению и спецификации, расширенная поддержка Testcontainers и @DataJpaTest (инструкция по установке плагина). Фича пока в бете: мы продолжаем улучшать стабильность и будем рады вашей обратной связи.

Выбрав OpenAI‑compatible провайдер в настройках плагина, вы можете попробовать Explyt с новыми моделями, например Qwen3-Coder на OpenRouter или Together.ai, а также развернуть и использовать модель локально.

Для этого рекомендуем llama.cpp и LM Studio. Помните, что для моделей меньше 30B параметров хороших результатов скорее всего не будет. Для запуска больших моделей рекомендуем использовать vLLM и другие high‑performance фреймворки.

Каналы для багрепортов и фичереквестов: GitHub Issues и чат с командой плагина.

Теги:
Хабы:
+9
Комментарии0

Публикации

Информация

Сайт
explyt.ai
Дата регистрации
Дата основания
Численность
31–50 человек
Представитель
Надя Давыдова