MPS 2026.1 正式发布
MPS 现已采用 IntelliJ Platform 2026.1、JDK 25 和 Kotlin 2.3。构建语言获得了传递依赖的支持,迁移过程更具可重复性,Java 桩代码也经历了重大的质量更新。捆绑的 Projectional Agent Toolkit 插件使 AI 编码代理能够读取和写入 MPS 模型,从而为 MPS 开发者和语言作者开启了一系列前沿的开发理念。
新特性
以下是其中最值得关注的新功能。
Projectional Agent Toolkit —— AI 编码代理现可直接处理 MPS 模型
MPS 附带 Projectional Agent Toolkit 插件,该插件通过 Model Context Protocol 将 MPS 的投影、模型和语言工作台暴露给 AI 编码代理。诸如 Claude Code、OpenAI Codex、JetBrains Junie 以及其他任何兼容 MCP 的客户端,都可以连接到运行中的 MPS 实例,并像开发者一样对其进行操作 —— 导航模块和模型、通过投影编辑器读取和编辑节点、解析引用、检查概念层次结构、生成代码以及运行配置。它们不再需要将 .mps 文件视为不透明的 XML。
[LOADING...]
Projectional Agent Toolkit 提供了十余种工具集,覆盖 MPS 项目的各个方面:
- 项目、模块和模型 —— 这些工具使代理能够枚举解决方案、语言和开发工具包;打开和创建模型;以及解析依赖关系。
- 语言和概念 —— 这些工具使代理能够检查概念层次结构、属性、子节点、引用和继承关系,并能根据 JSON 蓝图实现结构概念。
- 根节点和节点 —— 这些工具允许代理通过节点感知操作读取、创建、更新、移动和删除节点,这些操作尊重概念约束,而非文本级别的编辑。
- 引用和作用域 —— 这些工具使代理能够查询引用链接的可分配目标,从而让代理首次就能选择有效的引用对象。
- 运行配置 —— 这些工具使代理能够列出并执行项目运行配置,以进行端到端的变更验证。
为了确保代理能够尽快投入工作,该工具包还附带了一组技能 —— 聚焦于模型感知的剧本,随工具一同提供。它们教会代理 MPS 语言的组织方式、如何实现结构概念、如何处理编辑器、如何以 JSON AST 形式编写 BaseLanguage,以及在未来的会话中如何记录 DSL 特定的记忆。技能可通过相同的 MCP 通道发现,因此新连接的代理可以在开始编辑之前询问 MPS 它需要了解什么。
在基于 IntelliJ 的 IDE 中使用各种 AI 助手的体验现在自然地延伸到语言和 DSL 开发中:代理可以实现新的概念、配置其编辑器和约束、添加行为方法、创建 DSL 代码、重新生成并测试运行结果 —— 所有这些操作都保持在 MPS 语义模型内部。对于语言设计者来说,这将 AI 辅助从代码补全的便利性转变为理解投影的协作者。
Projectional Agent Toolkit 是一项实验性功能,未来可能会发生 API 变更。它已捆绑并默认启用。只需启动嵌入式 MCP 服务器,并将支持 MCP 的代理指向 MPS 实例,工具集和技能便会自动出现。
阅读 Projectional Agent Toolkit 文档 获取完整详情。
迁移至 IntelliJ Platform 2026.1、JDK 25 和 Kotlin 2.3
MPS 2026.1 完成了向当前一代 IntelliJ Platform 的跃迁。运行时为 JDK 25,嵌入的 Kotlin 版本为 2.3.0。此外,MPS 现在从 Kotlin 仓库自行构建并发布与 2.3.0 标签匹配的 kotlinx-metadata-klib / kotlin-metadata-jvm 制品,从而恢复了基于 KLib 的 Kotlin 桩代码支持 —— 这是上一公共版本 kotlinx-metadata-klib:0.0.6 无法再提供的功能。
能够针对特定自然语言检查 ICheckedNamePolicy
MPS 现在使用了 IntelliJ Platform 的自然语言支持(由 Grazie 提供)。这意味着您可以检查 ICheckedNamePolicy 实例(如意图、动作或工具)中的字符串值是否根据特定自然语言的规则进行了正确的大小写处理。
[LOADING...]
您现在可以为 MPS 安装您偏好的语言的自然语言支持,IDE 将检测字符串中使用的语言,并验证各个单词的大小写是否正确。您也可以绕过语言检测机制,明确指定所需的语言。
除了默认的标题大小写规则外,MPS 还提供另外三种选项:
- 句子大小写,遵循 IntelliJ Platform 的规则。
- 继承,使用最近祖先
ICheckedNamePolicy的大小写规则。 - 无大小写规则。
新的布尔编辑器样式:read-only-inspector
新的 read-only-inspector 样式对检查器中的所有编辑器单元格应用只读属性。当该样式应用于主编辑器中的某个单元格时,若该单元格被选中,检查器对于被检查的节点将变为只读。该新样式具有以下属性:
- 默认禁用。
- 该样式是可继承且可覆盖的,就像
read-only样式一样。 - 对主编辑器单元格不产生效果。
- 通过此机制设置的
read-only样式可以在检查器编辑器单元格树中更深层的任何单元格中被覆盖。
构建语言中的传递依赖
构建语言不再要求每个传递可达的构建脚本都必须在 dependencies 中列出。这意味着,一个依赖于 BuildB 的构建脚本 BuildA,现在可以通过 BuildB 访问 BuildC(前提是 BuildB 依赖于 BuildC),而无需显式列出 BuildC。生成器会为这种情况输出 ${artifacts.BuildC} Ant 属性,这些属性可以由外部构建工具(如 Gradle 或 Maven)提供。
这允许您将大型构建拆分为更小的构建,而无需强制每个用户更新依赖列表。例如,单个 platform 构建脚本可以封装跨子项目使用的一组不断增长的外部库。
通过记录的依赖关系实现更可靠的迁移
迁移代码以前会根据迁移时实际模块依赖和使用的语言来决定应用哪些迁移,但它会从模块描述符中记录的依赖快照中读取版本。这种不匹配可能导致迁移使用的世界视图与模块最后一次修改时所处的视图不一致。
在 2026.1 版本中,迁移机制一致地使用模块描述符中记录的在最后一次修改时的依赖和已使用语言,而不是当前可观察的状态。迁移检查器也已相应重构。它现在复用已为迁移过程收集的信息,而不是按需重新计算。
现代化的项目生命周期
随着 MPSProject 从传统的 IntelliJ IDEA ProjectComponent 转变为项目服务,MPS 感知特性需要一种可靠的方式来获知 MPSProject 何时可用及何时消失。
本版本引入了一种专用机制来管理 MPSProject 的启动和关闭活动,使 MPS 能够控制这些活动的顺序、分组、排序和线程化。这是平台提供的 ProjectActivity 和 MPSProjectActivity 所无法提供的功能。
工作原理:实现者通过 jetbrains.mps.project.lifecycleListener 扩展点(在 MPSCore.xml 中声明)注册,使用包含 listenerClass 和可选整数 priority 的 ProjectLifecycleListener.Bean。MPSProject 内部的 LifecycleEventDispatch.java 可以触发:
projectReady—— 非阻塞。projectDiscarded—— 阻塞。asyncProjectClosed—— 非阻塞。
更多新特性……
请访问 What's New 页面查看所有新功能。
新 UI
本版本中,Classic UI 插件默认被禁用,并将在未来更新中不再受支持。如果您正在使用该插件,建议迁移到新 UI。
已修复问题的完整列表可参阅 此处。
尝试新功能并 告诉我们 您的想法。
JetBrains MPS 团队