MPS 2026.1 最新变化

MPS 现在采用 IntelliJ Platform 2026.1、JDK 25 和 Kotlin 2.3。 Build Language 获得传递依赖项,迁移过程更具可重现性,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 来处理。

Projectional Agent Toolkit 贡献了多个工具集,涵盖 MPS 项目的方方面面:

  • 项目、模块和模型 — 使智能体能够枚举解决方案、语言和 Devkit;打开和创建模型;以及解析依赖关系。
  • 语言和概念 — 使智能体能够检查概念层次结构、属性、子级、引用和继承,以及根据 JSON 蓝图实现结构概念。
  • 根节点和节点 — 允许智能体通过遵循概念约束、具有节点感知能力的操作(而非文本级编辑)来读取、创建、更新、移动和删除节点。
  • 引用和作用域 — 使智能体能够查询可为某个引用链接指定的目标,从而让智能体在第一次就能选中有效的引用对象。
  • 运行配置 — 使智能体能够列出并执行项目运行配置,以便对更改进行端到端验证。

为确保智能体能够尽快高效工作,该工具包还捆绑了一套技能 — 即随工具提供的有侧重点且具备模型感知能力的操作手册。 这些技能会教授智能体如何组织 MPS 语言、如何实现结构概念、如何使用编辑器、如何将 BaseLanguage 作为 JSON AST 进行编写,以及如何为未来的会话记录 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 仓库构建并发布自有的 kotlinx-metadata-klib / kotlin-metadata-jvm 工件,并使用匹配的 2.3.0 标记,恢复了对基于 KLib 的 Kotlin 存根的支持 – 上一个公开 kotlinx-metadata-klib:0.0.6 无法再提供该支持。

能够对照特定的自然语言检查 ICheckedNamePolicy

MPS 现在使用通过 Grazie 提供的 IntelliJ 平台自然语言支持。 这意味着您可以检查 ICheckedNamePolicy 实例(如意图、操作或工具)中的字符串值是否按照特定自然语言的规则采用了正确的大小写形式。

您现在可以将首选语言的自然语言支持安装到 MPS 中,IDE 会检测字符串中使用的语言,并验证每个单词是否采用了正确的大小写形式。 您也可以绕过语言检测机制,明确指定所需语言。

除了默认的标题大写大小写规则外,MPS 还提供了另外三种选项:

  • 句首大写,遵循 IntelliJ 平台的规则
  • 继承,使用最近的上级 ICheckedNamePolicy 的大小写规则
  • No capitalization rules(无大小写规则)

能够将二元运算拆分为多行

在编辑器中,现在可以拆分包含二元操作的长行。 借助专用的意图操作,您可以在给定 BinaryOperation 的单行布局和多行布局之间切换。

新布尔编辑器样式:read-only-inspector

新的 read-only-inspector 样式会将只读属性应用于检查器中的所有编辑器单元。 当此样式应用于主编辑器中的某个单元时,如果选择采用此样式的单元,则被检查节点的检查器将变为只读状态。 新样式具有以下属性:

  • 默认情况下处于禁用状态。
  • 该样式与 read-only 样式一样,可继承且可重写。
  • 对主编辑器单元没有影响。
  • 通过此机制设置的 read-only 样式可以在检查器编辑器单元树中更下游的任意单元中被重写。

Build Language 中的传递依赖项

Build Language 不再要求在依赖项中列出每一个可传递访问的构建脚本。 这意味着,依赖于 BuildB 的构建脚本 BuildA 现在可以通过 BuildB 访问 BuildC(前提是 BuildB 依赖于 BuildC),而无需明确列出 BuildC。 生成器会为此类情况输出 ${artifacts.BuildC} Ant 属性,这些属性可以通过外部构建工具(Gradle、Maven 等)提供。

这样一来,您便可将大型构建拆分为多个小型构建,而无需强制每个用户都更新依赖项列表。 例如,单个 platform 构建脚本可以封装一组跨子项目使用、不断增长的外部库。

通过记录的依赖项实现更可靠的迁移

迁移代码之前是根据迁移时收集的实际模块依赖项和所用语言来决定应用哪些迁移,但它会从模块描述符中记录的依赖项快照中读取版本信息。 这种不匹配可能导致迁移所使用的模块状态与模块最后一次修改时的状态不一致。

在 2026.1 版本中,迁移机制会一致地使用模块描述符中在最后一次修改时所记录的依赖项与所用语言,而不是当前可观察到的状态。 迁移检查器也相应地进行了重构。 它现在重用已为迁移过程收集的信息,而不是按需重新计算。

改进了 Java 存根

对一批长期存在的 Java 存根 bug 进行了修正,显著提高了为导入的 .jar 文件和 Java Sources 模型根生成的 BaseLanguage 存根的准确性:

  • MPS-33174(自 2021 年起开放)— 具有 InnerClasses 特性的类现在可以正确转换为 BaseLanguage 存根。 签名的内部类信息和形参化所有者类型得以保留,因此泛型外部类的内部类的字段和方法现在会显示正确的类型,而非收起为外部类。
  • MPS-39375 – 对于内部类泛型方法中的类型变量,引用外部类类型变量的方法不再显示 java.lang.Object 来替代实际的类型变量。
  • MPS-39007 – 虚假的 Java imports annotation is present(存在 Java import 注解)错误不会再出现在 Java 源存根模型的每个根上。
  • MPS-39565 – 对包含容器模块的属性进行更改时,Java 源存根的根不再消失,因此,当模块属性更改后,项目代码对这些根的引用仍保持有效。

现代化的项目生命周期

随着 MPSProject 从旧版 IntelliJ IDEA ProjectComponent 迁移到项目服务,具有 MPS 感知能力的功能需要通过一种可靠的方式来获知 MPSProject 何时可用、何时销毁。

此版本引入了专用的机制来管理 MPSProject 的启动和关闭活动,使 MPS 能够控制这些活动的定序、分组、排序和线程调度。 这是平台的 ProjectActivityMPSProjectActivity 无法提供的。

运作方式:实现者通过 ProjectLifecycleListener.Bean(包含 listenerClass 和可选的整型 priority)向 jetbrains.mps.project.lifecycleListener 扩展点(在 MPSCore.xml 中声明)注册。 MPSProject 内部的 LifecycleEventDispatch.java 可以触发:

  • projectReady(非阻塞)
  • projectDiscarded(阻塞)
  • asyncProjectClosed(非阻塞)

默认使用 Wayland

现在,MPS 在支持的 Linux 系统上将 Wayland 作为默认显示协议。 在支持 Wayland 的环境中运行时,MPS 会自动切换到原生 Wayland 后端,而非依赖 X11 兼容性层,从而与现代 Linux 桌面端标准保持一致。

这一转变改善了与系统的整体集成,在各个 Wayland 合成器中提供了更好的稳定性、为输入法和拖放操作提供适当支持,并且可以达到更加一致的渲染效果 — 尤其是在 HiDPI 和分数缩放设置下。 虽然用户体验大致保持不变,但由于 Wayland 的架构差异,用户可能会留意到某些差异(例如窗口位置或装饰)。

大量 bug 修正

MPS 2026.1 包含大量 bug 修正。 有关已解决问题的完整列表,请参阅此处

平台更新

UI 更新

在 JetBrains MPS 2026.1 中,我们一如既往地将极致舒适和符合人体工学的 UI 作为优先事项,确保您的工作空间像您的代码一样易于访问和可定制。

Linux 用户期盼已久的将 IDE 主题与操作系统同步功能现已上线,从而可与 macOS 和 Windows 保持一致。 在 Settings | Appearance & Behavior | Appearance(设置 | 外观与行为 | 外观)中启用此功能。

依赖键盘操作的 Windows 用户现在可以通过Alt将 IDE 主菜单置于焦点。 这一更改提升了屏幕阅读器用户的无障碍体验。

版本控制更新

我们持续做出微小但有影响力的改进,以减少摩擦并支持您的日常工作流。

您现在可以直接通过 Commit(提交)工具窗口修改任何最近的提交 — 无需再执行涉及交互式变基的繁琐操作。 只需选择目标提交和必要的更改,然后确认即可 – 剩下的交给 IDE 来处理。

除了 Git 工作树之外,我们还引入了用于拉取所有远程更改的 Checkout & Update(签出并更新)操作,以改进分支工作流。

此外,现在可以自动获取更改 — 无需安装单独的插件。 在 Settings | Git(设置 | Git)中启用 Fetch remote changes automatically(自动获取远程更改)即可。

终端更新

  • 不再死记硬背命令。 改为发现命令。 在终端内补全的帮助下,您输入时即可立即探索可用的子命令和形参。 无论您使用的是 Git、Docker 或 kubectl 这类复杂的 CLI 工具,还是自定义脚本,此功能都能实时、智能地提供有效的选项建议。

    此功能先前已针对 Bash 和 Zsh shell 推出,现在可以在 PowerShell 中使用。

  • 我们修正了 Esc 行为 — 现在它由 Shell 处理,而不是将焦点切换到编辑器,因此不会打断 AI 智能体的工作流。 此外,Shift+Enter 现在可以插入新行,从而更方便地直接编写多行提示和命令。 可以在 Settings | Advanced Settings | Terminal(设置 | 高级设置 | 终端)中禁用此行为。

迁移指南

对于每一个主要版本,我们都会准备从旧版本 MPS 迁移的说明,以确保一切顺利。 请仔细阅读更新的迁移指南