news 2026/5/1 6:08:36

技术速递|为 Copilot 编写更佳自定义指令的 5 个技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
技术速递|为 Copilot 编写更佳自定义指令的 5 个技巧

目录

在开始之前

01 为 GitHub Copilot 提供项目概述

02 明确你在项目中使用的技术栈

03 明确你的编码规范

04 解释你的项目结构

05 指引 GitHub Copilot 使用可用资源

额外提示 让 GitHub Copilot 帮你创建自定义指令文件

关于指令文件的最后说明


作者:Christopher Harrison

排版:Alan Wang

本指南提供了编写有效的 GitHub Copilot 自定义指令的 5 个关键技巧,内容涵盖项目概述、技术栈、编码规范、结构和资源,旨在帮助开发者获得更优质的代码建议。

如果你读过我的文章,或者听过我的演讲,你很可能已经听过我那个带点调侃的玩笑:“别对 Copilot 搞消极对抗那一套。”

不过,这个玩笑背后其实有个认真的观点:Copilot 在得到合适的上下文时才能发挥最佳效果。它就像一个新加入的队友,并不能读心(尽管有时看起来像能读心一样)。

Copilot 通常能大致推断出你在做什么以及怎么做,但如果你能把关键点说明清楚——比如你在构建什么、使用的技术栈有哪些、需要遵循什么规则等等——就能避免很多误解和错误。

这也是为什么指令文件如此重要。它能为 Copilot 提供你团队成员通过项目经验才掌握的背景信息和知识。

其中的核心就是copilot-instructions.md文件。每一次 Copilot 的对话或 Agent 请求,都会读取它。

那么,这个文件应该怎么写呢?

为了帮你避免“面对空白文件无从下手”的困境,我整理了每个指令文件都应该包含的五个要点(还会额外附赠一个小技巧——让 Copilot 自己帮你写这个文件)。

在开始之前

在深入更多细节之前,我想先分享一个重要建议:别想太多。撰写说明文档并没有一套固定的 “标准流程”。生成式 AI 的本质是概率性的 —— 这意味着即便是相同的请求,实际输出的结果也可能不同。你的目标不是追求 “绝对正确”,而是 “优化概率”:尽可能引导 Copilot,让它更频繁地给出你期望的答案。

下面提到的 5 部分内容(以及附赠技巧)并非 “强制要求”,而是 “参考建议”。根据我的经验,只要你的指令文件中包含了这些内容,或者至少涵盖了这些内容所指向的关键信息,Copilot 给出的建议质量就会大幅提升。

你可以把这些内容当作 “起点”,再结合自身项目特点、使用的模型类型,以及与 Copilot 的互动经验,不断尝试和调整优化。

01 为 GitHub Copilot 提供项目概述

要是连一款应用是做什么的都不知道,根本没法为它写代码!GitHub Copilot 也是如此——而项目概述指令文件,恰好能在这一点上发挥关键作用。

你的指令文件开头,应当像“电梯演讲”一样概括应用。比如:这款应用是什么?目标用户是谁?核心功能有哪些?内容无需冗长,只需用几句话搭建好背景框架即可。

以下是指令文件中项目概述的示例:

Contoso Companions

本网站为宠物领养机构提供支持服务。机构可入驻平台,管理自身线下站点、待领养宠物信息,并发布相关活动;潜在领养者则能搜索所在地区的可领养宠物、了解各类领养机构,还可提交领养申请。

02 明确你在项目中使用的技术栈

在确定你要构建的内容之后,下一个关键点就是明确你是用什么来构建它的。这包括你使用的后端与前端技术、调用的 API,以及目标测试套件。毕竟,用来创建网站的框架数量本就不断增长。举个例子,或许在你读完这篇博文的时间里,已经有三个新的 JavaScript 框架发布了!

在编写指令文件时,你不需要化身 George RR Martin,写出成段成段的技术细节。相反,可以考虑列出你所使用的技术栈,并加上一两条关于它们用法的简要说明。这将帮助 Copilot 理解它要生成代码的环境。

以下是我工作中使用的一个快速示例,供参考:

## 使用的技术栈 ### 后端 - 使用 Flask 作为 API - 数据存储在 Postgres 中,使用 SQLAlchemy 作为 ORM - 为开发、测试和生产环境分别配置了数据库 - 在端到端测试中,会新建并填充一个数据库,测试完成后再删除 ### 前端 - 使用 Astro 管理核心站点与路由 - 使用 Svelte 实现交互功能 - 使用 TypeScript 编写所有前端代码 ### 测试 - 使用 Unittest 进行 Python 测试 - 使用 Vitest 进行 TypeScript 测试 - 使用 Playwright 进行端到端测试

03 明确你的编码规范

在创建第一个 Pull Request 之前,你需要清楚应该遵循哪些编码规范。其中一部分是关于代码应该如何编写的。比如说,我们在 JavaScript 或 TypeScript 中是否使用分号?Python 是否使用类型提示?使用 Tab 还是空格?(唯一正确答案是:使用分号、使用类型提示,以及——用空格。不接受反驳。)

根据你的项目结构,你可以把编码规范写进技术栈指令文件中。但我通常更倾向于单独设立一个规范部分,因为很多规范会适用于多个语言。我发现这样更便于阅读,而可读性对于可维护性至关重要,而且不同语言和框架之间往往存在共通的指导原则。

你也可以考虑为特定类型的文件使用单独的 .instructions 文件来定义规范,例如所有.astro.jsx文件,或者遵循/tests/test_*.py命名模式的单元测试文件。

专业提示

人们很容易陷入一种循环,不断尝试去寻找给 Copilot 编写提示词或构建指令文件的“完美方式”。但实际上,一个“不完美”的指令文件也远比完全没有文件的效果要好得多。指令文件也应该随着时间演进,就像文档一样。(当然,我们的文档都是随时保持更新的,对吧?)我强烈建议你多做尝试,找出最适合的方法,不要让“完美”成为“良好”的敌人。

这是我自己工作中的另一个示例:​​​​​​​

## 项目与代码规范 - 在任何支持类型提示的语言中,始终使用类型提示 - JavaScript/TypeScript 必须使用分号 - 必须编写单元测试,并且在提交 PR 前必须全部通过 - 单元测试应聚焦于核心功能 - 必须编写端到端测试 - 端到端测试应聚焦于核心功能 - 端到端测试应验证可访问性 - 始终遵循良好的安全实践 - 遵循 RESTful API 设计原则 - 在可行时使用脚本来执行操作

.instructions

https://code.visualstudio.com/docs/copilot/copilot-customization#_use-instructionsmd-files/?wt.mc_id=3reg_webpage_reactor

04 解释你的项目结构

正如编写代码有无数种框架和方式一样,项目结构也有看似无限的组织方法。比如,在一个 monorepo 结构中,你的前端代码可能放在名为frontend的文件夹里。或者叫front-end。或者front_end。或者client。甚至web……

你大概已经明白我要说什么了。

虽然 Copilot 大概率能自己推断出来,但一次简单的 ls 命令就能得出答案。不过,在自定义指令文件中列出项目结构,既能帮 Copilot 省点功夫,也给了你一个机会去提供更多关于文件夹内容的上下文信息。

以下是一个示例:​​​​​​​

## 项目结构 - server/ :Flask 后端代码 - models/ :SQLAlchemy ORM 模型 - routes/ :按资源组织的 API 端点 - tests/ :API 的单元测试 - utils/ :工具函数与辅助方法,包括数据库调用 - client/ :Astro/Svelte 前端代码 - src/components/ :可复用的 Svelte 组件 - src/layouts/ :Astro 布局模板 - src/pages/ :Astro 页面与路由 - src/styles/ :CSS 样式表 - scripts/ :开发、部署与测试脚本 - docs/ :项目文档(需始终保持同步)

05 指引 GitHub Copilot 使用可用资源

几乎每个项目都有一套可用的脚本或资源来辅助开发。这些可能是用于简化环境搭建或运行测试的脚本,也可能是用于生成代码或模板的软件工厂。特别是随着 VS Code 中 MCP 支持以及 Copilot 编码 Agent 的引入,为 Copilot 的 Agent 提供了更多可用工具。

我们已经确认 Copilot 能够发现可用资源,但通过自定义指令文件提供一些指向正确方向的提示,可以提升其准确性和运行速度。

下面是一个示例:​​​​​​​

## 资源 - scripts 文件夹 - start-app.sh:安装所有依赖库并启动应用 - setup-env.sh:安装所有依赖库 - test-project.sh:安装所有依赖库,并运行单元测试和端到端测试 - MCP 服务器 - Playwright:用于生成 Playwright 测试或与网站交互 - GitHub:用于与代码仓库和待办事项(backlog)交互

VS Code 中 MCP 支持

https://code.visualstudio.com/docs/copilot/chat/mcp-servers/?wt.mc_id=3reg_webpage_reactor

Copilot 编码 Agent

https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/extend-coding-agent-with-mcp/?wt.mc_id=3reg_webpage_reactor

额外提示 让 GitHub Copilot 帮你创建自定义指令文件

创建指令文件没有一种完美的方法,有总比没有好。但我们都希望尽量做得正确,或者尽量接近正确。希望上面的指南已经给了你一些灵感!

然而,实际去写文件仍然是一个问题,这可能会让你再次面对“面对空白文件无从下手”的困境。

幸运的是,Copilot 可以帮助你更好地帮助自己!

你可以在 IDE 中使用 Copilot Agent 模式,或者在 GitHub 仓库中为 Copilot 分配一个 Issue,请它帮你生成指令文件。生成的文件可以直接使用,也可以根据需要进行编辑。我们的 Copilot 官方文档中甚至提供了推荐的提示语,用于生成指令文件!精简版的推荐提示如下:​​​​​​​

你的任务是通过添加 .github/copilot-instructions.md 文件,将此仓库“接入”编码 Agent。文件应包含信息,说明当智能体首次接触该仓库时,如何能够最高效地工作。 每个仓库只需执行一次此任务,做好这项工作可以显著提升 Agent 的工作质量,因此请慢慢来,仔细思考,并在撰写指令前进行充分搜索。 ## 目标 - 文档化现有项目结构和技术栈 - 确保遵循既定的开发规范 - 尽量减少 bash 命令和构建失败 ## 限制 - 指令文件不得超过 2 页 - 指令应适用于整个项目 ## 指南 请确保包含以下内容: - 应用功能概述 - 使用的技术栈 - 编码规范 - 项目结构 - 已有工具和资源 ## 步骤 - 对代码库进行全面盘点,查找并查看: - README.md、CONTRIBUTING.md 及其他所有文档文件 - 搜索代码库中类似 HACK、TODO 等标记的解决方案 - 所有脚本,尤其是与构建、仓库或环境设置相关的脚本 - 所有项目文件 - 所有配置文件和 lint 文件 - 记录其他任何可以帮助智能体减少探索或尝试失败的 bash 命令时间的步骤或信息 ## 验证 使用新创建的指令文件实现一个示例功能。利用在构建新功能过程中遇到的失败或错误经验,进一步完善指令文件。

使用上述提示语可以帮助你节省时间,但更重要的是,它还能帮助你理清对任意项目的思路和目标。

为 Copilot 分配一个 Issue

https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/assign-copilot-to-an-issue/?wt.mc_id=3reg_webpage_reactor

Copilot 官方文档

https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions#using-a-single-githubcopilot-instructionsmd-file-1/?wt.mc_id=3reg_webpage_reactor

关于指令文件的最后说明

需要说明的是,提供指令并不能保证生成的代码完美无缺。但拥有一个良好的指令文件,是提升 Copilot 代码建议质量重要的第一步。如果你问我,对于任何使用 Copilot 的项目,拥有一个copilot-instructions.md文件都是必备的。

再次强调——它不需要完美。以以下几个部分为起点,就能打下坚实的基础:

  • 你正在构建内容的简要介绍

  • 使用的框架和技术栈

  • 编码规范及其他项目指南

  • 项目结构及资源位置

  • 可用于自动化和任务处理的资源

从这里出发,你可以进一步探索 .instructions 文件,来为 Copilot 提供更具体的指导。但这一切都始于 copilot-instructions.md。

阅读官方文档,了解更多关于 GitHub Copilot 自定义指令的信息 >

.instructions 文件

https://code.visualstudio.com/docs/copilot/copilot-customization#_use-instructionsmd-files/?wt.mc_id=3reg_webpage_reactor

copilot-instructions.md

http://copilot-instructions.md/?wt.mc_id=3reg_webpage_reactor

阅读官方文档

https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions/?wt.mc_id=3reg_webpage_reactor

原文地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:41:26

Microsoft Agent Framework:微软统一 AI Agent 开发的新基建

目录 为什么又是一个新框架? 1. 图工作流编排 2. 线程化状态管理 3. 原生可观测性 五分钟上手实战 企业级特性加持 迁移成本低 你有没有想过,为什么构建一个 AI Agent 比写个 Web API 还要复杂? 当你试图让多个 AI 协同工作时&#x…

作者头像 李华
网站建设 2026/4/30 10:40:24

Microsoft Agent Framework:让每位开发者都能轻松构建 AI 智能体

目录 智能体和工作流 智能体 工作流 智能体 工作流 认识 Microsoft Agent Framework 建立在经过验证的基础之上 几分钟内构建你的第一个智能体 步骤 0:配置先决条件 步骤 1:设置你的项目 步骤 2:编写你的智能体 抽象的力量 扩展…

作者头像 李华
网站建设 2026/4/23 11:10:32

CodeSpirit.Amis.AiForm 智能表单使用指南

目录 概述 功能特点 使用方法 1. 控制器端配置 2. AI表单特有属性 3. 后端服务实现 3.1 AI任务服务 3.2 AI生成服务 3.3 状态查询API UI界面说明 界面结构 交互流程 轮询机制 任务状态 AiTaskStatus 枚举 AiTaskStatusDto 结构 最佳实践 1. 任务管理 2. 进度…

作者头像 李华
网站建设 2026/4/30 17:02:59

GPEN批量修复成本高?按需GPU计费方案省50%以上费用

GPEN批量修复成本高?按需GPU计费方案省50%以上费用 1. 为什么GPEN批量修复总在“烧钱”? 你是不是也遇到过这种情况:手头有200张老照片要修复,用GPEN WebUI批量处理时,GPU显存占满、风扇狂转、电费蹭蹭涨——结果发现…

作者头像 李华
网站建设 2026/5/1 6:50:27

emuelec音频缓冲优化:操作指南降低延迟卡顿

以下是对您提供的博文《EmuELEC 音频缓冲优化:面向嵌入式复古游戏平台的低延迟音频系统深度解析》进行 全面润色与专业重构后的终稿 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、老练、有“人味”——像一位在树莓派上焊…

作者头像 李华
网站建设 2026/4/16 12:40:30

解锁分布式调度与工作流编排的隐藏能力:从数据孤岛到流程自动化的技术侦探指南

解锁分布式调度与工作流编排的隐藏能力:从数据孤岛到流程自动化的技术侦探指南 【免费下载链接】dolphinscheduler Dolphinscheduler是一个分布式调度系统,主要用于任务调度和流程编排。它的特点是易用性高、可扩展性强、性能稳定等。适用于任务调度和流…

作者头像 李华