使用Github Copilot自动按规范文档生成全部代码
简介
Github Copilot是一个强大的 AI 编程助手,他是GitHub上的一个商业性的项目(需要订阅),也是一个插件,本例在Vscode中使用。
借助于Copilot,可以实现
1、代码补全;
2、下一步建议;
3、也可以完整的生成代码计划,生成代码
文章目标
前两点在Vs code中可以无缝的直接应用。通过 ctrl+I 指令,可以在代码编辑窗体,可以在 Copilot chat窗体,也可以在终端窗体中,随时拉起Copilot交互,提供建议。
本例子中是通过完整的一套markdown(包含需求文档和编程规范),让copilot 完整的按照需求及项目规范(包括项目结构,技术规范,代码规范,逻辑规范,事件消息规范)生成整套代码,并编译测试完成。
结果展示
目录结果:
- AGENTS.md 中要求的
目录结构
UnionActivity.Backend/
├── Controllers/
├── Services/
├── Repositories/
├── Models/Entities/
├── DTOs/
├── MappingProfiles/
├── Validators/
├── Middlewares/
└── Extensions/
- 实际AI生成的

代码风格
-
AGENTS.md中要求的
- 服务层示例:IActivityService 包含 Task<PagedResult
> GetPublishedActivitiesAsync(ActivityQuery query) 等方法。 - 依赖注入:在 Program.cs 中注册 Scoped 生命周期。
- Redis 缓存:在服务构造函数中注入 IDistributedCache,缓存活动列表 10 分钟,主动失效。
- API 示例:
csharp[HttpGet] public async Task<IActionResult> GetActivities([FromQuery] ActivityQueryParams @params) { var activities = await _activityService.GetActivitiesAsync(@params); return Ok(activities); } - 服务层示例:IActivityService 包含 Task<PagedResult
-
实际生成的:
-
服务层:

-
controller层:

功能要求:
- 需求文档(requirements.md):

- skills约束:

- 实际生成



先总结:
对于 中小型的项目 ,文档结构目录没有那么复杂的(当然大型建议拆分成多个中小型),严格按照项目需求,规范要求,定义好项目规范文档的话,GitHub Copilot可以很方便的生成你想要的项目。
步骤
环境准备
-
1、安装VS Code
-
2、安装"GitHub Copilot"插件:
-
从VS Code 左侧的"扩展"图标(或按 Ctrl+Shift+X)中,搜索 GitHub Copilot Chat 安装。
-
安装 OAI Compatible Provider for Copilot 来管理模型,可以使用这个插件,在Copilot Chat 模型中、CLI模式中 使用 智谱等大模型

-
登录并授权:
安装后,VS Code右下角会出现一个较小的Copilot图标。点击它,按提示登录你的GitHub账号并授权。

-
Github Copilot 虽然是一个插件,但是也是一个商业付费软件,没有订阅的用户可以在此期间选择 Copilot Free,
从2026年6月1日起,Copilot 将调整收费模式,仍然对 Free的用户限制使用频次,对 pro 或 pro+ 用户分别是10美元和39美元的月费
不过Chat模式下的代码补全功能,是免费的。
-
指令分类
| 名称 | 操作 |
|---|---|
| `斜杠命令 (/) | 用快捷键快速指定任务类型,如 /tests(生成测试)、/fix(修复代码)、/explain(解释代码)、/docs(生成文档)。 |
| 上下文引用 (#)` | 在提示中引用特定文件(#file)、文件夹(#folder)或代码块(#selection),提供精准上下文 |
| 聊天参与者 (@) | 召唤特定领域的"专家",如 @workspace(理解整个项目)、@terminal(终端操作)等 |
常用指令
| 指令名称 | 作用 |
|---|---|
| /explain | 解释你选中的代码是如何工作的 |
| /tests | 为选中的函数或类生成单元测试。 |
| /fix | 让Copilot分析并尝试修复选中的错误代码。 |
| /clear | 清空当前聊天会话,开启新对话。 |
| /new | 开启一个新的、专注于特定任务的聊天会话 |
| /plan | 在进行大型开发前,使用Plan代理生成一份详细的实现计划。 |
| /init | 按照你编写的Markdown初始化项目目录结构,生成对应的内容本例子中主要使用了此命令。 |
| @workspace | 在聊天中引用整个工作区,让Copilot基于项目上下文回答问题。 |
交互模式
-
Chat (聊天模式) 一个可以直接对话的AI助手,可以询问代码相关问题,或让它根据你的指令完成特定任务。
打开方式
-
侧边栏聊天 (Chat View):点击 VS Code 左侧活动栏的"聊天"图标,或使用快捷键 Ctrl+Alt+I(Windows/Linux) / Cmd+Alt+I(macOS)。
-
内联聊天 (Inline Chat):在编辑器中选中代码,按 Ctrl+I(Windows/Linux) / Cmd+I(macOS)即可调出。
-
快速聊天 (Quick Chat):按快捷键 Ctrl+Shift+I(Windows/Linux)/ Cmd+Shift+I(macOS)调出快速输入框,提问后即可关闭。
-
-
Agent Mode (代理模式): 这是它"智能体"特性的核心体现。是按照命令和提示,它会自主分析、规划步骤、创建修改文件、运行终端命令、执行测试,并根据结果自我修正,像一个初级开发者那样去完成任务。
打开方式
- 将聊天模式切换至 Agent:点击侧边栏或内联聊天输入框旁的Agent下拉菜单,选择 "Agent"
步骤
准备目录
1、在项目目录下创建 .github目录,
目录结构
.github
├── copilot-instructions.md # 全局编码规范与技术栈约束
├── AGENTS.md # AI 代理角色与协作流程
├── requirements.md # 需求文档 至关重要
├── agents/ #指定某个模块或者某个子项目的agent,这里可以直接认为是一个角色,比如后端专家,前端专家,是 按子项目或者大模块划分
│ ├── backend.agent.md # 后端开发专用代理
│ ├── frontend.agent.md # 前端 UniApp 代理
│ ├── database.agent.md # 数据库设计代理
│
├── skills/
│ ├── activity-management-skill.md # 活动管理全流程技能
│ ├── export-statistics-skill.md # 数据导出与统计分析技能
│ └── rbac-skill.md # 角色权限控制技能
├── hooks/
│ └── pre-generation-hook.md # 钩子,在xxx事件触发时要执行的一些动作,本例中加入了,每次 AI 生成代码前的一些动作
├── instructions/
│ ├── backend-implementation.instructions.md # 后端整体开发指引约束
│ ├── frontend-implementation.instructions.md # 前端整体开发指引约束
│ └── redis-integration.instructions.md # 数据库设计详细说明约束
│
├── prompts/ # 一次性模板,特定任务执行时,会按照模板执行
├── api-design.prompt.md # 当需要设计新 API 时的模板
├── database-schema.prompt.md #生成新表时的模板
├── unit-test.prompt.md #使用 xUnit + Moq 测试服务层时的模板
每个文件的作用
-
- AGENTS.md(多代理协作说明)
-
作用:通常是一个项目级文档,描述有哪些 AI 代理、各自职责、协作流程。它本身不是 Copilot 直接执行的指令文件,而是给人(和 AI 的上下文)阅读的。但在 Copilot Chat 中,如果用户问"如何协作",AI 会参考它。Copilot 的"Agent Mode"或自定义代理(*.agent.md)是真正可调用的。
-
生效时机:当用户使用 /agent 命令或明确请求某个代理角色时,AI 会读取对应的 *.agent.md 文件,而 AGENTS.md 更多是说明性文档。
-
- agent.md(或 *.agent.md,如 backend.agent.md)
-
- hook.md(钩子文件)
-
作用:在特定事件(如代码生成前/后、文件保存前)执行自定义逻辑。类似于 Git hooks 或 IDE 的脚本钩子。
-
生效时机:理论上是在代码生成之前或之后,但由于 Copilot 没有内置钩子系统,通常需要人驱动或AI 自觉遵守(通过指令要求 AI 在输出前自我审查)。
-
区别:hook.md 是动作触发,而其他文件是状态定义或模板。
-
- skills.md / *.skill.md(技能文件)
-
作用:描述如何完成某个功能模块或业务流程(例如"活动报名"的实现步骤、缓存策略、并发控制)。它不是可执行代码,而是知识文档。在 Copilot 中,可以通过 @workspace 引用这些文件,或要求 AI "参考 skills/activity-management-skill.md 实现报名功能"。
-
生效时机:当用户明确要求参考该技能,或 AI 自动检索到相关文档时。如果放在 .github/skills/,Copilot 可能会将其作为上下文的一部分(取决于模型检索能力)。更可靠的做法是用户在对话中 @ 引用。
-
- prompt.md(提示文件)
-
- instructions.md(如 backend-implementation.instructions.md)
作用:提供分步骤的开发指南,通常用于指导开发者(或 AI)按顺序完成一系列任务。在 Copilot 中,可以作为路径级指令文件(.github/instructions/ 下),当编辑特定文件时自动注入;也可以通过 @ 引用。
-
生效时机:
如果放置在 .github/instructions/ 目录下,并设置了 applyTo 字段,则当用户打开匹配的文件路径时,Copilot 会自动加载该指令(类似上下文增强)。
也可以手动要求 AI 遵循该指令。
-
区别:instructions.md 侧重于过程指导(先做什么,后做什么),而 copilot-instructions.md 是全局编码规范;agent.md 是角色行为定义。
- instructions.md(如 backend-implementation.instructions.md)
实例
本文实例也是借助于 deepSeek 生成,但是得把握以上的重要点和区分,可以在代码生成后,通过指定命令再补齐,
但是一定要注意的是,所有的md文件尽量清晰,但是 不可以互相重叠,冲突 ,宁可缺少细节,但是 不能互相冲突,错乱
需求(requirements.md)

copilot-instructions.md

AGENTS.md

指定Agent.md

hook.md

instructions.md

prompts.md

skills.md

与Copilot 交互
- 1、以上文件都准备好后,本例是通过OAI Compatible Provider for Copilot 选择了 glm5.1大模型
- 2、 在 copilot的chat 窗口内输入的 /init命令,
- 3、copilot自动开始工作
-
review了 所有的 文件

-
制定了生成计划

-
生成前后端代码

此处必须 高亮突出 :代码生成中 完全遵循了 agent及intrustions中的规范和所有的约束,全部按照md中的示例及要求生成。
-
开始调试

-
调试完成

以上全部都自动完成,至此,约花去共15wtoken
-
启动项目
- 因为本地数据库和redis都已启动,服务端完全没有任何操作,连 restore都不用,直接就通过 IDE就成功启动了,
- 前端项目运行npm install ,npm run dev:h5等命令均出现错误【分析是因为本次指令中 要求 通过 Uniapp模式生成,此模式对H5支持本来就需要调试】
- 注意调试中出现的错误,需要手动 在chat窗口中与 copilot交互,来进行修复,此处要多次操作允许copilot执行,与设置的安全级别有关。
- 注意可直接输入错误,并输入要求,也可采用/fix等指令来让copilot执行

调试错误很耗费token,一共又花去了15w token
经验
Markdown 文档一定要指令清晰,要职责分明,不能互相冲突 ,重要的部分 比如需求文档,colipot-instructions.md ,各个 Agent.md,各个skill.md 是不可少的。一次性模板,可以后续通过明确指令 再让 Copilot执行添加。
中小型的项目可以很方便通过此模式 直接生成。
但是比较 耗费token
copilot free 模式,限制也比较大