如何给 GitHub Copilot "洗脑”,让 AI 精准遵循指令产出高质量代码
引子
最近在项目中使用 GitHub Copilot 的过程中,我发现了一个很有趣的现象。
当我让 Copilot 帮我写代码时,它总是热情满满地给出一大段实现。但当我仔细审视这些代码时,却经常会发现各种小问题——缺少错误处理、异常情况没考虑、命名不规范、没有单元测试,有时甚至会出现一些”魔法数字”。
这让我想起了那些刚入行的程序员,技术不错,但是对软件工程的规范和最佳实践还不够了解。他们写出来的代码能跑,但总让资深工程师皱眉头。
这些 AI 工具确实能提高效率,但如何让它们不仅提高效率,更能精准地产出符合工程实践的高质量代码,甚至达到一种”洗脑”般的效果,让它们乖乖听话,这成了一个值得思考的问题。
不是魔法,是系统指令
经过一段时间的研究和实践,我发现 Copilot 这类 AI 工具实际上可以被深度”引导”,甚至达到一种”洗脑”的效果,让它们按照我们的意愿来行动。
它们并不是魔术盒子,而是遵循一套输入-输出原则的系统。如果我们能给它提供明确的指导和原则,它就能相应地调整自己的输出。
这个思路促使我整理了一个专门用来给 GitHub Copilot”洗脑”的指令集:prompts。
这个仓库里不是代码,而是一系列指导 AI 行为的 Markdown 文件。每个文件就像是给 AI 的一份规范或指南,告诉它应该怎样思考和行动。
这套指令能解决什么问题?
使用 AI 编程助手时,我们通常会遇到这些问题:
- 生成的代码能运行,但结构混乱,难以维护
- 没有考虑边界情况和异常处理
- 代码风格不一致,命名随意
- 缺乏适当的测试覆盖
- 不遵循项目已有的架构模式
这套指令集就是为了解决这些问题而设计的。它告诉 AI 该如何思考软件设计、如何编写清晰的代码、如何进行测试驱动开发,以及如何分解复杂问题。
指令集的构成
整个指令集分为几个主要部分:
核心行为定义:这部分告诉 AI 应该如何进行思考和工作,包括:
- 如何保持项目知识的连贯性(memory-bank)
- 如何有条理地回应用户(response-and-prompt-guidelines)
- 如何遵循 TDD 工作流(programming-workflow)
- 如何分解复杂任务(workflow-and-task-splitting)
代码质量规范:这部分告诉 AI 什么是好代码,什么是坏代码:
- 代码标准和最佳实践(code-standards)
- 代码异味和应避免的反模式(avoid-bad-smells)
- 如何编写有效的测试(testing-guidelines)
流程模板:这部分提供了从需求到实现的结构化方法:
- 如何将模糊的想法转化为明确的计划(req)
- 如何协助业务分析师编写用户故事(ba)
工具使用指南:这部分包含了一些高级技巧:
- 如何使用顺序思考解决问题(sequential-thinking)
- 快捷指令系统(shortcut-system-instruction)
这些指令是怎么起作用的?
你可能会好奇,为什么一些 Markdown 文件就能让 AI 变得这么听话?
我在研究这些指令的时候发现,它们其实就是几个简单的套路。比如,我给 AI 安排了不同的”角色”——有时候它是个健忘的工程师(所以必须写文档),有时候它是业务分析师的助手。这样一来,AI 就会按照角色来思考问题。
还有一个很有效的技巧是强制它”慢思考”。很多指令都要求 AI 必须一步一步地展示思考过程,不能直接给答案。这就像我们做数学题时要求”列出解题步骤”一样。
最有意思的是”自我批判”这一招。我发现如果让 AI 在给出解决方案后,再强制它自己找毛病,代码质量会提升很多。就像程序员写完代码后再做一遍 code review。
另外,我还设计了一些结构化的模板。比如写测试用例必须按照固定格式,写需求必须一个章节一个章节地来。这样 AI 就没法偷懒,必须把每个环节都考虑到。
说白了,这套指令的核心就是不让 AI “想当然”。它必须按照预设的流程来工作,该问的问题不能跳过,该考虑的边界情况不能遗漏。
如何在实际工作中使用这套指令
经过实践,我发现在 VS Code 中配置 Copilot 使用这些指令非常简单:
- 打开 VS Code 设置(Ctrl+, 或 Cmd+,)
- 搜索
github.copilot.chat.codeGeneration.instructions
- 添加指向指令文件的配置,例如:
1 |
"github.copilot.chat.codeGeneration.instructions": [ |
需要注意的是,文件路径要正确。这里的路径是相对于你的 workspace 的。如果你的 prompts 仓库和当前项目不在同一位置,可能需要调整路径。
设置完成后,你会发现 Copilot 生成的代码质量明显提升:更规范、更健壮、考虑更周全。
一点思考
给 AI 工具”洗脑”,或者说深度引导它们,其实和带新人有些相似 —— 你需要清晰地表达期望,提供良好的指导和范例,然后持续进行纠正和反馈。
这不是一项精确的科学,而是一个持续改进的过程。不同项目可能需要对指令进行一些定制和调整,以适应特定的技术栈和团队风格。
对我来说,这套指令系统的价值不仅在于提升了 AI 工具的输出质量,更在于它促使我思考:什么是好的代码?什么是好的软件工程实践?这些思考反过来又能帮助我们在日常工作中做得更好。
如果你也在使用 AI 编程助手,不妨试试这套指令。如果有任何想法或改进建议,欢迎到 prompts 仓库提交 PR 或 Issue。
如何给 GitHub Copilot "洗脑”,让 AI 精准遵循指令产出高质量代码的更多相关文章
- Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议
在通往"Java技术殿堂"的路上,本书将为你指点迷津!内容全部由Java编码的最佳 实践组成,从语法.程序设计和架构.工具和框架.编码风格和编程思想等五大方面,对 Java程序员遇 ...
- 让 AI 为你写代码 - 体验 Github Copilot
前几天在群里看到有大神分享 Copoilot AI 写代码,看了几个截图有点不敢相信自己的眼睛.今天赶紧自己也来体验一下 Copoilot AI 写代码到底有多神奇. 申请 现在 Copoilot 还 ...
- [转帖]熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science
熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science https://mp.weixin.qq.com/s/hJeJjh0GSUclcoh3Z6mySQ 关注前沿科技 量 ...
- Github Copilot 结合python的使用
之前提交的github copilot技术预览版申请,今天收到准入邮件,于是安上试一试这个准备把我送去电子厂上班的copy a lot ? 官网及申请地址:https://copilot.github ...
- Github Copilot 比在座各位更会写代码。jpg
之前大佬和我安利过 Copilot, 作为一个能用就行的践行者, 我一贯对这些东西都不太感兴趣. 就如我多年VS Code写各种编程语言, jetbrains 全家桶我都懒得搞~ 不过最近看到过Cha ...
- 什么是老板思维,什么是员工思维,深有体会,最近被N个行业洗脑……
什么是老板思维,什么是员工思维,深有体会,最近被N个行业洗脑……
- 【mp3】洗脑循环了!龙珠超 自在极意功 【究极の圣戦】串田アキラ 背景纯音乐
自在极意功情况下发动自带bgm 曲名:究极の圣戦 首先是视频: http://dwz.cn/6Tj2Lq 然后是mp3:度盘下载>> 老外翻唱: 个人翻唱:全民k歌>>
- 解决:GitHub 远程端添加了 README.md 文件后,本地 push 代码时出现错误
一.错误描述 To github.com:compassblog/PythonExercise.git ! [rejected] master -> master (fetch first) e ...
- (诊断)解决GitHub使用双因子身份认证“Two-Factor Athentication”后无法git push 代码的“fatal: Authentication failed for ...”错误
在GitHub上采取双因子身份认证后,在git push 的时候将会要求填写用户的用户名和密码,用户名就是用户在GitHub上申请的用户名,但是密码不是普通登录GitHub的密码. 一旦采取双因子身份 ...
- 推荐几本高质量的Python书籍--附github下载路径
一 为什么要分享? 最近碰到了一些人和事,感触挺大的.就是发现很多类似自己的软件工程师,一旦工作三五年之后,工作中算是一个熟练工,但是进步的脚步突然慢了下来,虽然你在工作中仍旧很努力.到底是什么原因呢 ...
随机推荐
- JOKER可视化开发工具迎来重大更新
为紧跟行业前沿趋势,满足开发者日益增长的需求,我们于2025年3月13日对平台开展了全方位升级.此次更新聚焦前端交互的便捷性.服务端功能的强大性以及通用操作的流畅性,在多方面进行了深度优化.尤为值得一 ...
- MySQL基础架构-架构详解
mysql基础架构图 架构详解 连接器部分 整体功能 建立连接 维持管理连接 校验用户名密码,查询权限 最佳实践 不要在命令行客户端中明文输入密码 -p 中不要使用明文密码 修改权限,需要重新建立连接 ...
- Golang 301永久重定向
比如我要把www.taadis.com永久重定向到taadis.com //main.go package main import ( "log" "net/http&q ...
- Mybatis-Plus中的@TableName 和 table-prefix
简介 本文介绍Mybatis-Plus中的@TableName 和 table-prefix的使用. 介绍 在 MyBatis-Plus 中,@TableName 注解和 table-prefix 配 ...
- Windows开机执行bat脚本
1.编写好bat脚本 2.将脚本复制到: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
- 一个神奇的JS代码,让浏览器在新的空白标签页运行我们 HTML 代码(createObjectURL 的妙用)
前言 目前,网上很多在线运行 HTML 的页面,大都是这样的逻辑: 上面一个代码框 <textera> ,下面一个 <iframe>,然后通过 js,将我们的代码框中的 HTM ...
- toRefs 与 toRef 的详解
一.引言在 Vue 3 的响应式系统里,toRefs 和 toRef 是两个实用的工具函数,它们在处理响应式数据时发挥着重要作用.合理运用这两个函数,可以让我们在操作响应式对象和数组时更加灵活,避免一 ...
- 45分钟从零搭建私有MaaS平台和生产级的Qwen3模型服务
今天凌晨,阿里通义团队正式发布了 Qwen3,涵盖六款 Dense 模型(0.6B.1.7B.4B.8B.14B.32B)和两款 MoE 模型(30B-A3B 和 235B-A22B).其中的旗舰模型 ...
- HttpServletResponse相关
目录 返回给客户端数据:字节流和字符流 解决返回字节流和字符流乱码问题 万能解决乱码 文件下载 tomcat提供的默认下载方式 手动编写的DownloadServlet 返回给客户端数据:字节流和字符 ...
- MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎
本文分享自华为云社区<MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎>,作者:华为云社区精选 从 AI 技术的"火热概念"到"实际业务的落地&quo ...