JetBrains 开源 IDE 插件,支持 LLM 动态生成 Kotlin 代码宏并热重载,通过 JDI 捕获运行时值提升生成精度。直接提效 Kotlin 开发工作流,对 JetBrains 用户价值高。
人工智能
JetBrains Research 将 KotlinLLM 开源。KotlinLLM 是一款面向 Kotlin/JVM 项目的 IntelliJ IDEA 插件,引入了一项名为 Smart macros 的语言特性。Smart macro 是一种普通的 Kotlin 函数调用,其函数体由生成的 Kotlin 代码构成。它有意将公共 API 控制得非常精简。asLlm<F, T>(from, hint) 可以把 F 类型的输入转换成 T 类型的值,例如 data class、enum、list 或 primitive。mockLlm<T>() 则会生成接口 T 的有状态实现,其行为取决于调用了哪些方法。
val issuesApiUrl: String = asLlm(repoInput, hint = "GitHub API URL: get all issues, including closed")
val issues: List<Issue> = asLlm(response, hint = "Return all beginner-friendly issues for this repository")
当项目通过 KotlinLLM run configuration 启动时,插件会扫描 asLlm 和 mockLlm 调用,更新自动生成的 bootstrap、provider、parser 和 mock 文件,通过 JDI 启动 run configuration,并在生成的 regenerate hook 上注册断点。如果生成的逻辑与某个运行时场景不匹配,程序就会执行到相应的 hook。插件会从暂停的 frame 中捕获运行时值和类型信息,由 LLM Agent 提交代码更新,随后插件进行编译并重新定义已加载的 class,最后重试原始调用。
KotlinLLM 专门面向 Kotlin/JVM,是因为这一运行时演进循环依赖于通过 JDI 实现的 JVM class redefinition。
下方嵌入的内容介绍了 macro API,以动画形式展示九步运行时循环,并说明为什么已经覆盖的场景不会继续产生 inference call 成本。
在一个经过改造的 Spring Petclinic Kotlin 项目中,共有 18 个 asLlm 调用点。经过 Smart macro 演进后,24 个应用场景全部成功完成,hot-reload 成功率达到 100%,编译和重新定义带来的开销约占总运行时开销的 1%。一个合成的“GitHub Beginner Issue Radar”还解析了来自 20 个真实 repository、共计 3 万多条 issue 的数据;在以真实 beginner 标签作为 ground truth 时,其 recall 约为 0.89。
该插件要求使用 IntelliJ IDEA 2025.2.x、JDK 21,并需要通过 Tools > KotlinLLM Settings,将 OpenAI API key 存储在目标项目的 .kotlinllm 文件中。项目采用 Apache License 2.0 发布,repository 内还提供了可运行的示例、论文全文以及 KotlinConf 2026 演讲录像。
至少目前,它还不是 production runtime。JetBrains 将 KotlinLLM 定位为 research prototype,并称其为一款实验性的 IntelliJ IDEA 插件。插件本身尚处于实验阶段,但它生成的产物可以部署。一旦行为生成完毕,目标项目便可以在相同场景下直接编译并运行这些行为,无须再次向 LLM 发起请求。你交付的是普通 Kotlin 代码,而不是对模型的依赖。
从企业层面来看,目前最适合采用 KotlinLLM 的是研发团队、中大型 Kotlin/JVM 组织中的平台团队,以及能够接受原型工具的初创公司。受监管企业应将生成的 source code 视为需要审查的代码,而 KotlinLLM 存储这些代码的方式恰好支持这种流程。
适用行业包括:拥有大量 JVM/Kotlin 系统的金融科技与银行业、开发者工具、电商、物流,以及任何需要解析混乱第三方 API payload 的团队。
应用场景包括:将半结构化 API response 规范化为 typed value、构建能够持续演进的 test double、适配上游 schema drift,以及对包含噪声的文本字段进行分类。
KotlinLLM 是 JetBrains Research 推出的 prototype,而不是 production runtime。
Smart macros 会生成可以提交、审查并在不安装插件的情况下运行的 Kotlin source code。
已经覆盖的场景不会再触发 LLM call,因此不会增加延迟或成本。
Petclinic 评估结果:24/24 个场景成功,hot-reload 成功率 100%,开销约为 1%。
采用 Apache 2.0,仅支持 Kotlin/JVM,需要 IntelliJ IDEA 2025.2.x 和 JDK 21。
资料来源:JetBrains Research 博客、kotlinllm-plugin README,以及 InfoWorld。
Michal Sutter 是一位数据科学专业人士,拥有帕多瓦大学数据科学理学硕士学位。凭借在统计分析、machine learning 和 data engineering 方面的扎实基础,Michal 擅长将复杂数据集转化为可执行的洞察。