DevToolBox免费
博客

GitHub Copilot 使用技巧 2026:提示工程、Chat、测试生成与 Agent 模式

11 分钟作者 DevToolBox

GitHub Copilot 已成为开发者的必备工具,据研究显示可提高 30-55% 的生产力。然而,许多开发者只触及了 Copilot 功能的表面。本指南涵盖高级技巧、提示工程策略和工作流集成。

GitHub Copilot 工作原理

Copilot 使用在公共代码库上训练的大语言模型来生成代码建议。它分析你的当前文件、打开的标签页、最近的编辑和注释来预测你想写什么。

上下文窗口

Copilot 在生成建议时考虑多个上下文源:当前文件、编辑器中打开的标签页、文件路径和名称、导入的模块以及最近的编辑历史。

// Copilot context sources (ranked by importance):
// 1. Current file content (most important)
// 2. File name and path (e.g., src/utils/date.ts hints at date utilities)
// 3. Open tabs in your editor
// 4. Imported modules and their types
// 5. Recent edits and cursor position
// 6. Comments and JSDoc annotations

// PRO TIP: Name your files descriptively
// "helpers.ts" -> vague context
// "date-formatting-utils.ts" -> Copilot knows to suggest date formatting code

Copilot 的提示工程

Copilot 建议的质量很大程度上取决于你如何编写代码和注释。每个注释、函数名和类型注解都是给 AI 的提示。

注释驱动开发

在代码之前编写描述性注释来引导 Copilot。注释越具体,生成的代码越准确。

// BAD: vague comment
// sort the data
function sortData(data) { ... }

// GOOD: specific comment with details
// Sort users by last login date, most recent first.
// Users who have never logged in should appear at the end.
// Preserve original array (return new sorted array).
function sortUsersByLastLogin(users: User[]): User[] {
  // Copilot will generate accurate sorting logic
}

// GREAT: step-by-step comments for complex logic
// 1. Filter out inactive users (status !== "active")
// 2. Group remaining users by department
// 3. Sort each group by join date (ascending)
// 4. Return a Map<department, User[]>
function organizeActiveUsers(users: User[]): Map<string, User[]> {
  // Copilot follows the steps precisely
}

函数签名作为提示

带有描述性参数名的类型化函数签名是强大的提示。

// Type annotations guide Copilot significantly

// BAD: no types, vague name
function process(data) { ... }

// GOOD: typed, descriptive name
function calculateMonthlyRevenue(
  transactions: Transaction[],
  month: number,
  year: number
): { total: number; count: number; average: number } {
  // Copilot will generate accurate calculation logic
}

// JSDoc enhances suggestions further
/**
 * Converts a file size in bytes to a human-readable string.
 * @param bytes - File size in bytes
 * @param decimals - Number of decimal places (default: 2)
 * @returns Human-readable string like "1.5 MB" or "300 KB"
 * @example formatBytes(1536) // "1.5 KB"
 * @example formatBytes(1073741824) // "1 GB"
 */
function formatBytes(bytes: number, decimals = 2): string {
  // Copilot generates the exact implementation
}

提供示例

当 Copilot 第一次没有生成正确代码时,提供期望输入/输出的示例。

// Provide examples for pattern-based code generation

// Convert snake_case to camelCase
// "user_name" -> "userName"
// "first_name_last" -> "firstNameLast"
// "already_camelCase" -> "alreadyCamelCase"
function snakeToCamel(str: string): string {
  // Copilot follows the pattern from examples
}

// Generate test data following a pattern
const testUsers = [
  { id: 1, name: "Alice", email: "alice@example.com", role: "admin" },
  { id: 2, name: "Bob", email: "bob@example.com", role: "user" },
  // Copilot continues the pattern...
  // { id: 3, name: "Charlie", email: "charlie@example.com", role: "user" },
];

必备键盘快捷键

掌握这些快捷键以高效使用 Copilot。

ActionMacWindows/Linux
Accept suggestionTabTab
Dismiss suggestionEscEsc
Next suggestionOption + ]Alt + ]
Previous suggestionOption + [Alt + [
Open Copilot panel (10 suggestions)Ctrl + EnterCtrl + Enter
Inline ChatCmd + ICtrl + I
Open Copilot ChatCmd + Shift + ICtrl + Shift + I
Accept wordCmd + Right ArrowCtrl + Right Arrow
Accept lineCmd + EndEnd

Copilot Chat

Copilot Chat 在编辑器中提供交互式 AI 助手,可以解释代码、修复 bug、生成测试和回答问题。

斜杠命令

Copilot Chat 支持用于常见任务的斜杠命令。

// Copilot Chat slash commands (type in chat panel):

/explain    - Explain how the selected code works
/fix        - Propose a fix for problems in the selected code
/tests      - Generate unit tests for the selected code
/doc        - Generate documentation for the selected code
/optimize   - Analyze and improve performance of selected code
/clear      - Clear the chat history
/new        - Scaffold a new project or file

// Examples:
// Select a function, then type: /explain
// Select buggy code, then type: /fix
// Select a class, then type: /tests using vitest
// Type: /new create a REST API with Express and TypeScript

上下文引用

使用 @ 引用指向特定上下文:@workspace 用于整个项目,@file 用于特定文件。

// Context references in Copilot Chat:

@workspace  - Search and reference your entire workspace
@file       - Reference a specific file
@terminal   - Reference terminal output
@selection  - Reference currently selected code

// Examples:
// "How does authentication work in @workspace?"
// "What does @file:src/utils/auth.ts do?"
// "Fix the error shown in @terminal"
// "Refactor @selection to use async/await"

// Combining references for powerful queries:
// "Based on @file:src/types.ts, generate CRUD endpoints
//  for the User type in @file:src/routes/users.ts"

高级模式

测试生成

Copilot 擅长生成测试。提供要测试的函数和期望行为的清晰描述。

// Tip: Write one test manually, Copilot generates the rest

import { describe, it, expect } from "vitest";
import { formatBytes } from "./utils";

describe("formatBytes", () => {
  it("should format bytes correctly", () => {
    expect(formatBytes(0)).toBe("0 Bytes");
  });

  // Copilot generates remaining tests:
  it("should format kilobytes", () => {
    expect(formatBytes(1024)).toBe("1 KB");
  });

  it("should format megabytes", () => {
    expect(formatBytes(1048576)).toBe("1 MB");
  });

  it("should handle decimal places", () => {
    expect(formatBytes(1536, 1)).toBe("1.5 KB");
  });

  it("should handle negative numbers", () => {
    expect(formatBytes(-1)).toBe("0 Bytes");
  });
});

正则表达式帮助

Copilot 特别擅长编写和解释正则表达式。用自然语言描述你想匹配的内容。

// Describe what you want to match in natural language:

// Match email addresses (RFC 5322 simplified)
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

// Match US phone numbers: (555) 123-4567, 555-123-4567, 5551234567
const phoneRegex = /^\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;

// Match ISO 8601 datetime: 2026-02-23T10:30:00Z
const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/;

// Match semantic version: 1.2.3, 1.0.0-beta.1, 2.1.0+build.123
const semverRegex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$/;

最佳实践

  • 接受前始终仔细审查生成的代码
  • 保持打开的标签页相关。关闭不相关的文件以提高上下文质量
  • 使用 TypeScript 获得更好的建议。类型注解大幅提高准确性
  • 编写具体的注释
  • 如果第一个建议不对就拒绝并重新提示
  • 对复杂任务使用 Copilot Chat
  • 创建 Copilot 指令文件用于项目特定指导
  • 不要在没有专家审查的情况下将 Copilot 用于安全敏感代码
  • 利用 Copilot 处理模板代码、测试生成和文档,将精力集中在架构和业务逻辑上

安全注意事项

虽然 Copilot 功能强大,但需要注意安全性。

  • 永远不要不审查就接受建议的凭据或 API 密钥
  • Copilot 可能建议有已知漏洞的代码
  • 始终验证和清理用户输入
  • 与安全专家一起审查加密代码建议
  • 使用 Copilot 内容排除防止敏感文件被发送到模型
  • 启用代码扫描以捕获生成代码中的安全问题

Copilot Workspace 和 Agent 模式

GitHub Copilot 持续进化。Copilot Workspace 允许使用自然语言计划、实施和审查整个仓库的变更。Agent 模式允许自主完成多步骤任务。

Copilot Workspace

Copilot Workspace 接收 GitHub issue 并生成计划、指定文件变更、实施变更并创建 PR。

VS Code 中的 Agent 模式

Agent 模式允许 Copilot 自主执行多步骤任务:运行终端命令、读写文件并基于错误迭代。

// Agent mode example prompts:

// "Add input validation to all API endpoints in src/routes/"
// -> Copilot scans files, adds Zod validation, runs tests

// "Refactor the auth module to use JWT instead of sessions"
// -> Copilot plans changes, modifies files, updates tests

// "Fix the failing CI tests in the latest PR"
// -> Copilot reads test output, identifies issues, applies fixes

// "Add dark mode support to all components"
// -> Copilot identifies components, adds theme variables, tests

// Agent mode workflow:
// 1. You describe the task in natural language
// 2. Copilot creates a plan with file changes
// 3. You review and approve the plan
// 4. Copilot executes: edits files, runs commands, iterates on errors
// 5. You review the final result

常见问题

GitHub Copilot 值 10 美元/月吗?

对专业开发者来说,值得。研究显示 Copilot 提高 30-55% 的生产力。免费层足够轻度使用。

Copilot 支持所有编程语言吗?

Copilot 支持所有主要编程语言,但对 TypeScript、JavaScript、Python、Go 等效果最好。

Copilot 能理解整个代码库吗?

Copilot 有有限的上下文窗口。主要使用当前文件和打开的标签页。使用 @workspace 搜索整个项目。

Copilot 生成的代码可以用在专有项目中吗?

GitHub 表示 Copilot 建议是生成的而非从特定仓库复制的。启用重复检测过滤器以获得额外保护。

Copilot 和 ChatGPT 编程有什么区别?

Copilot 集成在编辑器中并直接访问代码库上下文。ChatGPT 需要复制粘贴代码。Copilot 更适合内联编码,ChatGPT 更适合架构讨论。

𝕏 Twitterin LinkedIn
这篇文章有帮助吗?

保持更新

获取每周开发技巧和新工具通知。

无垃圾邮件,随时退订。

试试这些相关工具

±Text Diff Checker{ }JSON Formatter#Hash Generator

相关文章

TypeScript 5 新特性:装饰器、const 类型参数与 satisfies 运算符

TypeScript 5 新特性完全指南:装饰器、const 类型参数、satisfies 运算符及性能改进。

Git 分支策略:GitFlow vs 主干开发 vs GitHub Flow

对比 GitFlow、主干开发和 GitHub Flow 分支策略。学习分支结构、合并工作流、CI/CD 集成,以及如何为你的团队选择合适的策略。

Zod 验证指南:Schema、转换、精细化与 tRPC 集成

TypeScript 中 Zod 模式验证完全指南:定义 schema、数据转换、自定义精细化与 tRPC 集成。