AI 快讯 编译自 marktechpost #模型发布#工具评测#开源

JetBrains 开源 KotlinLLM:运行时生成 Kotlin 源码并热重载,大幅降低 LLM 调用成本

JetBrains Research 开源 KotlinLLM 插件,通过 Smart macros 在运行时生成 Kotlin 源码,并利用 JDI 热重载。覆盖场景后无需再调用 LLM,测试中 24/24 场景成功,开销仅 1%。了解其原理、适用场景及对中文开发者的意义。

编译发布 2026/07/31 原文发布 2026/07/31

一句话看懂

JetBrains Research 开源了 KotlinLLM,一个 IntelliJ IDEA 插件。它能在运行时用 LLM 生成 Kotlin 源码,并通过 JDI 热重载,让已覆盖的场景不再消耗推理调用。

详细发生了什么

KotlinLLM 是 JetBrains Research 推出的实验性 IntelliJ IDEA 插件,专为 Kotlin/JVM 项目设计,引入了一种名为 Smart macros 的语言特性。Smart macro 本质上是一个普通的 Kotlin 函数调用,但函数体由 LLM 生成,而不是运行时实时调用模型。

插件提供两个核心 API:asLlm<F, T>(from, hint) 把输入类型 F 转换成类型化值 T(比如 data class、enum、list 或 primitive),mockLlm<T>() 则生成一个接口的有状态实现,行为取决于调用了哪些方法。

运行时循环是这样工作的:项目通过 KotlinLLM 运行配置启动后,插件扫描所有 asLlmmockLlm 调用,更新生成的 bootstrap/provider/parser/mock 文件,在 JDI 下启动运行配置,并为生成的 regenerate hooks 注册断点。如果生成的逻辑跟运行时场景不匹配,执行会到达 hook。插件从挂起的帧中捕获运行时值和类型信息,LLM agent 提交代码更新,插件编译并重新定义已加载的类,然后重试原始调用。

在适配的 Spring Petclinic Kotlin 项目(18 个 asLlm 调用点)上,24/24 个应用场景在 Smart macro 进化后全部完成,热重载成功率 100%,编译和重定义带来的运行时开销约 1%。另一个合成测试“GitHub Beginner Issue Radar”解析了 20 个仓库、3 万多个 issue 的真实数据,在 ground-truth beginner 标签上达到约 0.89 的召回率。

KotlinLLM 需要 IntelliJ IDEA 2025.2.x、JDK 21,以及存储在项目 .kotlinllm 文件中的 OpenAI API key。它采用 Apache License 2.0 许可,仓库里包含可运行示例、论文和 KotlinConf 2026 演讲录像。

中文圈视角

对中文开发者来说,KotlinLLM 的“生成后即普通代码”理念很有吸引力,但实际使用门槛不低:需要 IntelliJ IDEA 2025.2.x、JDK 21,以及 OpenAI API key。这意味着国内用户得解决网络访问问题,或者配置代理。不过,插件是开源的,理论上可以改成支持国产模型(比如 DeepSeek、通义千问)的 API,但官方目前没有提供这类适配。

跟国内类似工具相比,KotlinLLM 的差异化在于它生成的是可审查、可提交的 Kotlin 源码,而不是运行时黑盒调用,这符合国内企业对代码合规和审计的要求。对于金融、电商等重度使用 Kotlin/JVM 的行业,KotlinLLM 可以用于规范化第三方 API 响应、构建测试替身,但需要注意生成代码的审查流程。目前中文社区对此讨论较少,值得关注后续发展。

几条值得记住的细节

  • KotlinLLM 是研究原型,不是生产运行时,但生成的代码是可部署的普通 Kotlin,不依赖模型。
  • 覆盖场景后不再触发 LLM 调用,因此没有额外延迟和成本。
  • 测试结果:Petclinic 项目 24/24 场景成功,热重载成功率 100%,运行时开销约 1%。
  • 环境要求:IntelliJ IDEA 2025.2.x、JDK 21、OpenAI API key。
  • 许可:Apache License 2.0,仅支持 Kotlin/JVM。

一句话总结

KotlinLLM 让 LLM 生成的代码成为可审查的普通源码,大幅降低推理成本,但国内使用需注意网络和模型适配问题。