用 GitHub Copilot 来开发确实很方便,把需求跟 AI 说明白,基本功能代码就自动实现了。
但是也有一些困扰,比如一些重新性的功能,需要反复说明一些细节。例如,我要实现一个 Excel 导出功能,需要在 Chat 窗口里,输入大量的细节说明,如下:
- 待办列表的导出 Excel 功能
- 实现代码放到 controllers/todo.go 中,函数命名为 ExportTodoExcel
- 列头:序号(从1开始,顺序显示数字),员工类型,所属公司(公司简称),姓名,省份证号,事业部,一级部门,二级部门,三级部门,岗位,年龄,入职日期,合同/协议到期日,合同类型,续签次数,合同期限(固定/无固定),续签(数据空出来就行),续签期限起,续签期限止,备注,员工编号,待办描述,待办状态,待办事项,截止日期
- 支持跟待办列表接口一样的过滤条件
- Excel 的每一列添加过滤器,方便 HR 同事在 Excel 里进行筛选。Deadline (截止日期)列、入职时间、合同/协议到期日、续签期限起、续签期限止,需要转换为日期格式“yyyy-mm-dd", 方便 Excel 过滤器进行年月过滤。注意时区问题,确保转换后的日期是中国时区的日期
- 参考 ExportStaffExcel 接口的实现方式,来实现导出待办列表的 Excel 功能
- 表头配色优化,参考 ExportStaffExcel
- 函数需要添加 Swagger 注释,说明这个接口的功能和参数。主要是方便前端同事理解
- 返回的下载链接需要添加 token 验证,参考 ExportStaffExcel 接口的实现方式,来实现下载链接的安全验证
如果我希望每次添加类似的 Excel 接口时,都参考上面这个规范,而不需要每次都在 Chat 窗口里输入这些细节,那么我应该怎么做呢?
使用 skill 还是 instruction
问了一下 DeepSeek, 回答是:
“每次添加类似的 Excel 接口时,都参考下面的规范”。这说明你需要的是一个持续性、基准性的开发指南,而非一个需要手动触发的复杂任务流。这正是 Custom Instructions(自定义指令) 的典型应用场景。
看看官方的概念定义:
https://github.com/github/awesome-copilot
- Instructions: Coding standards applied automatically by file pattern。即针对特定文件自动应用的编码标准
- Skills: Self-contained folders with instructions and bundled assets。即包含指令和相关资源的独立文件夹
其实我还是有点没有头绪,虽然概念大概了解了。但是到底应该怎么操作呢?我找了 github 官方的一个仓库 Awesome GitHub Copilot,里面有一些示例。
golang instrunction 的示例
https://awesome-copilot.github.com/instructions/?extension=.go
这里可以搜索到各种语言的 instrunction 示例,特地加了 .go 后缀的限制,即只看 golang 的示例。
在网页上直接点击 install 就能自动唤起 VSCode 安装到指定的目录,即可以安装到个人的全局,也可以安装到当前项目中。
我暂时选择了当前项目中。

具体的路径:
.github\instructions\go.instructions.md
之所以没有放全局,我觉得不同项目的代码风格还是有区别的。例如:
- 有的要求用中文注释,有的用英文
- 有的需要写 swagger 文档,有的不需要
Excel 那段 instruction 是否适合放到 golang 的大段 instruction 中
如以这个为例:
https://github.com/github/awesome-copilot/blob/main/.github/copilot-instructions.md
看起来混杂在一起也不是问题。
但是,这么多字,会不会占用对话的上下文?还是说 GitHub copilot 在本地会先提取相关的 instruction,发送到大模型的只是一小部分?
添加示例:
## Excel 导出功能规范
- 支持跟对应列表接口一样的过滤条件
- Excel 的每一列添加过滤器,方便在 Excel 里进行筛选。日期需要转换为日期格式“yyyy-mm-dd", 方便 Excel 过滤器进行年月过滤。注意时区问题,确保转换后的日期是中国时区的日期
- 表头配色要有区分度
- 函数需要添加 Swagger 注释,说明这个接口的功能和参数。主要是方便前端同事理解
- 返回的下载链接需要添加 token 验证,来实现下载链接的安全验证
这个还没测试,不知道具体效果如何。下面试试比较容易测试的 git instruction。
git instruction
我一直有个困扰,就是 VSCode 里用 AI 自动生成 git 提交注释时,总是用英文。
作为土鳖,我还是更喜欢用中文。一直不知道怎么设置成中文,于是在 GitHub copilot chat 对话框里,输入 /create 找到 /create-instructions,然后输入需求就行了。
/create-instructions 提交 git commit 时,请使用中文的描述
然后 GitHub copilot 就自动给我创建好了一个 instruction 文件
.github\instructions\git.instructions.md
目录结构如下:
> tree .github/
.github/
└── instructions
├── git.instructions.md
└── go.instructions.md
1 directory, 2 files
内容如下:
# Git Commit Instructions
## Commit Message Language
- Always use **Chinese** for git commit messages.
- 提交 git commit 时,请始终使用**中文**进行描述。
## Commit Style
- Keep descriptions concise and meaningful.
- 描述应当简洁且有意义。
看起来言简意赅,也没有什么复杂的配置。就是习惯了用参数配置,突然用起自然语言,感觉非常得不适应,也不确定是否靠谱。。。
测试了一下,倒是确实把自动生成的 git 提交注释变成了中文。

非常好,instruction 技能已掌握。感觉自己又专业了许多!
但是,又试了一次,又变成英文的了,垃圾。。。
原来这个配置是在 Settings 里,搜索 git commit message, 参考官方 issue:
https://github.com/microsoft/vscode-copilot-release/issues/526

可以指定文件,或者自然语言配置都可以。例如:
"github.copilot.chat.commitMessageGeneration.instructions": [
{
"text": "请始终使用中文进行描述。"
}
]
github copilot Instruction 的原理
GitHub Copilot Instruction 的核心原理是 “上下文注入”(Context Injection)。它并非通过某种特殊机制去“训练”AI模型,而是将你写下的Markdown指令,在每次发起Copilot Chat对话时,自动作为系统提示词(System Prompt) 的一部分,悄无声息地“注入”到发送给大语言模型(LLM)的完整请求中
关于作者 🌱
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式