Инструменты31 июля 2026 г., 14:17 МСК🤖 Auto

JetBrains открыла KotlinLLM: генерация кода в рантайме через JDI

JetBrains Research выпустила плагин KotlinLLM для IntelliJ IDEA, позволяющий генерировать и горячо перезагружать Kotlin-код на лету с помощью LLM. Это прототип, но результат — чистый Java-байткод без зависимостей от AI.

Баннер новости 4804

Что такое Smart Macros и как это работает

KotlinLLM вводит концепцию Smart Macros — макросов, которые на этапе выполнения заменяют вызов функции реальным сгенерированным кодом. Плагин сканирует проект на наличие специальных вызовов, запускает конфигурацию через JDI (Java Debug Interface) и вешает брейкпоинты на хуки регенерации. Если сгенерированная логика не подходит под сценарий, выполнение останавливается, плагин захватывает контекст, отправляет его в LLM, получает новый код, перекомпилирует класс и перезагружает его без перезапуска JVM.

Ключевые API и примеры использования

Публичный API намеренно минималистичен и состоит из двух основных функций:

  • asLlm<F, T>(from, hint) — преобразует входные данные типа F в типизированное значение T (дата-класс, enum, список или примитив) на основе текстового подсказки (hint).
  • mockLlm<T>() — генерирует stateful-реализацию интерфейса T, поведение которой зависит от того, какие методы вызываются.

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

Прототип был протестирован на адаптированном проекте Spring Petclinic с 18 точками вызова asLlm. Результаты демонстрируют высокую надежность механизма горячей перезагрузки:

Метрика Значение Примечание
Успешность сценариев 24/24 (100%) Все 24 сценария приложения завершены успешно
Успешность Hot-Reload 100% Переопределение классов прошло без ошибок
Накладные расходы ~1% Время компиляции и переопределения от общего времени выполнения
Recall (GitHub Radar) ~0.89 На синтетическом датасете из 30k+ issues (20 репозиториев)

Почему это важно для Kotlin-разработчиков

Главное преимущество KotlinLLM — отсутствие зависимости от LLM в продакшене. Сгенерированный код сохраняется как обычный Kotlin-источник. После того как поведение сгенерировано и проверено, проект можно собрать и запустить без подключения к AI-модели. Это решает проблемы с задержками (latency) и стоимостью инференса для закрытых сценариев.

Требования и статус релиза

Проект выпущен под лицензией Apache 2.0 и является исследовательским прототипом. Он поддерживает только Kotlin/JVM (из-за использования JDI для переопределения классов). Для работы требуются:

  • IntelliJ IDEA 2025.2.x
  • JDK 21
  • Ключ API OpenAI (хранится в файле .kotlinllm)

JetBrains рекомендует использовать инструмент R&D-группам и командам, работающим с messy API-ответами или нуждающимся в динамической генерации тестовых двойников (test doubles). Для регулируемых отраслей (финтех, банки) сгенерированный код должен проходить ручной ревью, так как он сохраняется в виде обычных файлов исходного кода.

Источник: MarkTechPost ↗