导出设置

预览

2024-09-28 | Visual Studio Code | Using Custom Instructions with Copilot to enhance our prompts

类型: Detailed Summary 模型: gemini-2.5-pro 创建时间: 2025-06-22 11:42

核心摘要

本演示介绍了 Visual Studio Code 1.93 版本中一项名为“自定义 Copilot 指令”的实验性功能。该功能允许用户通过工作区设置,让 Copilot 在处理每个请求时自动引用指定的项目文件(如 Markdown 规范、SQL 数据库定义等),从而赋予其项目上下文感知能力。

演示者通过一个15分钟的实战项目,展示了该功能的强大潜力:
1. 项目结构生成:利用一个定义了代码风格和目录结构的 Markdown 文件,指导 Copilot 成功生成了整个项目的脚手架脚本。
2. 数据模型生成:通过引用一个 SQL 数据库表结构文件,Copilot 能够为指定的 ORM(如 Sequelize 或 Drizzle)精确生成所有数据模型,并正确处理了模型间的复杂关联。
3. 业务与测试代码生成:基于一份购物车服务的功能规范文档,Copilot 自动生成了完整的服务层逻辑及其配套的单元测试代码,并能根据进一步指令优化测试用例。

尽管过程中需要进行少量手动清理,但最终生成的应用程序基础代码成功通过了全部7个测试用例。结论是,自定义指令极大地提升了 Copilot 的智能化水平,使其能遵循项目规范、理解上下文,自动化生成高度定制化的初始代码,从而显著加速开发进程。演示者强调,该功能目前仍处于实验阶段,鼓励用户积极提供反馈。


功能介绍:实验性自定义 Copilot 指令

演示者介绍了 VS Code 2024年8月发布的1.93版本中的“实验性自定义 Copilot 指令”功能。该功能允许用户通过全局或工作区设置,向 Copilot 的聊天会话预置指令或文件引用。这意味着 Copilot 在每次交互时都会首先参考这些预设的上下文,从而使其行为更符合特定项目的需求。该功能目前仍处于实验阶段。

第一步:通过规范生成项目结构

为展示该功能,演示者首先创建了一个 code-style.md 文件,其中定义了项目的推荐目录结构。随后,他在工作区的 settings.json 文件中配置 Copilot 引用此 Markdown 文件。当他向 Copilot 提问如何构建应用结构时,Copilot 准确地根据文件内容给出了建议,并生成了一个 Bash 脚本(init.sh)来一键创建所有必需的目录。

第二步:结合数据库定义生成数据模型

接下来,演示者将一个包含数据库表定义的 SQL 文件(chinook test database)添加到了 Copilot 的自定义指令中。基于此文件,他向 Copilot 发出指令,要求使用 Sequelize ORM 生成数据模型。Copilot 成功地分析了 SQL 结构,生成了精确的 JavaScript 模型代码,甚至正确识别了模型间的关联(associations)、可空性(nullability)、复合主键以及多对多关系。演示者还展示了只需更改提示词,Copilot 就能切换到另一个工具(如 Drizzle)生成相应代码。最后,他让 Copilot 创建了一个自动化脚本(models.sh),用于通过 Sequelize CLI 批量生成所有模型和迁移文件。

第三步:根据服务规范生成业务逻辑与测试

为了生成具体的业务代码,演示者创建了一份新的规范文件 cart.md,详细描述了购物车服务的功能需求,并将其与之前的风格指南一同添加至 Copilot 的指令中。当被要求“生成购物车服务”时,Copilot 同时生成了:
1. 服务逻辑:一个遵循规范的 cart.js 文件,包含添加商品、设置客户等功能,并内置了必要的逻辑校验。
2. 测试代码:一套完整的单元测试用例。

演示者还展示了与 Copilot 的互动优化能力:在指出初始测试用例包含多个断言后,他要求 Copilot 将其重构为“每个测试仅包含一个断言”,Copilot 随即生成了符合要求的优化版本。

最终验证:运行测试与成果

在将生成的代码文件放置到正确的项目目录下、安装了 uuid 等依赖并配置好 Jest 测试环境后,演示者运行了测试。经过对 Copilot 自动生成的额外测试文件进行简单清理后,最终测试套件成功运行,结果显示 7个测试通过 (7 passed)。演示者对 Copilot 生成的代码能够“开箱即用”表示非常惊喜。

核心结论

自定义 Copilot 指令通过赋予 AI “项目感知能力”,使其能够深刻理解项目特有的规范和结构。这种“文档驱动开发”的模式,让开发者可以通过维护规范文档来指导 Copilot 生成高度一致且符合要求的初始代码。在短短15分钟内,一个功能可用的应用基础框架得以构建,证明了该功能在提升开发效率方面的巨大潜力。不过,此功能尚处于实验阶段,其未来发展将依赖于用户的反馈和贡献。