Skip to content

GitHub Copilot 工作流

GitHub Copilot 是 GitHub 与 OpenAI 合作推出的 AI 编程助手,深度集成于 VS Code、JetBrains、Visual Studio 等主流 IDE 中。凭借对 GitHub 代码库的深度训练,Copilot 在代码补全和上下文理解方面表现出色。

copilot-instructions.md 配置

copilot-instructions.md 是 GitHub Copilot 的自定义指令文件,放在项目的 .github/ 目录下,为 Copilot Chat 提供项目上下文和行为规范。

文件位置

your-project/
  .github/
    copilot-instructions.md    ← 在这里
  src/
  package.json
  ...

基础配置模板

markdown
# GitHub Copilot 自定义指令

## 项目背景
这是一个 SaaS 订单管理系统,使用 Python FastAPI 构建后端 REST API,
PostgreSQL 作为主数据库,Redis 用于缓存和队列。

## 技术规范
- Python 3.11+,使用类型注解(typing module)
- 遵循 PEP 8 代码风格
- 使用 Pydantic v2 进行数据验证
- 异步优先,所有 I/O 操作使用 async/await
- 日志使用 structlog,禁止 print 调试

## 项目结构约定
- 路由定义在 app/routers/
- 业务逻辑在 app/services/
- 数据库模型在 app/models/
- Pydantic Schema 在 app/schemas/
- 工具函数在 app/utils/

## 测试规范
- 测试框架:pytest + pytest-asyncio
- 测试文件命名:test_[模块名].py
- 每个 API 端点必须有集成测试
- Mock 外部服务调用

## 响应格式
所有 API 响应统一格式:
{
  "success": true/false,
  "data": {...} | null,
  "message": "..." | null,
  "errors": [...] | null
}

团队协作配置示例

markdown
## 代码审查关注点
- 检查是否有 N+1 查询问题
- 验证敏感数据是否已脱敏
- 确认事务边界是否正确
- 检查并发安全性

## 禁止的模式
- 不使用全局变量存储状态
- 不在模型层直接处理 HTTP 请求
- 不暴露内部异常详情给 API 响应
- 不使用弃用的 SQLAlchemy 1.x 写法

代码补全优化技巧

原则:优质注释驱动优质补全

Copilot 通过分析光标前的上下文来预测代码。高质量的注释和函数签名是获得准确补全的关键。

示例 1:通过注释引导实现

python
# 从数据库查询指定用户的最近 N 条订单,
# 按创建时间倒序排列,并预加载关联的商品信息
async def get_recent_orders(user_id: int, limit: int = 10) -> list[Order]:
    # Copilot 会根据注释生成合适的查询

示例 2:类型注解改善补全

typescript
interface PaginatedResponse<T> {
  items: T[];
  total: number;
  page: number;
  pageSize: number;
  hasMore: boolean;
}

// 有了清晰的类型定义,Copilot 补全更精准
async function fetchProducts(page: number): Promise<PaginatedResponse<Product>> {
  // Copilot 会正确推断返回结构
}

利用文件内已有代码

Copilot 会参考同文件中的代码模式。在同一文件中写一个函数后,类似函数的补全质量会显著提升:

python
# 第一个函数(手动编写)
async def create_user(data: UserCreate, db: AsyncSession) -> User:
    user = User(**data.model_dump())
    db.add(user)
    await db.commit()
    await db.refresh(user)
    return user

# 第二个函数(Copilot 会模仿上面的模式)
async def create_product(data: ProductCreate, db: AsyncSession) -> Product:
    # 按 Tab,Copilot 会生成一致的模式

使用 Copilot 友好的编码习惯

习惯说明
写完整的函数签名再补全让 Copilot 知道输入输出类型
先写函数名再按 Tab函数名是最强的上下文提示
保持文件聚焦单一职责的文件补全更准
打开相关文件Copilot 会参考已打开的标签页

Copilot Chat 使用指南

访问方式

  • 侧边栏:点击 VS Code 左侧 Copilot 图标
  • 快捷键Ctrl+Shift+I(Windows)/ Cmd+Shift+I(macOS)
  • 内联聊天:选中代码后按 Ctrl+I / Cmd+I

内置斜杠命令

命令功能示例
/explain解释代码/explain 这段递归逻辑是如何工作的?
/fix修复问题/fix TypeError: Cannot read property
/tests生成测试/tests 为 calculateDiscount 函数生成单元测试
/doc生成文档/doc 生成 JSDoc 注释
/optimize优化代码/optimize 提升这个循环的性能
/new创建新文件/new 创建 Express 路由文件

高效的 Chat 提问模板

# 代码审查
审查以下代码,关注:安全漏洞、性能问题、可维护性
[粘贴代码]

# 调试帮助
运行 [命令] 出现以下报错,分析根本原因并给出修复方案:
[错误信息]

# 重构建议
这段代码实现了 [功能],有什么重构建议可以让它更符合 SOLID 原则?

# 技术选型
在 Node.js 项目中,处理 [场景] 时,选择 [方案A] 还是 [方案B] 更合适?

@workspace 代理深度使用

@workspace 是 Copilot Chat 中最强大的代理,能够理解整个项目的代码结构。

启用条件

  • VS Code 1.90+
  • GitHub Copilot Chat 扩展
  • 项目已在 VS Code 中打开

常用用法

# 代码探索
@workspace 这个项目中用户认证是在哪里处理的?

# 影响分析
@workspace 如果我修改 User 模型的 email 字段,
哪些地方会受到影响?

# 架构理解
@workspace 解释这个项目的数据流向,从 API 请求到数据库写入

# 全局搜索
@workspace 项目中有哪些地方直接调用了 fetch 而没有使用封装的 API 客户端?

# 最佳实践检查
@workspace 检查项目中的错误处理是否一致,找出不符合规范的地方

@workspace 与 #file 对比

特性@workspace#file:文件名
范围全项目指定文件
速度较慢(需索引)
适用场景架构级问题局部代码问题
Token 消耗

内联建议管理

快捷键总览

操作Windows/LinuxmacOS
接受建议TabTab
拒绝建议EscEsc
查看下一个建议Alt+]Option+]
查看上一个建议Alt+[Option+[
逐词接受Ctrl+→Cmd+→
打开建议面板Ctrl+EnterCtrl+Enter

建议面板

Ctrl+Enter 打开完整建议面板,可以查看 Copilot 生成的最多 10 个不同方案,选择最合适的。

调整建议行为

json
// .vscode/settings.json
{
  // 禁用特定语言的补全
  "github.copilot.enable": {
    "*": true,
    "plaintext": false,
    "markdown": false,
    "yaml": true
  },
  // 内联建议显示延迟(毫秒)
  "editor.inlineSuggest.showToolbar": "onHover"
}

企业版特性

GitHub Copilot Enterprise 和 Business 版本提供额外的团队协作功能:

知识库(Knowledge Base)

企业版可以将内部代码库、文档和规范添加为知识库:

在 Copilot Chat 中引用知识库:
@github 根据我们的内部 API 规范,/explain 这段代码是否符合规范?

代码引用检测

json
// 开启代码引用追踪(企业合规需求)
{
  "github.copilot.advanced": {
    "codeReferencesEnabled": true
  }
}

内容排除

在仓库或组织层面排除特定文件,防止 Copilot 将其作为训练上下文:

yaml
# .github/copilot-content-exclusions.yml
paths:
  - "**/*.env"
  - "secrets/**"
  - "internal-docs/**"

审计日志

企业版管理员可查看团队的 Copilot 使用情况,包括:

  • 建议接受率(acceptance rate)
  • 按语言的使用分布
  • 活跃用户统计

VS Code 深度集成

推荐的扩展组合

GitHub Copilot          ← 核心补全功能
GitHub Copilot Chat     ← 对话式 AI 功能
GitHub Pull Requests    ← PR 审查中的 AI 摘要

工作区设置优化

json
// .vscode/settings.json
{
  // 减少补全请求的噪音
  "github.copilot.editor.enableAutoCompletions": true,
  
  // 在测试文件中开启更多建议
  "github.copilot.advanced": {
    "length": 500,
    "temperature": ""
  },
  
  // 快速访问 Copilot Chat
  "workbench.panel.defaultLocation": "right"
}

在代码审查中使用 Copilot

在 VS Code 的 PR 视图中,Copilot 可以:

  • 自动生成 PR 摘要
  • 解释特定的代码变更
  • 建议潜在问题
在 PR 差异视图中,右键选中的代码:
→ Copilot → Explain This Change
→ Copilot → Suggest Fix

工作流整合建议

TDD 工作流

1. 写测试(手动或 /tests 生成)
2. 运行测试(红灯)
3. 让 Copilot 补全实现代码
4. 运行测试(绿灯)
5. 请 Copilot Chat /optimize 重构

代码审查前检查

在提交 PR 前,在 Copilot Chat 中运行:
> /fix 检查这段代码中是否有明显的 bug 或安全问题
> @workspace 这次修改是否与现有的错误处理模式保持一致?