工作原理

- GitHub copilot 底层还是大语言模型,是由Open AI来提供的
- 这个大语言模型是根据GitHub所提高的开源代码来作为训练素材而特别提供的
- GitHub copilot的插件会始终盯着vscode的光标
- 我们的操作,如果空格,
tap
操作或者entern
操作都可能出发事件,从而触发plugin - 这个plugin会根据光标停留的位置,扫描对应光标的上下文
- 然后插件会根据内容自动构建提示词,发送给
GitHub copilot 服务
, GitHub copilot 服务
内部也会有自己的prompt
,会再优化一遍,发送给Opean AI Model
Opean AI Model
把代码发送给GitHub copilot 服务
,GitHub copilot 服务
还会做一遍过来,保证代码是符合要求的- 最后在把代码给到IDE
准备工作
- 下载VSCode
- 安装GitHub copilot 插件
- GitHub copilot
- GitHub copilot chat
- 使用GitHub账户登录
登录遇到的问题

点击sign in with a GitHub.com account
没有反应。
GHE.com
= GitHub Enterprise 的登录入口。这是为使用 GitHub 企业版(GitHub Enterprise)服务的用户准备的登录选项,通常适用于公司或组织内部部署的 GitHub 服务,而 不是普通用户使用的 GitHub.com 账户。
解决方式如下:
按下
Cmd + ,
打开“设置”搜索:
github.copilot.advanced.authProvider
修改成如下配置:
"github.copilot.advanced": { // "authProvider": "github-enterprise" "authProvider": "github" },
修改之后,页面变成这样:
变成这样之后,再次点击
Sign in to GitHub.com
使用GitHub Copilot
写代码

在这里需要强调一点:copilot并不是根据注释来生成代码的。
- copilot是根据光上下文内容来生成代码的
- 当然,注释会有比较大的比重
- 所谓上下文是指:
- 光标做在位置的上文内容和下文内容
- 以及在IDE中打开的文档
- 这点很重要。我们可以打开一个文档,然后copilot就会根据打开的代码生成符合我们代码风格的代码



Debug




单元测试

快捷键
快捷键(Windows) | Mac 对应快捷键 | 功能 |
---|---|---|
Tab | Tab | 接受当前建议 |
Esc | Esc | 取消当前行的建议 |
Alt + ] | Option + ] | 展示下一个建议 |
Alt + [ | Option + [ | 展示上一个建议 |
Alt + \ | Option + \ | 触发当前行的建议 |
Ctl + Enter | Cmd + Enter | 打开GitHub Copilot建议面板 |
Ctl + Shift + P | Cmd + Shift + P | GitHub Copilot命令选择 |
Ctl + Shift + i | Cmd + Shift + i | 向GitHub Copilot Chat提问 |
GitHub Copilot的基本能力和场景概览

GitHub Copilot 使用小技巧
打开和当前任务相关的代码文件(大约会提升5%-10%的代码接受率)
如果相关的类库没有源码,可以打开元数据信息(metadata)
如果没有元数据信息,当前编辑的文件里包含了相关类库的使用方式也可以
保持良好的代码习惯,比如保持比较好的代码命名规范,好的命名可以让Copilot更准确的理解上下文
多使用快捷键Ctl+Enter
不要追求每次都可以生成大段的代码,生成一行或者半行其实也很能节省时间
可以适当的调整注释,使其清晰、具体、详细,没有模糊的描述
不要花费过多时间在如何写代码注释上,Copilot提示的效果不好的时候,可以忽略当前提示的内容,自己写一段代码,之后就会就好了
Copilot的定位是个更好用的编程工具,而不是代替开发者思考
使用原则:观察,思考,接受,验证,修改
GitHub Copilot 常见的使用问题
推荐代码很少,甚至只有一个起始大括号;或者推荐的代码莫名其妙,怎么办?
使用快捷键打开GitHub Copilot Panel,查看更多的推荐信息
不采取它推荐的内容,继续按您的常规的思路去写代码,写几行之后,Copilot会根据您的输入,逐渐改善推荐的内容,并逐渐达到比较好的推荐效果
增加更多背景信息(可以是注释,可以是代码片段)
Copilot好像没有响应了,不再提示任何代码,怎么办?
检查网络连接是否正常,有必要的时候通过VPN or Proxy连接到GitHub Copilot
重启IDE
检查Copilot控制台的输出,或者查看log信息,查看错误信息,有必要的时候,提交case
我写了不少注释,但是Copilot推荐的内容好像不准,比ChatGPT差好多,怎么办?
Copilot的功能不是根据注释生成代码,是根据上下文自动构建提示词,然后生成推荐代码。您写的注释不一定会被自动生成提示词的逻辑认为是高权重的提示词。
正确的使用方式是,把Copilot当成辅助,即,我们正常按之前的方式写代码,不用刻意写更多的注释,Copilot会自动根据我们的注释和已经完成的代码做猜想。如果猜对了,我们就接受,如果不对,就忽略。
如果希望可以借助Copilot来实现大段代码生成,推荐使用GitHub Copilot Chat
GitHub Copilot Chat 场景总结
代码说明:深入分析和说明代码块的工作原理
代码帮助:获取编程相关问题的解答,可以是自然语言格式,也可以是代码片段格式
代码优化:获取特定于上下文的代码提议和建议
单元测试:生成完整的单元测试
代码评审:优化代码性能,提出改进意见
代码调试:查找问题并获取对 bug 和 异常的建议修复
漏洞发现和修复
新知识学习
技术方向和思路讨论
项目内的代码内容问答
GitHub Copilot Chat 使用小技巧
了解Chat的能力边界,Chat不是万能的
熟练使用Chat的快捷键和快捷指令
注意Copilot Chat的代码引用范围,默认为当前编辑文件中露出在屏幕区域的内容
提问时,需要对于所需的内容要尽可能具体、描述和详细,减少“蓬松”和不精确的描述
如果问题比较复杂,尝试使用“带有推理逻辑的引导词”,采用思维链的方式将模型引导向特定的思考方向
可以通过示例,清晰地表达所需的输出格式
不要只是说什么不要做,而是说什么要做
给AI助手一个身份
积累自己的提示词库:openAI 的提示工程技术
GitHub Copilot 和 Copilot Chat 总结

一些使用的链接:
https://learn.microsoft.com/zh-cn/visualstudio/ide/visual-studio-github-copilot-chat?view=vs-2022
https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/
https://dev.to/github/a-beginners-guide-to-prompt-engineering-with-github-copilot-3ibp
https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/
提示词的七个原则
格式要求
- 生成xxx并用逗号分隔 - 生成列表 - 函数名需要以xxx_yyy格式命名
控制回复数量
- 给出更多解释,600字 - 生成内容直到抵达上限 - 不多于两个段落/在一句话以内
假装和限定角色获得场景
- 假定你是一个数据库专家 - 假设你正在完成xxx任务 - 从现在开始,你就是…
重新整理数据
- 重新生成代码,用…函数/类/接口 - 依据上面的代码,考虑xxx条件,生成…
限定内容
- 基于给定的内容… - 在xxxx(一个技术名词)的模块下,…
组合流水线
- 生成一个列表 - 对于列表中的每个条目,生成… - 继续 - 过滤 ... - 重新生成输出条目为… - 将最终内容总结为简短的版本
突破个人限制
- 关于 ... 有哪些相关概念和领域需要研究 - 生成和 ... 相关的领域和概念 - 对于给定内容 ... 提示我相关的 - 关于...由浅入深的推荐步骤是...
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1909773034@qq.com