Что такое 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 ↗
