Skip to content

GitHub Copilot custom instructions(自定义指令)让你把项目规范、编码风格、技术栈偏好写进 Markdown 文件,Copilot 每次生成代码时都会参考这些上下文。对于团队开发,这是统一 AI 输出风格的关键工具,类似 Claude Code 中的 CLAUDE.md

GitHub Copilot 自定义指令:用 .github/copilot-instructions.md 控制 AI 行为

什么是 custom instructions

custom instructions 是存放在仓库里的 Markdown 文件,Copilot 在处理你的请求时会自动读取并参考它们。你不需要每次手动粘贴背景信息——这些指令会静默附加到每次对话中。

和 Claude Code 的 CLAUDE.md、Kiro 的 steering 文件功能类似,是 AI 编程工具的通用"项目规范注入"机制。

三种指令文件类型

1. 仓库全局指令(最常用)

文件位置:.github/copilot-instructions.md

对整个仓库的所有请求生效。适合写:

  • 项目架构说明
  • 技术栈和版本约束
  • 命名规范、代码风格
  • 测试框架和规范

示例内容:

markdown
# 项目规范

## 技术栈
- 前端:React 18 + TypeScript 5
- 后端:Node.js 20 + Fastify
- 数据库:PostgreSQL 15,使用 Drizzle ORM

## 编码规范
- 所有函数必须有 JSDoc 注释
- 使用函数式组件,禁止 class 组件
- 错误处理使用 Result 模式,不抛出裸 Error

## 测试
- 使用 Vitest,覆盖率要求 80%+
- 所有 API 端点必须有集成测试

2. 路径级指令(VS Code 支持)

文件位置:.github/instructions/NAME.instructions.md

通过 frontmatter 的 applyTo 字段指定适用范围:

markdown
---
applyTo: "**/*.ts,**/*.tsx"
---

TypeScript 文件使用严格模式,所有参数和返回值必须有类型注解。
禁止使用 `any`,用 `unknown` + 类型守卫代替。
markdown
---
applyTo: "**/*.test.ts"
---

测试文件遵循 AAA 模式:Arrange(准备)、Act(执行)、Assert(断言)。
describe 块用中文描述功能,it/test 块用中文描述预期行为。

3. Agent 指令文件

文件名:仓库任意位置的 AGENTS.md

专门为 AI Agent 模式提供上下文,适合描述构建流程、部署环境、危险操作清单等。

如果不想让某个特定 Agent 读取这个文件:

markdown
---
applyTo: "**"
excludeAgent: "code-review"
---

Prompt 文件(可复用的对话模板)

Prompt 文件是 .github/prompts/ 目录下的 .prompt.md 文件,可以把常用的对话模板保存起来重复使用。

markdown
# generate-component.prompt.md

创建一个新的 React 组件,遵循以下规范:
- 使用 TypeScript
- 使用 CSS Modules 样式
- 包含 Storybook Story
- 参考 #file:src/components/Button/Button.tsx 的结构

在 VS Code 中,通过 Chat 附件图标或 Attach context 按钮引用 Prompt 文件。在 JetBrains 中,输入 /generate-component(文件名去掉 .prompt.md)即可调用。

验证指令是否生效

在 Copilot Chat 的回答下方有 References(引用)展开区,如果看到 .github/copilot-instructions.md 出现在列表中,说明指令已被 Copilot 读取。

全局指令(跨仓库生效)

JetBrains 的全局指令文件位置:

  • macOS:/Users/你的用户名/.config/github-copilot/intellij/global-copilot-instructions.md
  • Windows:C:\Users\你的用户名\AppData\Local\github-copilot\intellij\global-copilot-instructions.md

VS Code 也支持通过设置 UI 配置个人级别的 custom instructions(不在仓库文件中,存在用户设置里)。

写指令的几个建议

  1. 具体优于宽泛使用 Vitest 写测试遵循测试最佳实践 有用得多
  2. 描述为什么,不只是说什么禁止使用 any(原因:我们的 runtime 校验层依赖类型推断)
  3. 保持简短:指令太长会稀释关键信息,优先写最影响 Copilot 输出质量的规范
  4. 团队共享:提交进 git,所有团队成员自动获得一致的 AI 行为

常见问题

Q: 仓库指令和个人指令哪个优先级更高?

A: 两者都会被 Copilot 读取并综合考虑,不存在严格的覆盖关系。如果有冲突,Copilot 会尽量调和,但建议避免写相互矛盾的内容。

Q: 自定义指令对 inline suggestions(内联补全)也生效吗?

A: 主要对 Copilot Chat 生效。内联建议也会参考仓库上下文,但自定义指令对内联建议的影响相对有限。

Q: 这和 Claude Code 的 CLAUDE.md 有什么区别?

A: 功能上非常类似,都是向 AI 注入项目规范。格式也都是 Markdown。主要区别在于作用范围:CLAUDE.md 是 Claude Code CLI 读取的,copilot-instructions.md 是 GitHub Copilot 读取的。如果你同时使用两个工具,需要分别维护。