拒绝调戏 AI:Copilot 的 .instructions.md 与 .prompt.md 深度实战指南
我发现很多人用 GitHub Copilot 还是停留在“聊天”的阶段。遇到问题问一句,代码写不出来描述一下。这没错,但效率太低了。这就好比你雇了个哈佛毕业的助理,结果每天只让他帮你倒咖啡。
真正的的高手,是把 Copilot 调教成懂你习惯、知你深浅的“私人助理”。
今天我们不谈虚的,直接聊聊 VS Code 中 Copilot 的两个核心配置文件:.instructions.md(你的底线)和 .prompt.md(你的技能包),顺便把聊天框里那些让人眼花缭乱的 @、# 和 / 符号一次性讲清楚。
为什么你需要“配置文件”?
你有没有这种经历:每次让 AI 写代码,都要强调一遍“用 Python”、“必须加 Type Hints”、“注释用中文”。如果不说,它就给你乱飞。
这就是因为你没有给它立规矩。
在 VS Code 的 Copilot 体系里,我们有两种方式来固化这些规矩和套路:
.instructions.md:这是宪法。它是全局的、强制的、隐式的。.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 | --- |
配置参数全解:
别小看这几行配置,它们决定了你的 AI 助理有多大能耐:
name(必填):你的“召唤咒语”。设为codereview,聊天框输入/codereview即可触发。description(选填):给指令加个说明书。当你输入/时,它会显示在提示列表里,治好你的健忘症。model(选填):指定大脑。有些复杂的逻辑(比如架构设计),必须指定gpt-4o这种聪明的大脑;简单的改变量名,用默认的就行,省钱省时。tools(选填):赋予手脚。这是最强大的地方!- 如果不填,它只是个陪聊的。
- 加上
tools: [read_file],它就能读取你项目里的文件。 - 加上
tools: [run_terminal],它甚至能帮你执行命令(慎用!)。
示例如下:
1 | --- |
爽点在哪里?
配置好之后,在 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 当成搜索引擎用了,把它配置成你的左膀右臂吧。