AB
AiBoss站
教程

GitHub Copilot

教程

用 GitHub Copilot 在 VS Code 中完成补全、Chat 与测试生成

面向第一次接触 GitHub Copilot 的开发者,讲清订阅开通、VS Code 扩展安装与授权,以及内联补全、Chat 引用符号与快捷指令、代码解释审查、单元测试生成、提交信息生成和终端命令生成的实际用法,并给出一个从空文件到提交的完整示例与常见坑。

GitHub Copilot 是一款内嵌在编辑器里的 AI 编程助手,由 GitHub 与 OpenAI 合作推出。它和「在浏览器里另开一个对话窗口」的做法最大的区别在于上下文:Copilot 能看到你当前打开的文件、光标所在位置,乃至整个工作区的结构,因此补全建议可以直接出现在光标后面,提问时也不必再把代码复制粘贴出去。它适合已经在用 VS Code、Visual Studio、JetBrains 系列或 Neovim 的开发者,尤其是希望减少样板代码、加快初稿速度、又不想更换编辑器的人。如果你更想先了解这类工具的整体定位,可以看站内的 GitHub Copilot 条目,再回到本文按步骤操作。

本文按「开通订阅 → 安装扩展 → 逐个功能上手 → 跑通一个完整例子」的顺序展开,重点放在每个功能具体怎么触发、用什么符号引用上下文、以及哪些地方容易出错。文中涉及方案、价格与配额的部分只做定性说明,具体数字请以 GitHub 官网当前信息为准。

准备工作

账号与订阅

Copilot 并不是完全免费的工具,使用前需要先确认自己的账号处于哪种状态。进入 GitHub 的 Copilot 页面可以查看当前提供的方案,常见的有以下几类:

  • 有限免费额度:GitHub 对部分账号提供有月度请求数上限的免费使用,适合先轻度体验,额度用完后补全与 Chat 会受限。
  • 个人订阅:面向个人开发者的月付方案,补全不设次数限制,是大多数独立开发者会选的档位。
  • 学生与教师认证:通过 GitHub Education 完成身份认证后可以免费使用,在校学生值得优先申请。
  • 团队与企业方案:包含策略管理、组织级开关与私有代码保护等能力,适合有合规要求的团队。

订阅完成后,用同一个 GitHub 账号登录即可激活 Copilot,不需要另外申请或配置 API 密钥——这一点和直接调用模型 API 的工具体验差别很大,省掉了密钥管理与计费配置的环节。各方案的具体价格、免费额度上限、以及不同地区是否可购买,都会随时间调整,请以官网当前信息为准。

编辑器与扩展

Copilot 支持 VS Code、Visual Studio、JetBrains 全系(IntelliJ IDEA、PyCharm、GoLand 等)、Neovim,以及 GitHub 网站自带的代码编辑器。本文以 VS Code 为例,其他宿主的安装入口不同,但核心功能与交互逻辑基本一致。

安装前需要准备:

  • 一个已登录的 GitHub 账号,且该账号已激活 Copilot;
  • 可正常联网的环境,因为补全与 Chat 请求都需要把上下文片段发送到服务器;
  • 一个可以随意改动的练习项目,避免在正式仓库里试错。

操作步骤

第一步:安装并授权扩展

  1. 打开 VS Code,按 Ctrl+Shift+X 进入扩展面板。
  2. 搜索 GitHub Copilot,安装官方扩展;同时把 GitHub Copilot Chat 一并装上,后者提供侧边栏对话与快捷指令能力。
  3. 安装完成后,右下角状态栏会出现 Copilot 图标,点击它并用 GitHub 账号完成授权。
  4. 授权成功后图标点亮,内联补全立即生效,无需重启编辑器。

装好之后,你在 VS Code 里会用到四个主要入口:内联补全(光标后的灰色建议)、Chat 侧边栏(对话与引用)、快捷命令(解释、修复、生成测试、生成文档)、以及 Source Control 面板里的提交信息生成。下面逐个说明。

第二步:使用内联补全

在编辑器里正常写代码,Copilot 会以灰色幽灵文字的形式给出建议。三个基本操作要记牢:

  • 按 Tab 接受当前建议;
  • 按 Esc 忽略;
  • 按 Alt+](macOS 上是 Option+])在多个候选之间切换。

补全质量高度依赖你给的上下文。最有效的一个习惯是:在函数签名上方写一行说明意图的注释,让模型知道你要做什么,而不是让它从零猜。例如:

# 读取 CSV,过滤掉 value 列为负数的行,按 date 升序排列后返回 DataFrame
def load_and_clean(path: str) -> pd.DataFrame:

写下这行注释和函数签名后,光标停在冒号后面,Copilot 通常会补出整段实现。相比在空白文件里直接敲函数名,这种写法的命中率明显更高。

第三步:打开 Chat 并学会引用上下文

按 Ctrl+Shift+I 打开 Chat 面板,或在编辑器内用 Ctrl+I 直接内联唤起。Chat 的价值在于它能精确拿到你指定的上下文,靠的是一组特殊引用符号:

符号作用
#file:路径引用某个具体文件的内容
#selection引用当前选中的代码片段
#codebase让 Copilot 检索整个工作区
@workspace让它先理解项目整体结构再回答

此外还有四个快捷指令,分别对应四类常见任务:

  • /explain:解释代码逻辑;
  • /fix:修复报错或问题代码;
  • /tests:生成单元测试;
  • /doc:生成文档注释。

把这些符号和指令组合起来,提问会精准很多。比如选中一段代码后输入:

/explain #selection 这段代码的时间复杂度是多少?
有没有明显可以优化的地方?

再比如让它在项目范围内找答案:

@workspace 这个仓库里处理用户鉴权的逻辑分布在哪些文件?
入口函数是哪一个?

第四步:代码解释与代码审查

选中一段代码,右键选择 Copilot 菜单里的 Explain This,或者在 Chat 里用 /explain,都能得到逐段解释。这个功能在接手遗留代码、阅读别人写的库时特别省时间——你不需要先把整个模块读完再理解某一段。

审查场景下,把要求写具体比笼统地说「帮我看看」有效得多。可以这样提:

Review this function as if it were a pull request.
List: 1) edge cases not handled 2) error handling gaps 3) naming issues.
Then apply the fixes.

这样它会先列出问题清单,再按清单改代码,你能逐条判断哪些建议该采纳。

第五步:生成单元测试

选中一个函数,右键选择 Copilot 菜单里的 Generate Tests,或者在 Chat 里用 /tests 并附上约束条件:

/tests #selection 只用 pytest,不引入新依赖,覆盖正常路径和边界情况。

把测试框架、依赖限制、覆盖范围写进指令里,生成的测试才贴合项目现状。需要提醒的是,生成的测试并非 100% 可以直接跑通,断言值、fixture 名称、导入路径都可能需要手工修正;但作为脚手架,它比从零开始写要省不少时间。

第六步:生成提交信息

在 VS Code 的 Source Control 面板里,确认改动已经暂存(Staged Changes),提交信息输入框旁边会出现一个 Copilot 图标,点击它就会基于当前 diff 生成一条提交信息。生成风格偏向 conventional commits(如 feat:、fix: 前缀),通常还需要按团队规范稍作调整。

第七步:在终端里用自然语言生成命令

Copilot 还提供终端侧的能力:用自然语言描述你想做的事,它给出对应的 shell 命令并解释含义。适合那些「知道要做什么、但记不住参数顺序」的场景,比如批量重命名、按条件查找文件、组合管道命令。执行前务必先读懂它给出的命令,尤其是涉及删除、覆盖、递归操作的命令。

一个完整示例

下面用一个最小场景把上面的功能串起来:给一个数据处理函数补全实现、生成测试、再提交。

1. 建立文件并写意图注释

# data_utils.py
import pandas as pd

# 读取 CSV,过滤掉 value 列为负数的行,按 date 升序排列后返回 DataFrame
def load_and_clean(path: str) -> pd.DataFrame:

光标停在冒号后,等待灰色建议出现,按 Tab 接受。如果第一版不理想,按 Alt+] 换一个候选,或按 Esc 忽略后自己补两行、再让它续写。

2. 用 Chat 检查实现

选中刚生成的函数体,按 Ctrl+Shift+I 打开 Chat,输入:

/explain #selection 这段代码在 path 不存在时会怎样?
有没有必要加异常处理?

根据回答决定是否补上文件存在性检查与空 DataFrame 的处理。

3. 生成测试

再次选中函数,输入:

/tests #selection 只用 pytest,不引入新依赖,覆盖正常路径、空文件、以及 value 全为负数的边界情况。

把生成的测试保存为 test_data_utils.py,运行 pytest,逐条修正失败的断言。常见需要改的地方是临时文件的构造方式和列名拼写。

4. 修复 lint 报错

如果编辑器里出现未使用导入、行过长之类的提示,选中报错行,用 /fix 让它给出可应用的修复,再人工确认一遍改动范围。

5. 提交

在 Source Control 面板暂存两个文件,点击提交信息框旁的 Copilot 图标生成信息,按团队规范微调后提交。至此,一个「从空文件到提交」的闭环就跑通了。

注意事项

补全结果必须核对

Copilot 在调用外部 SDK 时,有时会编造并不存在的参数名或方法名。凡是涉及第三方库、云服务 API、数据库驱动的代码,都要和对应文档核对一遍再采用。不要不加判断地整段接受补全。

用指令文件统一项目约定

GitHub 支持在仓库里放一个 .github/copilot-instructions.md 文件,用来告诉 Copilot 这个项目的约定,例如框架版本、代码风格、禁止使用的模式。它的作用相当于一份全局系统提示,写一次就能让后续所有补全和对话都遵循同一套规则,比每次提问都重复交代要省事。

给足上下文,质量才稳定

在文件顶部写好 imports、类型定义和一段模块说明注释,补全质量会比在空白文件里高一个档次。同理,Chat 里用 #file、#selection、@workspace 明确指定范围,比让它自己猜要可靠。

按语言控制补全范围

在 VS Code 设置里可以按语言开关 Copilot。在 Markdown、纯文本、配置文件里,补全建议往往只是干扰,关掉这些语言的补全能让编辑体验清爽很多。

代码上下文会被发送到服务器

内联建议和 Chat 请求都会把上下文片段发往服务器。个人方案默认不会用你的代码训练模型,但涉及保密代码时,仍应阅读官方隐私政策,并由团队选用带策略管理与隐私控制的企业方案。这一条对受合规约束的项目尤其重要。

免费额度与方案会变

免费使用的月度请求上限、各档方案的价格与包含的功能、以及不同地区的可用情况,都可能调整。做选型决策前请以 GitHub 官网当前信息为准,不要依据本文或任何第三方文章里的数字下单。

它不是万能的

Copilot 的定位是减少样板代码、加速初稿,而不是替代审查。生成结果需要人来判断正确性,测试需要人来看覆盖是否合理,提交信息需要人来对齐规范。把它当作一个随时在线的初稿作者,而不是最终决策者,回报率才最高。