GitHub Copilot 如果提供了足够的上下文,它可以根据个人偏好、团队的工作方式、你使用的工具或项目的具体信息来定制响应。 可以创建自定义说明,自动为你添加此信息,而不是重复将此上下文详细信息添加到提示中。 附加信息不会显示,但可供 Copilot 用于生成更高质量的响应。
自定义说明的类型
GitHub Copilot 命令行界面 (CLI) 支持来自以下位置的指令。
除非下表中另有说明,否则 Copilot 命令行界面(CLI)会在标准位置中查找存储库指令文件和代理指令文件:存储库根目录、当前工作目录、它们之间的各级中间目录,以及其正在处理的文件所在路径中的任何嵌套目录。 模块化指令文件(即与 *.instructions.md 匹配的那些文件)是路径特定的——带有 applyTo 值的文件仅适用于与之匹配的文件。
| 位置 | 范围和行为 |
|---|---|
$HOME/ | 适用于所有存储库的用户级说明。 |
$HOME/ | 模块化的面向用户说明。 |
.github/ | 在标准位置中发现的整个代码库指令。 |
.github/ | 在标准位置而非中间目录中发现的模块化存储库说明。 |
AGENTS.md | 在标准位置中发现的代理指令。 有关详细信息,请参阅 agentsmd/agents.md 存储库。 |
CLAUDE.md | 在标准位置找到的代理说明。 |
Copilot 命令行界面(CLI) 也使用 .claude/CLAUDE.md。 | |
GEMINI.md | 在标准位置中发现的代理指令。 |
在 COPILOT_CUSTOM_ 中列出的目录 | 附加的 AGENTS.md 和 *.instructions.md 文件。 用逗号分隔多个目录。 |
如果设置了 COPILOT_HOME 环境变量,Copilot 命令行界面(CLI) 将使用该目录而不是 $HOME/.copilot 作为两个用户级指令位置。
使用 /instructions 命令可查看为当前会话发现的说明文件,并启用或禁用各个文件。
多个指令文件如何交互
当存在多个适用的用户级和仓库级指令文件时,Copilot 命令行界面(CLI) 会合并这些指令。 它删除相同的用户级别 copilot-instructions.md、存储库范围和代理指令的副本,但不定义这些文件之间的一般优先顺序。 避免矛盾的指令。
仅当特定于路径的说明的 applyTo 值与 Copilot 命令行界面(CLI) 正在处理的文件匹配时,才会包含这些说明。 使用 /instructions 禁用的说明文件不包括在内。
创建全仓库内的自定义指令
-
在存储库的根目录中,创建名为
.github/copilot-instructions.md的文件。创建
.github目录(如果尚不存在)。 -
以 Markdown 格式在该文件中添加自然语言说明。
系统会忽略说明信息间的空格,因此可将信息编写为一个段落,每个段落位于一行上,或用空白行分隔,以保持其可读性。
有关编写有效自定义说明的帮助,请参阅 关于自定义GitHub Copilot 响应。
引用其他文件
在.github/copilot-instructions.md、AGENTS.md或CLAUDE.md中,使用@后跟相对路径,以包含另一个文件。
Copilot 命令行界面(CLI) 会立即读取被引用的文件,并支持被引用文件中的引用。
引用的文件必须保留在存储库中,或在本地说明的自定义说明目录中。 绝对路径以及以 ~/ 开头的路径不会被加载。 文件引用不会在 GEMINI.md 或 *.instructions.md 文件中展开。
创建路径特定的自定义指令
-
如果尚无
.github/instructions目录,则创建该目录。 -
(可选)创建用于组织指令文件的子目录
.github/instructions。 -
创建一个或多个
NAME.instructions.md文件,其中NAME指示指令的用途。 文件名必须以.instructions.md结尾。 -
在文件开头,创建包含
applyTo关键字的前辅文块。 使用 glob 语法指定指令应用于的文件或目录。例如:
--- applyTo: "app/models/**/*.rb" ---可以通过用逗号分隔多个模式来指定这些模式。 例如,若要将指令应用于仓库中的所有 TypeScript 文件,可以使用以下前辅文块:
--- applyTo: "**/*.ts,**/*.tsx" ---Glob 示例:
*- 会匹配当前目录中的所有文件。**或**/*- 均会匹配所有目录中的所有文件。*.py- 将匹配当前目录中的所有.py文件。**/*.py- 将以递归方式匹配所有目录中的所有.py文件。src/*.py- 将匹配.py目录中所有src文件。 例如,src/foo.py和src/bar.py但_不_src/foo/bar.py。src/**/*.py- 将以递归方式匹配目录中的所有.py文件src。 例如 、src/foo.py``src/foo/bar.py和src/foo/bar/baz.py。-
`**/subdir/**/*.py` - 将递归匹配任意深度下任意 `subdir` 目录中的所有 `.py` 文件。 例如,`subdir/foo.py`、`subdir/nested/bar.py`、`parent/subdir/baz.py` 和 `deep/parent/subdir/nested/qux.py`,但不匹配_不_`foo.py`包含 `subdir` 目录的路径。
-
或者,为了防止文件被 Copilot云代理 或 Copilot 代码评审 使用,将
excludeAgent关键字添加到 frontmatter 区块中。 使用"code-review"或"cloud-agent"。例如,以下文件将仅由 Copilot云代理 读取。
--- applyTo: "**" excludeAgent: "code-review" ---如果在 front matterblock 中不包括关键字
excludeAgent,则 Copilot 代码评审 和 Copilot云代理 都将使用您的说明。 -
使用 Markdown 格式以自然语言添加自定义指令。 系统会忽略说明信息间的空格,因此可将信息编写为一个段落,每个段落位于一行上,或用空白行分隔,以保持其可读性。
正在使用的自定义说明
对自定义说明文件所做的更改不会立即可用于活动 CLI 会话。 若要应用更改,请退出当前会话,然后恢复它(例如运行 copilot --continue),或启动新会话(例如, /new 从交互式会话中使用)。
延伸阅读
- 支持不同类型的自定义说明
- 自定义说明 — 精选的示例集合
- 使用自定义指令来激发Copilot代码评审的强大功能