编程 KotlinLLM 开源:把运行时逻辑委托给大模型的 IntelliJ 插件原型

2026-09-07 05:14:05

KotlinLLM 开源:把运行时逻辑委托给大模型的 IntelliJ 插件原型

JetBrains Research 宣布 KotlinLLM 开源。KotlinLLM 是一个 IntelliJ IDEA 插件(面向 Kotlin/JVM 项目),用于将运行时逻辑委托给大语言模型(LLM)。它不是每次请求都调用 LLM,也不运行独立智能体,而是可以编写显式的 Kotlin 调用——调用体是生成的 Kotlin 源代码,且该代码会随应用遇到新的运行时场景而更新。KotlinLLM 在 Apache License 2.0 下开源。本文基于 JetBrains Research 官方文章,解读 KotlinLLM 的设计思路、工作原理与评估结果。

KotlinLLM 是什么

KotlinLLM 是面向 Kotlin/JVM 项目的 IntelliJ IDEA 插件,添加了一个称为 Smart macros 的语言特性:

  • Smart macro 是普通的 Kotlin 函数调用,其函数体是生成的 Kotlin 代码
  • 公共 API 提供两个 Smart macro:

asLlm<F, T>(from, hint)

  • 将 F 类型的输入转换为类型化的 T 值(数据类、枚举、列表或原始类型)
  • 用于在运行时将非结构化或半结构化数据解析为类型化 Kotlin 值
// 高一层的抽象:描述意图,让 KotlinLLM 填充逻辑
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")

mockLlm()

  • 生成接口 T 的有状态实现
  • 行为取决于调用它的方法,因此可以作为无需手写的测试替身(test double)

行为来源

  • 行为来自实际运行时使用,而非程序运行前完全指定
  • 调用点保持紧凑和显式:像关键字一样的 API 封装生成的代码

解决的问题

软件工程中 LLM 通常用于开发阶段(代码补全、代码生成、程序理解)。在编译应用的运行时使用 LLM 较少见,现有方案有明显权衡:

  • 直接运行时委托(每次调用都调用模型):慢、非确定性、成本高,且应用在运行时依赖 LLM 服务
  • 外部智能体工作流:生成的逻辑在代码库之外,更难审查、测试和发布
  • 大多数先前工作(如 byLLM、nightjar、Healer)针对解释型语言(如 Python),而非像 Kotlin 这样的编译型、静态类型语言

KotlinLLM 的三个核心属性

  • 显式(Explicit):调用点显示该功能由 LLM 支持,在代码审查中可见
  • 持久(Persistent):生成的行为保存为普通 Kotlin 源代码,不只保存在运行时会话中。可以像任何其他代码一样提交、审查、测试和分发
  • 可移植(Portable):生成后,代码作为普通 Kotlin 运行,无需插件。对已覆盖的场景不再调用 LLM,因此没有额外延迟或成本,结果可复现

评估结果

在两个 Kotlin/JVM 项目上测试:

改编版 Spring Petclinic Kotlin

  • 18 个 asLlm 调用点
  • Smart macro 演进后 24/24 个应用场景完成
  • 100% 热重载成功率
  • 编译/重定义增加约 1% 的运行时开销

合成"GitHub Beginner Issue Radar"

  • 解析 20 个仓库的真实 GitHub issue 数据(3 万+ issues)
  • 在地面真值初级标签上达到约 0.89 召回率

结论:编译型 Kotlin 的持久运行时演进是可行的。评估也记录了当前限制。

开源内容

KotlinLLM 在 Apache License 2.0 下开源,仓库包含:

  • IntelliJ 插件原型和稳定的 Smart macro API
  • 可运行的示例项目(GitHub Issue Radar、改编版 Petclinic),包含已提交的生成源码——可以检查 LLM 生成了什么,并作为普通 Kotlin 运行
  • KotlinConf 2026 演讲录像和理论文稿(完整设计原理和评估)

实践建议

  • KotlinLLM 是研究原型,欢迎反馈
  • 可以试试在自己的 Kotlin/JVM 项目上使用:添加 KotlinLLM.kt API 文件,用 "Run with KotlinLLM" 执行器启动,让 Smart macros 演进
  • 遇到问题(粗糙边缘、意外 LLM 行为、缺失场景)可以开 issue
  • 提交实际用例的 PR

总结

KotlinLLM 是 JetBrains Research 开源的 IntelliJ IDEA 插件原型,把运行时逻辑委托给 LLM 的方式从"每次调用模型"或"外部智能体"改为"生成并持久化 Kotlin 源代码"。核心是 Smart macros:asLlm(非结构化/半结构化数据 → 类型化 Kotlin 值)和 mockLlm(自动生成有状态测试替身)。三个核心属性:显式(调用点可见、可审查)、持久(生成的代码保存为普通 Kotlin 源码,可提交/审查/测试/分发)、可移植(生成后无需插件、无额外 LLM 调用、无延迟和成本、结果可复现)。评估:改编版 Petclinic 24/24 场景完成、100% 热重载成功、约 1% 运行时开销;GitHub Issue Radar 3 万+ issues 解析达约 0.89 召回率。意义:把 LLM 生成的逻辑引入编译型、静态类型语言的运行时,让"AI 生成代码"成为应用代码库中可审查、可测试、可演进的一部分,而非黑盒调用。对 Kotlin 开发者和 AI 工程研究者,这是一个探索"运行时 AI 逻辑"边界的有价值原型。

来源:https://blog.jetbrains.com/research/2026/07/kotlinllm-open-source/

推荐文章

程序员茄子在线接单