碎碎念

最近阿里发来几条短信,说通义灵码发布了,让我体验一下,作为懒狗的我,当然希望有这一个编程助手帮忙啦,所以我赶紧就下载了一个,用了几天后体验还不错,于是水了这一篇文章来推荐一下。

呐!短信!

设备要求及支持范围

支持 Java、Python、Go、C#、C/C++、JavaScript、TypeScript、PHP、Ruby、Rust、Scala、Kotlin 等主流编程语言。

  • JetBrains IDEs
    • IDE 版本:IntelliJ IDEA、PyCharm、GoLand、WebStorm 等 2020.3 及以上
    • 操作系统:Windows 7 及以上、macOS、Linux
  • Visual Studio Code
    • IDE 版本:1.70.x 及以上
    • 操作系统:Windows 7 及以上、macOS、Linux
  • 远程开发场景:
    • Remote SSH、Docker、WSL
    • VS Code 的 WebIDE,并支持 Open VSX 插件市场中下载和使用

安装

通义灵码的安装非常简单,直接在编译器中寻找插件: tongyilingma即可,通义灵码支持很多的主流IDEA,基本上覆盖了大部分人的需求,这里我们使用的是vscode进行演示。

支持的编辑器

我们可以直接在vscode的插件中找到他,注意在下载后还需要登录阿里云账号方可使用:

VSC下载插件

安装完成后,我们就可以在VSC右下角看见通义灵码的图标了。

功能

在官网中,主要写了六种八种功能,下面我们都简要介绍一下:

行/函数级实时续写

根据当前语法和跨文件的代码上下文,实时生成行、函数建议代码。

行/函数级实时续写

在我测试的过程中,确实这个功能可以通过上下文进行联想输出代码,但是有的时候会出现重复的情况,比如我想实现一个自助添加友链按钮的按钮,点击后弹出一个窗口,填写相关信息后自动输入格式化信息到评论区,但是在按钮上下反转的时候出现了重复:

key-press和key-down一直在循环

不过我在使用copilot的时候也出现过这个问题,所以这些工具虽然可以简化代码编写的过程,但是仍然需要作者有一定的基础去辨别这些代码的问题,并及时调整,防止代码出现这种情况。

自然语言生成代码及单元测试生成

通过自然语言描述你想要的功能,可直接在编辑器区生成代码,编码心流不间断,支持根据 JUnit、Mockito、Spring Test、unit test、pytest 等框架生成单元测试。

自然语言生成代码及单元测试生成

这部分进行的不太顺利,因为生成代码还是有点问题,我想让他使用python生成SHA1签名的函数并测试,但是报错了,不过基本的功能还是没有问题的,这串代码的问题应该是他定义的期望输出并不是Hello world!的SHA1编码,我想让他找出来这个问题,但是他一直纠结于函数库版本的问题,当然功能是已经实现了的。

生成SHA1时遇到的问题

代码优化

深度分析代码及其上下文,迅速识别潜在的编码问题,从简单的语法错误到复杂的性能瓶颈,均能够指出问题所在,并提供具体的优化建议代码。

代码优化

我尝试让他对于上面的代码进行优化,优化后的代码明显条例更加清晰,并且找到了我在上面留下的打印时内容和标注文字不符的问题:

优化结果

输出的内容如下:

1
2
3
4
5
6
7
* 您提供的代码实现了一个简单的 SHA1 签名生成函数以及一个测试函数。整体来看,代码结构清晰、逻辑明确。不过,根据您的请求,我可以提出一些微小的优化建议以提高代码的可读性和一致性:

1. 修正打印语句: 在测试函数中,您误将 actual_signature 打印为“Expected SHA1 signature”。将其更正为“Actual SHA1 signature”,以避免混淆。

2. 使用 f-string 进行字符串格式化: 将原始的 print 语句改用 Python 的 f-string(格式化字符串字面值)进行输出,可以提高代码的可读性。同时,将断言失败时的错误消息也改为使用 f-string。

3. 为函数添加文档字符串(docstring): 为 generate_sha1_signature 和 test_generate_sha1_signature 函数添加文档字符串,便于他人阅读和理解函数的功能、参数及返回值。

代码注释生成和代码解释

一键生成方法注释及行间注释,节省你写代码注释的时间,并能够有效提升代码可读性,覆盖各种编程语言,选中代码后可自动识别编程语言并生成代码解释。跨越语言的边界,让你阅读代码更高效。

代码注释生成和代码解释

这部分就不需要说了,上面的例子已经表示的很详细了,他的代码注释成成非常完善,可以很快地解释出代码的相关含义,并放到注释中,让代码有更高的可读性。

左边评论框

遇到编码疑问、技术难题时,一键唤起通义灵码,无需离开 IDE 客户端,即可快速获得答案和解决思路。聚焦研发领域知识的问答,帮助开发者快速解决问题,当运行出现异常报错时,一键启动报错排查的智能答疑,可结合运行代码、异常堆栈等报错上下文,快速给出排查思路或修复建议代码。

自由问答

在通义灵码的附带功能中,我最常用的就是左边的评论框了,它可以向chatGPT一样轻松回答你的问题,只需要你描述出需求,他就会生成代码,并且在代码框的右上角会有一个插入的按钮,可以方便的将代码插入到对应的位置。

评论区

双模引擎切换

通义灵码还支持极速离线模型(Java/Python)、云端大模型两种代码补全方式,极速离线模型拥有单行补全的能力,云端大模型具备函数生成的能力。在你需要的时候,可一键切换,满足不同网络环境、不同补全强度的场景诉求,也就是说当你离线进行编译时,仍然具有基本的代码补全能力,这一点是copilot没有的。

感受

在这之前,之前我使用过教育版copilot,他的功能确实很强大,比如上方出现的问题SHA1不匹配问题:

copilot的结果

他可以轻松找到对应的问题,并给出解决方法(虽然链接打不开QAQ),并且可以在代码的区域选中,并ctrl+i快速进行询问,在我测试通义灵码的过程中并没有看到这个功能,如果有请告诉我。

不过她们两个都有一个缺点,不能选中输出部分的内容并直接询问,需要手动复制到聊天框中,希望在后续的迭代可以加上这个功能,毕竟输出才是调试代码组重要的部分。

虽然通义灵码略逊于copilot,但是并不影响他对于程序员带来的帮助,相反他对于我们可能帮助更大一些。由于众所周知的原因,copilot在国内体验并不佳,所以通义灵码可以基本替代copilot的功能,填补空缺,帮助程序员完成一些很简单但是内容很繁杂的工作。并且copilot的价格可不便宜,一个月需要大概67元,如果不是学生的话不能享受免费服务,一般程序员可能不会花钱的。而通义灵码拥有离线引擎,这意味着可能会永久免费,因为基本功能不需要联网。

copilot价格

总体来说,我十分推荐大家尝试一下通义灵码,通义灵码作为阿里旗下的ai大模型,在很多方面表现都很出色,除此之外还有通义千问等AI对话模型,我坚信阿里一定会走得更远,一定会做的越来越好,让我们一起期待!

参考链接

最后放松一下

小草发芽啦!

— 柳影曳曳,清酒孤灯,扬笔撒墨,心境如霜