Copilot使用体验
本篇是去年使用Copilot的记录,不代表目前水平,仅做个人记录同步,谨慎参考。
GitHub Copilot的订阅计划
https://docs.github.com/en/copilot/about-github-copilot/subscription-plans-for-github-copilot
个人版提供30天的免费试用。个人版每月10 美元或每年 100 美元。
Copilot操作文档
https://docs.github.com/en/copilot/quickstart
目前支持JetBrains IDEs,Vim/Neovim,Visual Studio,Visual Studio Code,Xcode。安装插件,登录Github账号就可以使用了,需要开代理。
基本操作
- 获取代码建议,输入代码时会自动触发,使用“Tab”键采纳。
- 切换建议,macOS使用“Option+]”或“Option+[”,windows使用“Alt+]” 或 “Alt+[”切换下一条,上一条。
- 聊天模式,可以引用文件,生成测试代码,解释代码,修复问题。
基本操作,支持功能和同类型工具都大差不差,主要关注实际提示代码质量。
其他设置
- 启用或禁用公共代码匹配的建议,如果选择允许匹配公共代码的建议,当Copilot建议匹配代码时,可以显示匹配的详细信息,并点击到GitHub上的相关存储库。
- 访问Bing,Copilot将使用Bing在互联网上搜索与问题相关的信息。在讨论新技术或特定的主题时,Bing搜索尤其有用。
Copilot优缺点
优点
- 提示速度快,支持语言丰富。
- 偏向提示多行代码块,方便快捷。
- 相对其他同类型工具提示更精准。
- 会根据项目代码不断优化提示,做到更贴近所想。
缺点
- 需要使用代理,没有国内的工具访问方便。
- Copilot 是使用大量代码训练的,但它的范围仍然有限。 它可能无法处理一些复杂的代码结构或模糊的编程语言。
- Copilot 并不是没有错误的。可能会生成看起来有效但实际无效的代码。 为了降低代码不准确的风险,需要仔细查看和测试生成的代码。
- 由于上下文的限制,copilot不能全局考虑问题,更多的是解决局部的问题。会存在方法未复用的情况。
辅助编程相关场景举例说明
一般有三大类:
- 代码-代码:包含代码补全、代码修复
- 代码-文本:代码解释、代码优化、代码异常排查
- 文本-代码:通过提示词 Prompt 做代码生成 (单元测试等)
支持语言
常用语言都支持(Java,python,JavaScript,Go,C, Kotlin等),亲测Flutter的Dart语言也可以很好的支持。
代码补全
场景:数据上报点击删除按钮时,pageinfo传入课程id(多个课程id用逗号分隔)
操作:当我输入到map方法做转换时,Copilot猜到我的意图,给出了下面的提示。

提示和预期完全一致,比较惊喜的地方在于,下载对象中属性字段很多,并且有“id”这个字段作为相似项干扰。
在我没有告知Copilot我的需求情况下,最终可以准确提示,还是很智能的。
代码修复
下面这段代码在实际运行中会报错崩溃,我们根据报错行数找到这段问题代码:
val goal = "${list[0].option.filter { it.selected }[0]?.id ?: 1}"
// java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
选中这行问题代码,输入“/fix”修复这个问题。

可以看到copilot解释了问题的原因,并给出了解决方案。
代码生成
可以通过写注释的方式,让Copilot帮我们生成相关代码。Copilot会根据上下文,给到合理的代码。

