JetBrains Toolbox 浏览器扩展现在可在自托管的 GitHub、GitLab 和 Bitbucket 实例上运行
我们已更新适用于 Chrome 和 Firefox 的 JetBrains Toolbox 浏览器扩展。它现在可以从 JetBrains IDE 中的私有实例克隆和打开文件,无论您使用的是 GitHub Enterprise 上的企业存储库还是自托管的 GitLab 或 Bitbucket 实例。
请记住,要开始将此扩展与私有实例一起使用,您首先需要在自定义域上启用它。请按照以下步骤操作:
现在,Toolbox 扩展应该可以在您的自托管实例上运行,使您可以访问以前可用于开源存储库托管服务的功能:
从主 GitHub、GitLab 和 Bitbucket 存储库克隆项目,并在可用的 JetBrains IDE 中打开它们。
从之前克隆的 GitHub 项目中突出显示的代码行导航到 IDE 中的该行。
JetBrains IDE 中的全行代码补全:您需要了解的一切
使用 AI 进行编程仍然是一个极具争议的话题,但不可否认的是,越来越多的开发人员开始将 AI 纳入他们的日常工作流程。无论您已经在辩论中选边站还是仍未做出决定,JetBrains IDE v2024.1 中的一项新功能可能会激起您的兴趣 – 全行代码完成。它由AI 驱动,可在本地运行,无需通过互联网发送任何数据。
在这篇博文中,我们将详细介绍什么是全行代码完成、它如何工作、支持哪些语言以及如何向我们提供有关它的反馈。
JetBrains IDE 中的全行代码完成是什么?
这种新型代码补全功能已添加到最新的 2024.1 更新中的 JetBrains IDE 中。如下所示,它采用灰色调的单行建议形式,可根据当前文件的上下文补全行:
这些建议由我们专门针对不同语言和框架训练的专用语言模型提供支持。这些模型在本地运行,无需通过互联网发送任何代码。
目前,在相应的 JetBrains IDE 中,Java、Kotlin、Python、JavaScript、TypeScript、CSS、PHP、Go和Ruby均可使用全行代码补全功能:IntelliJ IDEA Ultimate、PyCharm Professional、WebStorm、PhpStorm、GoLand 和 RubyMine。在接下来的几个月中,我们计划将功能扩展到 C#、Rust 和 C++,因此它也将出现在 Rider、RustRover 和 CLion 中。
请注意,全行代码补全包含在您的有效 JetBrains IDE 订阅中,无需额外付费 – 只需确保您使用的是 v2024.1 或更高版本。如果您尚未订阅,您也可以在 30 天免费试用期间使用此功能。
全线补全是如何工作的?
对于全行代码补全,我们有两个主要目标。第一个目标很明显——帮助您节省时间并提高编码速度。但除此之外,我们还希望提供一种解决方案,以解决某些组织在使用连接到云的 AI 解决方案时遇到的限制。
以下是全行代码完成如何帮助实现这两个目标的细分:
它在本地运行,并可离线使用。这意味着即使您没有连接到互联网,也可以利用该功能。
它不会通过互联网从您的机器发送任何数据。支持全行代码完成的语言模型在本地运行,这有两个好处。首先,您的代码保持安全,因为它永远不会离开您的机器。其次,没有额外的云相关费用——这就是为什么此功能无需额外费用。
它与 JetBrains IDE 深度集成。所有建议都将经过适当格式化,IDE 会检查括号和引号是否匹配。此外,我们利用静态分析的强大功能和对代码的理解来过滤掉错误的建议。每种受支持的语言都有自己的一组建议代码正确性检查。大多数语言都实现了最基本的检查,例如未解析的引用检查,以确保 IDE 不会建议不存在的变量和方法。还支持自动导入功能。
它旨在让您的工作流程尽可能顺畅。我们使用智能过滤来避免显示那些容易被明确取消或添加后立即删除的建议。
有关其他技术细节,请参阅下面的部分。
全行代码完成与AI助手
您可以通过两种方式从 JetBrains IDE 中的 AI 功能中受益 – 全行代码完成和JetBrains AI Assistant。我们明白这可能会造成混淆,所以让我们仔细看看它们的共同点和不同之处。
全行代码补全和 JetBrains AI Assistant 都旨在帮助您提高工作效率。它们都超越了 JetBrains IDE 中已经提供的标准补全功能。然而,JetBrains AI Assistant 提供了更全面的功能集,包括上下文感知智能聊天以及生成测试或编写文档的能力。
请参阅下表来比较这两种 AI 功能:
请放心,我们绝不会用客户的代码来训练我们的任何 AI 功能。如果您的公司有严格的数据隐私规定,但您仍想用 AI 加快工作流程,那么全行代码补全可能是您的更好选择。
内部原理
全行代码补全的核心是特定于编程语言的语言模型,该模型使用具有宽松许可证的开源代码数据集进行内部训练。语言模型的输入是插入符号之前的代码,但对于某些语言,我们还会添加来自相关文件的内容。输出是模型建议的当前行的延续,以灰色显示。
语言模型的推理在您的本地机器上运行。为了确保最高效的生成,模型推理在单独的进程中运行,并针对目标机器的架构进行了大量优化。例如,如果您使用的是 x86-64 架构,则模型将在 CPU 上运行,而如果您使用的是 ARM64 架构,则模型将使用计算机 GPU 的功能。
生成建议后,会应用一系列后处理步骤。首先,我们会检查此建议在语法和语义上是否正确,然后执行智能过滤、格式化、括号平衡和各种其他操作。后处理对于用户体验至关重要,因此我们会尽力仅显示不会干扰您工作流程的有价值的建议。
最后,您可能还想知道为什么我们决定采用单行建议。AI 完成建议的长度是一种权衡。虽然较长的建议确实会减少您必须进行的击键次数,这是好事,但它们也会增加您需要进行的审核次数。考虑到上述情况,我们认为完成一行代码将是一个公平的折衷方案。
这一决定使我们能够减小模型的大小,而不会显著降低建议质量。在 JetBrains IDE 的 2024.1 版本中,我们使用了一个具有 1 亿个参数的语言模型,其最大上下文大小为 1,536 个标记,大约是 170 行代码。
如何调整功能
您可以在“设置”|“编辑器”|“常规”|“代码完成”中配置全行代码完成- 所有设置都可以在那里的“机器学习辅助完成”部分下找到:
如果您想关闭该功能,可以取消勾选“启用全行建议”复选框。或者,您可以禁用支持此功能的插件。为此,请转到“设置”|“插件”,切换到“已安装”选项卡,然后查找“全行代码完成”。
如何提供反馈
全行代码补全仍在积极开发中,因此我们鼓励您与我们分享您的反馈。您可以通过在本博客文章下发表评论来分享您的反馈。您还可以在此处对现有问题点赞,或者通过登录并单击右上角的新问题按钮来创建新问题。
10万+粉丝交流 了解更多软件工具技术知识请
关注微信公众号:计算机程序吧