Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

IntelliJ IDEA 五大 AI 功能解析

#intellij idea#jetbrains#ai 辅助开发#代码生成#开发工具

当开发者听到“IDE 中的 AI”时,首先想到的往往是聊天窗口。IntelliJ IDEA 确实包含 AI 聊天,但 JetBrains 的 AI 功能还出现在开发流程的许多其他环节。

有些功能很容易被忽略,因为它们内嵌在已有的 IDE 操作中:编辑代码、就地生成代码、解释选中代码、处理堆栈跟踪、编写提交信息,以及选择由哪个模型或代理来处理任务。这篇概览重点介绍 IntelliJ IDEA 中值得了解的五个 AI 功能,并在末尾补充一些额外能力。列表从一项甚至在打开聊天之前就能帮上忙的功能开始。

1. AI 补全

你修改一行代码,IDE 就会指出下一处需要同步修改的位置。重命名一个字段,它会一步步带你到所有引用该字段的地方。按 Tab 跳转到相应位置,再按 Tab 接受编辑。普通补全只猜测光标正下方应该出现什么,而这种补全看得更远一步——指向你尚未做出的下一个编辑。

它运行在 JetBrains 自有的、针对编码调优的模型上,并且不会打扰你。修好参数列表中一个逗号后的空格,它会主动把文件中其他所有逗号后的空格一并修正。在更大的尺度上,完整方法生成也在这一层完成——编辑器已经掌握足够的局部信息来填充方法体,而不必把任务交给聊天会话。

这个功能在小改动中最容易理解。修改一行代码,IntelliJ IDEA 就会建议文件中下一个相关的修改。

[LOADING...]

2. 编辑器内代码生成

在文件的任意位置按 Ctrl+\,用自然语言输入你的需求,例如“把这个循环改成 stream”或“为这个类生成一个 builder”,代码就会立刻出现在光标处。代码直接落在当前位置,你完全不必切换到聊天窗口,再从对话里把答案复制回来。

对于小型、边界清晰的需求,它的便利之处在于:提示就从编辑发生的位置开始。你在编辑器里输入指令,就地审阅生成的代码,然后继续干活。

[LOADING...]

生成的代码会以编辑器内 diff 的形式呈现,你可以接受、拒绝,或优化提示。如果第一版漏掉了某个约束,就补充更多上下文,比如“保留方法名”或“用 Optional 而不是 null”。IntelliJ IDEA 会利用额外信息重新生成代码,并在同一位置显示新的 diff。

[LOADING...]

它是这份列表里隐藏的宝石——一个通用的提示入口,你可以在光标位置调用它来完成小型、任意的编辑,而无需打开 AI 聊天或把代码复制回文件。

3. AI 操作(AI Actions)

AI Actions 是专为那些永远不想和我们的模型对话的人准备的菜单。选中一段代码,按 Alt+Enter,然后从各种实用操作中选择——完全不需要聊天。

解释代码(Explain Code) 会读取你没写过的正则表达式、别人留给你的 SQL 查询或 cron 表达式,并用通俗易懂的语言告诉你它做了什么。生成单元测试(Generate Unit Tests) 会在 diff 中打开测试,让你在测试进入项目之前先斟酌一番。生成文档(Generate Documentation) 会为公共方法编写 doc 注释。这些操作让你始终留在文件里。指向选好的代码,挑一个操作,立即得到可执行的响应。

[LOADING...]

4. 自带代理(Bring Your Own Agent)

某些情况下,任务不再只是单个编辑器操作。它需要文件修改、测试,以及一个可供审阅的 diff。通过 Agent Client Protocol(ACP),你可以连接一个外部编码代理,并在你已经用来检查文件、diff、测试和问题的同一个位置驱动它。可以把 ACP 理解为代理界的 LSP:统一协议,IDE 不需要为下个月出现的每个新代理都做定制集成。JetBrains 自家的代理 Junie 与第三方代理出现在同一个注册表中,并不会有特殊待遇。

[LOADING...]

让代理修改一个端点。它会提出步骤,编辑服务和测试,运行测试命令,并留下一个 diff 供你在接受任何改动之前从聊天中打开。这就是故事中的 IDE 部分。代理可以行动,但审阅仍然发生在你原本审阅代码的地方。

与之并排的是技能(Skills)。技能是一种可复用的能力,你只需设置一次:比如对 CI 失败进行分类、处理 PR 评论、把 Java 转换成 Kotlin,或者引导代理避开常见的 Spring Data JPA 分页错误。你可以从聊天中的 + 菜单添加技能,支持的代理可以直接使用它们,不必每次都重新输入一长串指令。

[LOADING...]

这正是 IDE 体现价值的地方。代理可以连续进行多次编辑,但你可以在每次编辑出现时逐一检查——打开受影响的文件、查看测试输出、在接受前审阅 diff。聊天、代码和审阅都保持在同一个窗口中,让你更容易保持掌控,同时让代理处理机械性工作。

[LOADING...]

5. 自带密钥(Bring Your Own Key)

代理进入 IDE 之后,下一个决策就更加直接了——你的组织允许 IDE 调用哪家提供商。自带密钥(BYOK)让你可以为团队已经在使用的任何提供商添加 API 密钥或端点。

配置好的密钥可以用于 AI 聊天以及选定的 IDE 功能(如提交信息生成),具体取决于提供商和模型所支持的功能。对某些团队来说,能够使用已经通过内部审核的提供商,比支持当前模型排行榜榜首的提供商更重要。

你可以在 设置 | 工具 | AI Assistant | 提供商和 API 密钥 中配置密钥。在 第三方 AI 提供商 下选择一家提供商,输入密钥或端点,然后测试连接。连接成功后,该提供商的模型就会出现在 AI 聊天中的模型选择器里。

[LOADING...]

五个功能之外

除了上述五个重点功能,还有几个较小的能力也值得了解,因为它们出现在 IDE 已经具备上下文的场景中。

当堆栈跟踪已经在控制台里

运行控制台是乐观心态接受现实检验的地方。当应用抛出错误、堆栈跟踪出现在控制台时,Explain with AI 操作就在手边。IDE 会读取堆栈跟踪,然后给出可能的原因和修复建议。这比把第一行错误粘贴到搜索引擎、再打开三个 2017 年的标签页,更能用好这三十秒。

[LOADING...]

当暂存区的 diff 需要一句话

生成提交信息(Generate Commit Message) 会读取你的暂存区 diff,并为你写出提交信息。编辑、提交,然后继续。这是一个小功能,但一旦你知道它存在,就会不断使用。

[LOADING...]

你可能错过的那部分

AI 聊天 窗口依然还在,并且因为代理和技能而变得更有趣。容易被忽略的是它周围那层由 AI 驱动的生产力功能:输入时建议的编辑、光标处生成的代码、对选中代码和堆栈跟踪的解释,以及根据暂存区 diff 生成的提交信息。

最终效果是那种最好的“平淡”:IntelliJ IDEA 比过去多做了一点,却没有任何兴师动众的仪式感。

如果你一年前试用过 AI Assistant,却主要记得聊天窗口,那么这部分可能正是你错过的。