github_copilot升级
1 引言
GitHub Copilot 的新版本发布已经有几个星期了,实际使用后才发现它确实非常出色,极大地提升了效率。
2 旧版的问题
旧版包含的一些常用功能有:聊天、编辑时代码自动生成、选中代码块的编辑和解释。
但有几个使用上的不便之处:
- 聊天功能位于左侧栏,但通常左侧栏不会设置得很宽,这导致文字多次换行,查看时需要上下滚动,比起网页版的聊天界面要逊色不少。
- 代码自动生成功能要求在生成函数前必须先写注释,完成后还需自行删除注释,这个过程显得有些繁琐。
- 当选中代码块并点击右键以解释或编辑时,需要操作多步,修改只针对代码块本身,功能上会受到一些限制。
- 背后的大模型在功能上不尽如人意,理解力和代码能力稍显不足。
- 生成和修改代码时无法指定参考哪些文件。
3 新版的优势
新版针对上述问题进行了优化。
3.1 更多大模型可选
- 新版提供了 gpt-4o、o1 系列模型,以及 claude。
- 不仅我这样认为,我的朋友和网友也一致发现,Claude 在代码领域表现出色,代码能力非常强,甚至优于多步推理的 o1 系列模型。而 gpt 则在综合能力上更胜一筹,因此在 Copilot 的编辑和聊天功能上,我更推荐使用 claude。
3.2 聊天和编辑界面
3.2.1 聊天界面
- 聊天界面现在可以显示在右侧面板,尤其是在使用大显示器时,这种布局看起来非常舒适(左侧与代码树排列在一起,很少有人让左边栏占据半个屏幕,而右边栏更舒展)。
- 每次聊天都会默认参考当前打开的代码,这样建议将更具针对性,示例代码也会更加贴合实际需求。
3.2.2 编辑界面
- 新增了编辑界面,大幅提升了修改代码的能力。只需输入修改需求,系统就能自动进行修改,同时展示其思考过程,并解释生成逻辑和理由。
- 以文件为单位进行修改,而不是以单独代码块为单位。对整个文件进行修改,由于当前模型受制于生成时间,大文件修改较慢,这也客观上让我们避免写出过于庞大和复杂的文件。
- 可以在当前打开的文件之外,指定其他参考文件和待修改文件,这样不仅可以修改代码,还可以进行更多的代码整合。
- 在修改过程中,系统会逐层剖析工具链,对于不熟悉的 API 可以自行查找如何使用,自动学习小众工具怎么用。
3.3 其它改进
- 小星星功能:改版后常常在界面上看到一些小星星图标,这是 copilot
的小功能,如:
- 根据当前修改,自动生成 GitHub commit 描述。
- 在 Jupyter Notebook 中创建代码块时,主动询问生成什么代码。
- 当运行出现 bug 时,会自动标红代码段中的相关代码,并与报错信息关联,以提示 Copilot 进行修改。虽然修改效果一般,但这个想法确实不错。
- 在更多场合调出 Copilot
- 通过快捷键,可以在代码区、终端调用 copilot,以及调出编辑界面。
- 聊天时的一些内置语法,使用
/
调出。 - 自动生成 README 文档,描述代码树。
- 根据功能描述,生成项目代码,比如一个多目录多文件的前端项目。
3.4 注意事项
- 新插件与 VSCode 的结合更为紧密,因此需要将 VSCode 升级到 1.95 及以上版本才能使用。
- 注意小星星的提示,真的会带来很多惊喜。
4 总结
- 新模型使代码能力有了明显提升。
- 除了模型本身的改进,其他优化都集中在提升大模型与当前工具的结合易用性上,这可能是通过思考链/Agent/本地代码增强
RAG 方法实现的,现有工具与大模型结合大有可为:
- 升级后,工作流更加流畅,无需频繁切换、复制粘贴或输入提示再删除。
- 缩短了学习 API 用法的时间,它能够自行查找 API 的使用方法,并结合当前代码和需求,直接安排参数和返回值。
- 调试变得更加智能,同时考虑到报错信息和当前代码,还能在代码中标红,省去了很多人工。
- 增加了基于代码的聊天功能,可以同时编辑多段代码,代码生成时优先推荐 Copilot,将辅助工具从次要的辅助小工具角色转变为主要角色,并与代码深度绑定。
- 个体体验
- 使用它的时间明显增多,过程中常常有惊喜。
- 对新技术和陌生工具的上手速度更快。
- 代码整理和升级变得非常容易,比如:底层库的替换,从 JS 到 TS,从 Vue2 到 Vue3 风格转换等。
- 基于当前代码的聊天显得更加针对性,不过有一些 general 的问题还是会使用网页版的 GPT-4,以避免当前代码对整体方向的误导。
- 通过聊天推荐一些新的工具,发现自己的技术栈,那些曾引以为傲的经验许多已经过时了。
- 进化过程
- 起初,利用 Copilot 工具来续写和补全代码,并生成相应的注释。随着使用的深入,开始让 Copilot 修改代码,更加注重调整和优化,对它的融入感大大增强。
- 早先,会询问 Copilot 如何解决问题,这种方式略显抽象。如今,我则让它参考现有内容,思考调整和改进的具体步骤。
- Copilot 的一个显著进步在于它能够通过函数调用关系,逐层深入分析代码。
- Copilot 将原本知识密集型的工作转变为劳动密集型,可以通过简单定制,部署并销售服务,能够及时为客户解决问题。
- 总之,感觉现在这包月的钱花得更值了。
5 文档
https://docs.github.com/en/copilot/using-github-copilot/asking-github-copilot-questions-in-github
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.