VS Code Copilot 核心概念解析:Prompts、Instructions、Skills 与 MCP
在使用 VS Code 的 GitHub Copilot 时,经 常会遇到几个核心概念:Prompts(提示词)、Instructions(指令/规则)、Skills(技能)以及越来越多的 MCP (模型上下文协议) 服务。理解它们的区别和适用场景,能够帮助我们更高效地利用 AI 辅助编程。
1. Prompts (提示词)
是什么: Prompts 是你直接在聊天窗口(Chat)或内联编辑(Inline Edit)中输入给 Copilot 的具体请求和问题。
使用场景:
- 单次、具体的任务:例如“解释这段代码”、“优化这个函数的性能”、“根据以下 JSON 生成 TypeScript 接口”。
- 即时问答:询问 API 用法、查询报错信息等。
关于 .prompt.md (自定义提示词库):
VS Code 支持将常用的 Prompt 固化为文件(存放在用户目录如 User/prompts 或项目工作区 .github/prompts 中,通常为 .prompt.md 或 .prompt)。
- 按需加载机制:这些自定义提示词文件不会默认全部加载到每次对话的上下文中。只有当你在聊天框通过
#或@显式引用(例如#MyPrompt),或是主动触发时,它们的内容才会被注入到当前对话。 - 优势:这种设计既能让你长期沉淀并复用高质量的 Prompt 模板(如:固定的代码审查模板、单测生成结构),又避免了因全局注入导致的 Token 浪费和 AI 注意力分散。
特点:
- 灵活、即席的表达(自定义模板在此基础上提供复用能力)。
- 作用域通常仅限于当前的对话或编辑器上下文,未点名(显式调用)绝不加载。
2. Instructions (指令/系统提示词)
是什么:
Instructions 是一种持久化的配置(通常以 .md 或特定格式存在,如项目级的 .github/copilot-instructions.md 或设置中的全局指令)。它们是在 Copilot 回答你具体 Prompt 之前,被隐式附加到系统级别的规则和上下文。
使用场景:
- 项目级全局规范:强制要求当前项目中所有生成的代码都必须使用特定的代码风格(如:使用单引号,不加分号,优先使用 React Hooks 等)。通常配置在项目根目录的
.github/copilot-instructions.md。 - 跨项目个人偏好:例如“总是用中文回复”、“在解释代码前先给出总结”。可通过 VS Code 设置中的
github.copilot.chat.codeGeneration.instructions配置,对所有项目生效。 - 特定目录/文件约束 (局部生效):通过在
.github/instructions/目录下创建*.instructions.md文件,并在顶部使用 YAML 的applyTo字段,可以实现按需的、局部文件级的系统指令。比如:针对src/components/**/*.tsx的文件才生效特定的 React 规范。 - 框架限定:避免 AI 使用过时的 API(如:“在这个项目中,我们使用的是 Vue 3 的 Composition API,不要使用 Vue 2 的语法”)。
特点:
- 隐式自动加载:无需用户 在每次对话中手动
@或#触发。 - 作用域可控:可以是整个项目(全局),可以是某个用户的跨项目全局(设置级别),也可以是通过
applyTo限制的特定目录或文件。 - 影响 AI 的底层思考框架和输出风格。
3. Skills (技能)
是什么:
Skills 是一种让 Copilot 具备特定领域知识或执行特定复杂任务能力的机制。在某些深度集成的版本中(如借助自动化和 Agent),技能通常表现为一套预定义的复杂操作流程或带有工具调用能力的脚本(例如本工程中的 docs-toc-generator 或 draft-organizer)。
使用场景:
- 领域特定任务:例如一个针对 Docusaurus 项目的特定整理技能,当用户要求“生成目录”时,调用特定的脚本逻辑去扫描文件并生成结果。
- 需要工具调用的多步工作流:例如“整理草稿”,AI 需要先读取草稿文件,然后分析、生成文章,最后分别写入不同的目录。
- 外部系统交互:需要调用各种 API 获取信息后再进行处理。
特点:
- 针对性强,针对特定类型的高级任务。
- 通常涉及文件系统操作、工具(Tools)调用和多步骤的规划。
4. MCP (Model Context Protocol)
是什么: MCP (模型上下文协议) 是一种标准化协议,允许 AI 助手(如 Copilot)安全地连接和访问外部系统、本地数据源或 API。它充当了 AI 模型与非代码环境(如数据库、第三方服务、内部系统等)之间的桥梁。
使用场景:
- 访问外部数据源:例如让 Copilot 直接连接并查询本地的 SQLite/MySQL 数据库,或者从 GitHub/Jira 拉取实时的 Issue 状态进行分析。
- 跨应用系统集成:调用系统级工具(例如 Docker 容器状态查询、Playwright 浏览器自动化控制等)。
- 超越代码的上下文:当解决问题需要参考除当前项目源码之外的动态数据时(例如实时的 API 文档、外部知识库),通过 MCP 协议插件为模型注入额外数据。
特点:
- 打破边界:使 AI 从“仅限于文本和文件编辑器”的工具,变为能与现实世界/外部服务交互的智能体。
- 标准化对接:基于开放协议架构,任何支持 MCP 的服务都可以快速被 AI 接入。
总结比较
| 概念 | 核心作用 | 适用范围 | 示例场景 |
|---|---|---|---|
| Prompts | 表达当前的具体需求 | 单次对话 / 单次编辑 | “帮我写一个正则表达式匹配邮箱” |
| Instructions | 统一输出风格、约束上下文 | 整个项目 / 特切文件目录 / 全局 | “所有前端代码必须使用 TS,且这个目录只用 Vue 3” |
| Skills | 执行特定的复杂工作流或工具任务 | 特定领域的复杂操作 | “调用整理技能,把草稿本的内容分类生成文档” |
| MCP | 连接和查询外部非代码数据源 | 外部 API / 数据库 / 本地服务 | “连接 MySQL 数据库,看看我的这张表结构为什么导致了 ORM 报错” |