Skip to content

在仓库根目录创建 .github/copilot-instructions.md,Copilot 就会在该仓库的所有对话中自动遵循这些指令。本页介绍如何编写有效的仓库级自定义指令,以及路径级精细控制的配置方法。

为 GitHub 仓库添加 Copilot 自定义指令:让 AI 理解你的项目规范

为什么需要仓库级自定义指令

没有自定义指令时,Copilot 只知道通用的编程规范,不了解你的项目特点:

  • 用了哪个框架和版本
  • 测试用什么库、怎么运行
  • 代码风格有哪些约定
  • 有哪些敏感路径需要特殊处理

把这些写入 .github/copilot-instructions.md 后,Copilot 在这个仓库中的所有对话都会自动参考这些背景,不需要每次手动说明。

三种指令文件

1. 仓库全局指令

文件路径.github/copilot-instructions.md

适合放:技术栈信息、构建/测试命令、代码风格约定、项目结构说明。

markdown
## 技术栈
- 运行时:Node.js 20 + TypeScript 5.3
- 框架:Hono(不是 Express,API 参考 Hono 文档)
- 数据库:PostgreSQL + Drizzle ORM
- 测试:Vitest + supertest

## 常用命令
- 开发:`bun run dev`
- 测试:`bun test`
- 构建:`bun run build`(构建前必须通过所有测试)

## 代码风格
- 所有函数必须有显式的 TypeScript 类型注解
- 禁止 `any` 类型
- 错误处理统一用 Result 模式(参考 src/types/result.ts)
- API 响应格式:`{success: boolean, data?: T, error?: string}`

## 目录结构
- src/routes/     - 路由定义
- src/services/   - 业务逻辑
- src/db/         - 数据库模型和查询
- src/middleware/  - 中间件

2. 路径级精细指令

文件路径.github/instructions/*.instructions.md

适合对特定文件类型或目录单独定义约定:

markdown
---
applyTo: "src/routes/**/*.ts"
---
路由文件规范:
- 每个路由文件只负责一个资源(user、post 等)
- 路由方法不包含业务逻辑,调用对应的 Service 处理
- 参数校验使用 zod schema,不手写 if 校验
markdown
---
applyTo: "**/*.test.ts,**/*.spec.ts"
---
测试文件规范:
- 使用 describe/it 结构
- 每个 it 块只测一个行为
- 测试名称用中文描述(中文更清晰)
- 使用 vitest 的 `vi.mock` 做依赖隔离

3. Agent 主指令文件

根目录的 AGENTS.md(也可以是 CLAUDE.md)作为主指令文件,适合放最核心的项目说明。

让 Copilot 帮你生成初始指令

如果不确定怎么写,可以让 Cloud Agent 根据仓库现有代码生成初始版本:

在 GitHub.com 的 Copilot Chat 或 IDE Chat 中:

请阅读这个项目的代码,然后在 .github/copilot-instructions.md 中生成一份
包含技术栈、构建/测试步骤、代码规范和目录结构的初始指令文件

生成后审查内容并根据实际情况调整。

代码审查中使用自定义指令

Copilot 代码审查也会读取自定义指令。可以专门为 Code Review 添加规则:

markdown
## 代码审查指令

进行代码审查时,用中文写评论。

重点检查:
- 所有数据库查询是否有 SQL 注入风险
- API 响应是否暴露了不该暴露的字段
- 新增的外部包是否在 package.json 中锁定了版本

可以在仓库设置 → Copilot → Code review 中启用/禁用代码审查的自定义指令(默认启用)。

指令优先级

当多个指令文件同时存在时,优先级从高到低:

  1. 个人级指令(用户账号级别的配置)
  2. 仓库级 .github/copilot-instructions.md
  3. 路径级 .github/instructions/*.instructions.md
  4. 全局默认

常见问题

Q: 自定义指令文件会影响 Copilot 的响应速度吗?

A: 轻微影响。指令文件会包含在每次请求的 context 中,文件越长,消耗的 token 越多,响应时间可能略有增加。官方建议保持指令简洁(100~200 行以内)。

Q: 路径级指令的 applyTo 支持哪些格式?

A: 支持 glob 语法,例如:**/*.ts(所有 TypeScript 文件)、src/api/**(api 目录下所有文件)、**/*.test.ts,**/*.spec.ts(测试文件,逗号分隔多个 pattern)。

Q: 多个开发者使用同一个仓库,自定义指令对所有人生效吗?

A: 是的,.github/copilot-instructions.md 存储在仓库中,所有有权限的开发者使用 Copilot 时都会自动读取。这样可以确保团队的 AI 使用规范保持一致。