拒绝调戏 AI:Copilot 的 .instructions.md 与 .prompt.md 深度实战指南

我发现很多人用 GitHub Copilot 还是停留在“聊天”的阶段。遇到问题问一句,代码写不出来描述一下。这没错,但效率太低了。这就好比你雇了个哈佛毕业的助理,结果每天只让他帮你倒咖啡。

真正的的高手,是把 Copilot 调教成懂你习惯、知你深浅的“私人助理”。

今天我们不谈虚的,直接聊聊 VS Code 中 Copilot 的两个核心配置文件:.instructions.md(你的底线)和 .prompt.md(你的技能包),顺便把聊天框里那些让人眼花缭乱的 @#/ 符号一次性讲清楚。

为什么你需要“配置文件”?

你有没有这种经历:每次让 AI 写代码,都要强调一遍“用 Python”、“必须加 Type Hints”、“注释用中文”。如果不说,它就给你乱飞。

这就是因为你没有给它立规矩。

在 VS Code 的 Copilot 体系里,我们有两种方式来固化这些规矩和套路:

  1. .instructions.md:这是宪法。它是全局的、强制的、隐式的。
  2. .prompt.md:这是剧本。它是特定的、按需的、显式的。

1. .instructions.md:立下你的“家规”

对于 AI 来说,.instructions.md 就是强制性的规则。它就像是公司的员工手册。你不需要每次都告诉新员工“不要在代码里留 print”,写在手册里,他入职第一天就知道了。

它是干嘛的?

这个文件里的内容会被自动添加到 Copilot 的每一次对话上下文中(System Prompt)。也就是说,无论你问什么,AI 都会先读一遍这个文件,然后再回答你。

怎么用?

通常我们会在项目根目录或者 .github/ 目录下创建(具体取决于你的 VS Code 配置或扩展支持,有时也通过 User Settings 配置)。

我通常会在里面写什么?

  • 技术栈锁定: “本项目强制使用 Python 3.12 + FastAPI,禁止使用老旧的 os.path,统一使用 pathlib。”
  • 代码风格: “变量名必须清晰,禁止使用 x, y, temp 这种无意义命名。”
  • 语言偏好: “无论我用什么语言提问,你必须用中文回答。”
  • 行为准则: “不要跟我客套,不要说’好的,这是您的代码’,直接给代码!”

实战效果
一旦配置好,你再也不用废话了。你直接扔一段乱七八糟的旧代码过去,它吐出来的就是符合你团队规范的、干净整洁的新代码。


2. .prompt.md:打造你的“技能包”

如果说 .instructions.md 是被动生效的底线,那 .prompt.md 就是你主动发起的大招

它是干嘛的?

VS Code 允许我们在 .github/prompts/ 目录下创建以 .prompt.md 结尾的文件。这些文件定义了特定的任务模板。

怎么用?

假设你经常需要做 Code Review(代码审查)。以前你可能要打一长串字:“请帮我审查这段代码,检查安全性、性能、命名规范,并用 Markdown 表格输出报告…”。

现在,你可以创建一个 .github/prompts/CodeReview.prompt.md 文件,把上面那段话(以及更详细的要求)写进去。

文件结构示例:

1
2
3
4
5
6
---
name: codereview # 指令名称
description: 全方位的代码审查专家
model: gpt-4o # 指定使用的模型
tools: [] # 允许调用的工具列表
---

配置参数全解:

别小看这几行配置,它们决定了你的 AI 助理有多大能耐:

  • name (必填):你的“召唤咒语”。设为 codereview,聊天框输入 /codereview 即可触发。
  • description (选填):给指令加个说明书。当你输入 / 时,它会显示在提示列表里,治好你的健忘症。
  • model (选填):指定大脑。有些复杂的逻辑(比如架构设计),必须指定 gpt-4o 这种聪明的大脑;简单的改变量名,用默认的就行,省钱省时。
  • tools (选填):赋予手脚。这是最强大的地方!
    • 如果不填,它只是个陪聊的。
    • 加上 tools: [read_file],它就能读取你项目里的文件。
    • 加上 tools: [run_terminal],它甚至能帮你执行命令(慎用!)。

示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
name: codereview # 指令名称
description: 全方位的代码审查专家
model: gpt-4o # 指定使用的模型
tools: [] # 允许调用的工具列表
---
# Role
你是一位拥有10年经验的架构师,以严厉著称。

# Goal
审查用户提交的代码,重点关注:
1. 安全性(SQL注入、XSS)
2. 性能陷阱(N+1查询)
3. 可维护性

# Output Format
请严格按照以下 Markdown 格式输出:
...(这里放你的模板)...

爽点在哪里?

配置好之后,在 Chat 窗口里,你只需要输入 /codereview,Copilot 就会立刻加载这个“剧本”,变身严格的代码审查员。

我之前写过一篇关于 Code Review 的指南,其实核心就是利用了这个机制。把复杂的提示词工程化、文件化,让团队里的每个人都能用上一模一样的高标准 Prompt,这才是工程化的思维。


3. 玩转聊天框:@#/

有了上面两个神器,我们在聊天框里的操作就如虎添翼了。但很多人对这三个符号还是傻傻分不清楚。依我看,它们分别代表了:找谁看啥干啥

@ (At):摇人 —— 你在跟谁说话?

Copilot 不仅仅是一个聊天机器人,它背后有很多“Agent(代理)”或“参与者”。

  • @workspace:这是最常用的。你问它问题,它会去检索你整个项目的文件。如果你不加这个,它可能只知道你当前打开的这个文件,或者在那瞎编。
    • 场景:“@workspace 这个项目里负责处理用户登录的逻辑在哪里?”
  • @terminal:专门管终端的。
    • 场景:终端报错了一大堆红字,直接输入 @terminal 帮我看看这个报错是啥意思,它会自动读取终端的上下文。
  • @vscode:管编辑器的。
    • 场景:“@vscode 怎么把侧边栏移到右边去?”

# (Hash):喂料 —— 你要给它看什么?

这是上下文引用的神器。AI 再聪明,你不给它资料它也分析不出来。

  • #file:精准投喂文件。
    • 用法:敲 # 然后选文件。比你复制粘贴代码优雅一万倍,而且不会因为代码太长被截断。
  • #selection:投喂你选中的代码。
    • 用法:选中一段代码,输入 #selection 解释这段逻辑
  • #codebase:类似于 @workspace 的检索能力,显式地告诉它“去翻翻我的代码库”。

/ (Slash):下令 —— 你要它做什么?

这就是触发技能的快捷键。

  • 内置指令
    • /fix:修复代码错误(配合 #selection 简直是改 Bug 神器)。
    • /explain:解释代码。
    • /tests:生成单元测试(懒人福音)。
  • 自定义指令
    • 这就是我们前面说的 .prompt.md 发挥作用的地方!
    • 当你创建了 CodeReview.prompt.md,你就有了一个自定义的 /codereview 指令。

总结:别让 AI 猜你的心思

很多程序员觉得 AI 笨,其实是因为你没给它足够的上下文和明确的指令。

  • .instructions.md 设定底线,保证输出风格的统一。
  • .prompt.md 封装复杂任务,把重复劳动变成一键调用。
  • 熟练使用 @#/,精准控制上下文和意图。

工具的价值,取决于使用它的人。别再把 Copilot 当成搜索引擎用了,把它配置成你的左膀右臂吧。