跳至主要內容

GitHub Copilot的最佳免费平替

程序猿DD原创IntelliJ IDEAIntelliJ IDEA大约 8 分钟

在如今这个人工智能高速发展的时代,每个行业都在被AI技术影响而改变。层出不穷的AI辅助工具,让我们看到了机器正在取代一部分基础的日常工作。对于我们开发者而言,当前最炙手可热的就是GitHub Copilot,市面上最好的开发者辅助工具。GitHub Copilot所提供的代码补全、建议、解释等能力非常强大,可以有效地提高编程速度。但是,GitHub Copilot是基于OpenAI所构建,后者的成本并不小,所以GitHub Copilot成为一款付费工具是非常自然的。

那么,对于预算有限的开发者而言,是否有合适的免费平替呢?答案是肯定的!今天,就给大家推荐最近我一直在用,且觉得还不错的插件:通义灵码open in new window。推荐的理由,我总结为以下几点:

  1. 极低的上手门槛
  2. 强大的代码补全和编码提示
  3. 快捷好用的智能问答

极低的上手门槛

一些众所周知的原因,相信体验过GitHub Copilot的开发者一定都是经过一番折腾才用上其强大能力的。这对于一些初学者用户来说门槛非常高,同时对于一些有审查要求的环境更是不可能使用。

与此相比,通义灵码的上手门槛极低:

  • 安装简单:用户只需要在JetBrains系IDE或VS Code的插件市场里搜索:TONGYI Lingma,就能完成一键安装

JetBrains系IDE安装

VS Code安装

  • 极易上手:无需配置,自动提示。插件在开发者编码过程中会自动根据上下文做出提示建议,如提示建议不错,直接按Tab采纳即可。如果需要手动唤出提示,也只需要通过快捷键+P快速弹出提示(Windows快捷键:Alt + P)。除了这两个最常用的操作之后,还有一些操作可参见下表:
macOSWindows
接受行间代码建议TabTab
废弃行间代码建议escesc
查看上一个行间推荐结果 [Alt [
查看下一个行间推荐结果 ]Alt ]
手动触发行间代码建议 PAlt P

强大的代码补全和编码提示

代码补全是开发者日常工作最高频的操作,虽然很多强大IDE工具都自带了代码补全的能力,但这也仅限于一些语法层面的简单补全,不包含联系编码上下文所推理出的,更有贴近用户编码意图的智能补全和提示。所以,这也是现在很多AI辅助工具吸引人的地方,它们可以提供更为出色的,甚至惊艳的补全效果。

那么通义灵码在代码补全方面,是否可以平替GitHub Copilot呢?这里DD根据很多博主介绍GitHub Copilot的场景来测试了一下,供大家参考:

行级补全

之前讲过,行级补全在大部分IDE中已经包含,但AI工具的行级补全更为强大,它的强大之处在于能够根据你的输入来推理逻辑补全。

比如:我要定义一个B站视频的URL,只要参数名中含有B站视频URL相关的描述,就会直接给出模版。这样的能力是完全不同于IDE所提供的行级补全的。

函数级补全

函数级补全是DD看到GitHub Copilot演示案例中最常见的强大能力,开发者只需要输入有含义的函数名称,具体的实现就自动提示了:

所以,必须在通义灵码中也尝试一下!

先尝试了一下简单的冒泡排序:

轻松完成!

再尝试一下稍微有点难度的快排算法:

似乎失败了?只给出了一些简单提示,并没能得到完整的逻辑。后面,DD又尝试了几次,最终获得了一个完整结果,具体如下:

所以,在函数级补全这个功能上,可能还存在一些差距,有待后续提高吧。

自然语言补全

自然语言补全的主要场景就是写注释,AI工具自动生成代码。

这里DD也找了个场景测试了一下。比如下面是Spring Boot中一个文件上传的后端处理逻辑,我尝试通过自然语言的方式来描述逻辑,通义灵码迅速补全了与注释相关的代码:

上下文感知能力

对于上下文的感知是AI工具的重要特色,也是这类工具时不时惊艳到我们的核心。

比如,下面这种场景,在我第一碰到时,还是有被AI的理解能力所吓到:

可以看到,当我要为这个Controller添加Swagger的API说明时,它居然理解了这个Controller内做的都是微信支付的操作,所以给出了tags="微信支付"的提示。

随着这段时间的使用,出现过很多惊艳到我的补全提示,比如当我要写一个操作FTP的API时,出现了这样一幕:

可以看到,在我创建了FtpController之后,通义灵码自动找到了同项目中的FtpService,并给出了依赖提示,这一操作非常符合预期。之后,通过换行操作,通义灵码又给出了进一步的提示,这步提示也非常神奇,因为它的内容已经不仅仅是对当前上下文的理解,而是结合上下文与依赖内容的理解,并给出了调用依赖内容的提示。

通过这段时间的实践,我认为通义灵码的感知能力已经非常不错,它可以很好的理解项目中的各个元素,并找到它们之间的关系,然后在开发者编码过程中给出一些可能需要的提示。同时,我也发现养成良好编码习惯的优势也在这里有所体现。因为在拥有良好项目结构和命名规范的工程下编码时,此类AI工具给出的提示就相当有水准,也许这样更有助于AI理解我们的工程吧。

快捷好用的智能问答

通义灵码插件在IDE中自带一个智能问答的窗口,具体位置和基本使用方法如下:

图中我还问了一个问题:让通义灵码帮我写一个文件操作类,它就给了我一个不错的代码封装和使用案例。如果你觉得不错的话,就可以通过回答右上方的按钮,以不同的方式添加到工程中:

图中按钮从左到右功能依次为:插入、复制、新建文件

是不是很棒呢?要知道GitHub的Chat可不是直接可以用的,相信还有不少小伙伴还在排队吧?

通义灵码的智能问答窗口除了处理基本问答之外,其实还有一些更有意思的功能,比如:解释代码和生成单元测试

上面我们体验了代码补全能力,但是它补全的内容到底对不对呢?必须赶紧验证一下,顺便再体验一下通义灵码的另外2个实用功能:

  • 解释代码
  • 生成单元测试

下面就来看看上面生成的能否经受住它自己的考验 ^_^

操作很简单,只需要选中上面生成的代码片段,点击鼠标右键,可以看到解释代码和生成单元测试:

先来试试解释代码,点击之后会在IDE右侧弹出问答框,具体如下:

没啥问题,通过第一关考验!

下面再尝试一下:生成单元测试。马上就获得了如下代码:

直接添加文件之后,运行起来。成功通过测试!上面自动补全的代码是正确的!

总结

最后,聊聊这段时间使用通义灵码的感受。其实,刚开始尝试的时候也是碰到一些问题,尤其对于关于AI辅助的补全能力,会有一些不太适应。可能补全能力与项目内容和自己日常的编码习惯有关,随着每天不断的使用,插件似乎在理解项目内容和我的习惯,并不断给出更让我满意的提示内容。所以,这个使用过程是越用越顺的。现在已经是我必不可少的效率神器了。

虽然,通义灵码总体能力上离GitHub Copilot还有一些差距,但大部分辅助编码能力已经非常接近GitHub Copilot。同时,它的生成速度很快,而且跟IDE适配很好,ide里直接chat也很爽,加之阿里通义千问模型的支持。在一众免费的AI编码辅助工具之中脱颖而出,可以说是GitHub Copilot的最佳平替了。

如果您正在寻找AI辅助编码工具,但又觉得GitHub Copilot上手折腾麻烦或者觉得太贵,那么建议免费尝试一下通义灵码,相信不会让你失望。另外,DD看到社区有其他开发者反馈初学者使用非常丝滑,尤其是对于Python。所以,如果你是初学者或者Pyhon开发,那么也推荐试试。

上次编辑于:
贡献者: 程序猿DD