AB
AiBoss
Tutorials

GitHub Copilot

Tutorials

GitHub Copilot 快速上手教程:从安装到写出第一段补全代码

GitHub Copilot 是一款由 AI 驱动的编程助手,能在编辑器里根据上下文给出整行或整段代码建议。本教程面向刚接触它的开发者,讲清账号与订阅前提、在编辑器中的安装与登录方式、补全与对话两种核心用法、一个可跑通的完整示例,以及使用中需要注意的隐私、许可与准确性事项。

GitHub Copilot 是一款由 AI 驱动的编程助手,它嵌入到代码编辑器里,根据你正在写的代码和注释,实时给出整行甚至整段代码建议。它解决的是「重复性代码写得慢、不熟悉的 API 记不住、样板代码太啰嗦」这类问题。适合已经会写代码、但希望把机械性劳动交给工具的开发者和技术团队。如果你还没用过,可以把它理解成一个始终待命的结对程序员:它不会替你做架构决策,但能大幅缩短从「想清楚」到「敲出来」的距离。站内也提供了对应的工具入口:GitHub Copilot。

需要先说明一点:GitHub Copilot 的建议来自模型对大量公开代码的学习,它给出的是候选而非答案。把它当成加速器,而不是替代品——最终代码的正确性、安全性、许可证合规性,仍然由你负责。

准备工作

在开始之前,需要把下面几件事准备好。缺少任何一项,后面的步骤都会卡住。

账号与订阅

  • 一个 GitHub 账号。没有的话先在 GitHub 官网注册,流程和注册任何网站账号一样。
  • GitHub Copilot 的可用权限。它是一项付费服务,个人可以按月或按年订阅,组织和企业也可以统一采购后分配给成员。是否提供免费额度、学生与教师是否有优惠、开源项目维护者是否有特殊政策,这些都会随时间调整,请以 GitHub 官网当前的定价与政策页面为准。
  • 如果你属于某个组织,管理员可能需要在组织设置里显式开启 Copilot 的访问权限,成员才能使用。这一步不是你能自己完成的,需要找管理员确认。

编辑器

GitHub Copilot 以插件形式工作,主流编辑器都有对应扩展,包括 VS Code、Visual Studio、JetBrains 系列 IDE(IntelliJ IDEA、PyCharm、WebStorm 等)以及 Neovim。选你日常用的那个即可,不必为了用它换编辑器。

同时确认编辑器版本不要太旧。扩展通常对编辑器的最低版本有要求,版本过低会装不上或装上后不工作。升级编辑器是成本最低的排错手段之一。

网络与登录方式

插件需要能访问 GitHub 的服务。如果你在公司网络或受限网络环境下,先确认相关域名没有被拦截。登录时通常有两种路径:一种是在编辑器内触发登录,浏览器会打开一个授权页面,你确认后把授权码回填到编辑器;另一种是使用个人访问令牌。前者更常见,后者适合无法打开浏览器的环境。

操作步骤

第一步:安装扩展

在编辑器的扩展市场里搜索 GitHub Copilot 并安装。以 VS Code 为例,可以在扩展面板搜索,也可以用命令行安装:

code --install-extension GitHub.copilot
code --install-extension GitHub.copilot-chat

第一个是补全核心,第二个是对话功能。两者可以分开装,但建议一起装,因为对话功能在解释代码、生成测试、排查报错时非常有用。JetBrains 系列在 IDE 的插件市场里搜索同名插件安装即可,Visual Studio 在「管理扩展」里搜索安装。

第二步:登录并授权

安装完成后,编辑器通常会在状态栏或侧边栏提示你登录。点击提示,按引导完成浏览器授权。授权成功后,状态栏上的 Copilot 图标会从「未激活」变为「已激活」。

如果状态栏没有出现提示,可以手动触发:在 VS Code 中打开命令面板(macOS 上是 Command+Shift+P,Windows 和 Linux 上是 Ctrl+Shift+P),输入 Copilot 相关的登录命令并执行。

登录后建议先确认订阅状态。如果账号没有有效订阅,插件会提示无权限,此时补全不会工作。这种情况下需要先完成订阅,或联系组织管理员开通。

第三步:用注释驱动补全

最直观的用法是写一行注释,描述你想要什么,然后换行,等它给出建议。例如在一个 JavaScript 文件里输入:

// 判断一个字符串是否是回文,忽略大小写和标点
function isPalindrome(str) {

光标停在函数体内部时,Copilot 通常会用灰色文字给出整段实现。这时:

  • 按 Tab 接受建议。
  • 按 Esc 拒绝建议。
  • 如果它给了多个候选,可以用快捷键在候选之间切换(不同编辑器的按键不同,可在快捷键设置里搜索 Copilot 查看)。
  • 只想要一部分时,可以按单词接受,而不是整段接受。

注释写得越具体,建议越贴近你的意图。把「处理数据」换成「把 CSV 里的日期列从 MM/DD/YYYY 转成 ISO 8601 格式」,结果会明显不同。

第四步:在已有代码中触发补全

补全不只在空函数里工作。当你写到一半、调用一个不熟悉的库、或者写重复的模式时,它同样会给出建议。常见的触发场景包括:

  • 输入函数名或对象属性的一部分,等待它补全剩余部分。
  • 写完一个 for 循环的开头,让它补全循环体。
  • 写测试用例时,让它根据被测函数生成断言。
  • 写正则表达式、SQL 查询、配置文件时,让它补全结构。

如果它没有反应,先检查状态栏图标是否处于激活状态,再检查当前文件类型是否被支持。某些文件类型或某些语言的支持程度会弱一些。

第五步:使用对话功能

补全之外,Copilot 还提供对话界面。你可以选中一段代码,然后提问,例如:

  • 「这段代码在什么情况下会抛异常?」
  • 「帮我给这个函数写单元测试。」
  • 「把这个回调改写成 async/await。」
  • 「这个报错是什么意思,可能的原因有哪些?」

对话的上下文通常包括你当前打开的文件和选中的代码。提问时把范围说清楚,比笼统地问「这段代码有什么问题」更容易得到有用的回答。

第六步:调整行为

Copilot 提供了一些开关,用来控制它在什么情况下给建议。常见的有:

  • 针对特定语言的启用与禁用。如果你觉得它在某种语言里干扰大于帮助,可以单独关掉。
  • 对特定文件或路径的排除。例如自动生成的代码、第三方库目录、包含敏感信息的配置文件,通常不希望它介入。
  • 是否允许使用公开代码匹配的建议。这个开关关系到许可证风险,下面会单独讲。

这些设置的位置随编辑器不同而不同,一般在编辑器设置里搜索 Copilot 就能找到。

一个完整示例

下面走一遍从零到能跑通的流程。假设你要写一个 Python 脚本,读取一个 JSON 文件,过滤出满足条件的记录,并输出统计结果。

第一步,创建文件并写注释。

# 读取 records.json,过滤出 status 为 active 且 score 大于 80 的记录,
# 打印记录总数和平均 score

第二步,等待建议并接受。光标停在注释下方,Copilot 会给出类似下面的实现(具体内容每次可能不同):

import json

def summarize(path):
    with open(path, encoding="utf-8") as f:
        records = json.load(f)
    filtered = [r for r in records if r.get("status") == "active" and r.get("score", 0) > 80]
    total = len(filtered)
    avg = sum(r["score"] for r in filtered) / total if total else 0
    print(f"total={total}, avg_score={avg:.2f}")

if __name__ == "__main__":
    summarize("records.json")

按 Tab 接受。注意这里有一个细节:如果过滤结果为空,直接做除法会报错,所以建议里加了 if total else 0。这类边界处理有时会出现、有时不会,接受前要自己看一眼。

第三步,准备测试数据。创建一个 records.json:

[
  {"id": 1, "status": "active", "score": 91},
  {"id": 2, "status": "inactive", "score": 95},
  {"id": 3, "status": "active", "score": 62},
  {"id": 4, "status": "active", "score": 88}
]

第四步,运行。

python summarize.py

预期输出是 total=2, avg_score=89.50。如果输出不符,先检查 JSON 结构是否和代码假设的一致——这是最常见的不匹配来源。

第五步,用对话补测试。选中 summarize 函数,在对话里输入「为这个函数写 pytest 测试,覆盖空列表和全部被过滤掉的情况」。Copilot 会生成测试代码,你把它保存为 test_summarize.py,然后运行:

pytest -q

生成的测试同样需要检查。它可能假设了错误的输入格式,也可能漏掉边界情况。把它当作起点,而不是终点。

注意事项

建议的准确性

Copilot 会生成看起来合理但实际错误的代码。常见的问题包括:调用了不存在的 API、参数顺序颠倒、忽略了错误处理、在边界条件下崩溃、使用了已废弃的写法。因此每一段接受的代码都应该被阅读和测试,尤其是在涉及金额计算、权限判断、数据删除这类高风险逻辑时。

许可证与公开代码匹配

Copilot 的建议可能与你项目中已有的代码相似,也可能与公开仓库中的代码相似。GitHub 提供了针对公开代码匹配的过滤选项,可以在设置中开启,让这类建议被拦截或标注。是否开启取决于你所在组织的合规要求。如果你的项目对许可证来源有严格要求,建议开启该过滤,并在代码审查流程中保留人工判断环节。

代码隐私与数据使用

你的代码片段会被发送到服务端以生成建议,这是它工作的前提。不同订阅类型对数据的使用方式不同:个人版与商业版在是否用你的代码训练模型上有区别。如果你处理的是受保密协议约束的代码、包含密钥的配置文件、或个人身份信息,务必先确认你所使用的订阅类型对应的数据处理条款,并考虑通过排除规则让 Copilot 不介入这些文件。

不要让它接触密钥

把包含 API key、数据库密码、私钥的文件排除在 Copilot 的作用范围之外。即使服务条款承诺不用于训练,把密钥送进任何外部服务都不是好习惯。更稳妥的做法是使用环境变量或密钥管理服务,让密钥根本不落在代码文件里。

配额与可用性

对话功能通常有使用次数限制,补全功能也可能存在速率约束。具体额度、是否区分模型、超出后的行为,都会随产品迭代调整,请以 GitHub 官网当前说明为准。如果遇到功能突然不可用,先检查是否触发了配额限制,再检查订阅是否过期。

组织策略可能覆盖个人设置

如果你在组织内使用,管理员可以统一配置哪些功能开启、哪些模型可用、是否允许公开代码匹配。这些策略的优先级高于你的个人设置。发现自己改不了某个选项时,先确认是不是被组织策略锁定了。

它不替代代码审查

Copilot 生成的代码同样需要走正常的审查流程。它不会理解你的业务约束、不会知道你们团队的命名约定、也不会意识到某个改动会破坏下游系统。把它产出的代码当作一位新同事的初稿来对待,是更合适的心理预期。

把上面这些步骤走一遍,你基本就掌握了 GitHub Copilot 的日常用法:用注释和上下文驱动补全,用对话处理解释、重构和测试,用设置控制它在哪些地方出现、在哪些地方闭嘴。剩下的就是把它嵌进你自己的开发节奏里,边用边调整。