17611538698
webmaster@21cto.com

VS Code一秒生成80%代码?鹅厂人真实感受

人工智能 0 1781 2023-08-12 08:07:33
GitHub Copilot 发布不过两年,已助力逾百万开发者创造超过46%的代码量,更将编码速度提升了高达55%。

而近期,VScode发布1.80版本,这次重磅更新直接引入GitHub Copilot新功能—— Copilot ChatAI聊天助手来袭!

是鸡肋还是生产力?

在答案揭晓之前,如果你想体验最新版本、下载 VSCode 插件,可访问:https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat

安装之后,会发现侧边栏多了一个聊天的入口,在关联到 Github 账号就可以使用了(账号需要 waitlist 通过)

图片


图片



图片


Copilot Chat 主要提供了一个可交互式的界面。

在帮助文档中我们可以看到,它支持以下几种能力:

▶︎ 解释一行代码、整个文件或库 API 的作用。

▶︎ 找出问题,甚至修复它们。

▶︎ 重写代码以使其更易读或更快。

▶︎ 编写新的测试和组件。

▶︎ 提问关于 VS Code 的问题。

▶︎ 提问一般编程问题。

▶︎ ……

当然还有以 / 开头的命令:

▶︎ /tests - 为选择的代码生成单元测试

▶︎ /fix - 为选择的代码问题提供修复建议

▶︎ /explain - 解释选择的代码的工作原理

▶︎ /ext - 关于 VS Code 扩展程序开发的问题

▶︎ /vscode - 关于 VS Code 的问题

▶︎ /help - 关于 GitHub Copilot 的一般帮助

▶︎ /createWorkspace - 创建一个项目



图片



图片


如同 GPT 一样,我们可以针对代码中不太理解的地方直接进行提问,选中文本后,输入 /explain 指令加上想问的内容就好。(这里默认返回英文,如果用中文提问也可以得到中文的回答)


在这里我们选择了一个非常复杂的正则来进行测试,可以看到模型理解还是很不错的,能够解释的非常细致,针对场景我们还可以追问,让 AI 来充当你的老师。


图片


图片


在本次测试中,我故意改错了一个变量(不过保证语法是正常的,只是逻辑错误),Copilot 能够直接发现这个改动的问题,并给出了修复后的代码。请各位看图。

对于这种独立小函数,Copilot 的纠错能力还是不错的。


图片


图片


可以让 Copilot 帮忙为函数生成测试用例,然后跑一下验证用例的准确性。


在这个 case 中,Copilot 总共帮忙生成了6个用例,其中5个通过,1个不通过。仔细看了下,这个用例的期望输出有一些问题,可见模型生成的用例的准确性还是有一些问题的。


不过从完备性来看,Copilot 生成的测试用例还是给了我们不少启发,在编写测试用例这一块有极大的借鉴和提效。


当然,我们还可以借助 Copilot 来进行完成代码重构、写一个新组件等任务。相信大家日常中也有可能用到的探索场景,都可以用 Copilot 来尝试,我们就不再赘述。


图片


1.8版本推出了一个有意思的小功能,支持了 /createWorkspace 命令,这个命令可以帮助我们快速创建一个新的项目:

图片


不过当我真正跑起来的时候,发现还是有不少问题:

图片


可以看到 Copilot 生成的项目所用的 vue-cli-service 已经过时了,并且少了一些 babel 和 webpack 的配置。这一部分应该还是受限于当前 AI 的训练语料时间,一般来说很容易与当前最新的资料脱轨,这个功能也许需要联网能力才可以更好地进行使用。


图片


值得注意的是,这个插件还是有许多地方需改进。比如模型的边界——幻想问题。

图片


可以看到在问到一些比较困难的问题时,Copilot 会幻想出一些不存在的 API 来尝试解答。这样的情况在 GPT 中也会有发生,这也是目前大模型的一个局限,会进行一些不基于事实的捏造与幻想。我们在使用 AI 的过程中,需要仔细辨别它的正确性。


虽有局限性,但是总的来说我个人认为 Copilot Chat 还是一款非常有用的工具,我们已经能够看到 ta 在很多场景为我们提供协助,比如我个人常用的两个场景:


▶︎ 代码理解:经常寻求 AI 帮助理解复杂的代码逻辑,尤其是在读源码时非常有帮助。

▶︎ 代码补全:写代码时提效帮助很大,也可以在编写代码时与 Copilot 进行结对编程,提升自己的代码质量。


相信随着模型的不断更新和完善,Copilot Chat 会越来越好用,期待拥抱未来编程新时代。


评论