如何给 GitHub Copilot “洗脑”,让 AI 精准遵循指令产出高质量代码

引子

最近在项目中使用 GitHub Copilot 的过程中,我发现了一个很有趣的现象。

当我让 Copilot 帮我写代码时,它总是热情满满地给出一大段实现。但当我仔细审视这些代码时,却经常会发现各种小问题——缺少错误处理、异常情况没考虑、命名不规范、没有单元测试,有时甚至会出现一些”魔法数字”。

这让我想起了那些刚入行的程序员,技术不错,但是对软件工程的规范和最佳实践还不够了解。他们写出来的代码能跑,但总让资深工程师皱眉头。

这些 AI 工具确实能提高效率,但如何让它们不仅提高效率,更能精准地产出符合工程实践的高质量代码,甚至达到一种”洗脑”般的效果,让它们乖乖听话,这成了一个值得思考的问题。

不是魔法,是系统指令

经过一段时间的研究和实践,我发现 Copilot 这类 AI 工具实际上可以被深度”引导”,甚至达到一种”洗脑”的效果,让它们按照我们的意愿来行动。

它们并不是魔术盒子,而是遵循一套输入-输出原则的系统。如果我们能给它提供明确的指导和原则,它就能相应地调整自己的输出。

这个思路促使我整理了一个专门用来给 GitHub Copilot”洗脑”的指令集:prompts

这个仓库里不是代码,而是一系列指导 AI 行为的 Markdown 文件。每个文件就像是给 AI 的一份规范或指南,告诉它应该怎样思考和行动。

这套指令能解决什么问题?

使用 AI 编程助手时,我们通常会遇到这些问题:

  • 生成的代码能运行,但结构混乱,难以维护
  • 没有考虑边界情况和异常处理
  • 代码风格不一致,命名随意
  • 缺乏适当的测试覆盖
  • 不遵循项目已有的架构模式

这套指令集就是为了解决这些问题而设计的。它告诉 AI 该如何思考软件设计、如何编写清晰的代码、如何进行测试驱动开发,以及如何分解复杂问题。

指令集的构成

整个指令集分为几个主要部分:

  1. 核心行为定义:这部分告诉 AI 应该如何进行思考和工作,包括:

    • 如何保持项目知识的连贯性(memory-bank)
    • 如何有条理地回应用户(response-and-prompt-guidelines)
    • 如何遵循 TDD 工作流(programming-workflow)
    • 如何分解复杂任务(workflow-and-task-splitting)
  2. 代码质量规范:这部分告诉 AI 什么是好代码,什么是坏代码:

    • 代码标准和最佳实践(code-standards)
    • 代码异味和应避免的反模式(avoid-bad-smells)
    • 如何编写有效的测试(testing-guidelines)
  3. 流程模板:这部分提供了从需求到实现的结构化方法:

    • 如何将模糊的想法转化为明确的计划(req)
    • 如何协助业务分析师编写用户故事(ba)
  4. 工具使用指南:这部分包含了一些高级技巧:

    • 如何使用顺序思考解决问题(sequential-thinking)
    • 快捷指令系统(shortcut-system-instruction)

这些指令是怎么起作用的?

你可能会好奇,为什么一些 Markdown 文件就能让 AI 变得这么听话?

我在研究这些指令的时候发现,它们其实就是几个简单的套路。比如,我给 AI 安排了不同的”角色”——有时候它是个健忘的工程师(所以必须写文档),有时候它是业务分析师的助手。这样一来,AI 就会按照角色来思考问题。

还有一个很有效的技巧是强制它”慢思考”。很多指令都要求 AI 必须一步一步地展示思考过程,不能直接给答案。这就像我们做数学题时要求”列出解题步骤”一样。

最有意思的是”自我批判”这一招。我发现如果让 AI 在给出解决方案后,再强制它自己找毛病,代码质量会提升很多。就像程序员写完代码后再做一遍 code review。

另外,我还设计了一些结构化的模板。比如写测试用例必须按照固定格式,写需求必须一个章节一个章节地来。这样 AI 就没法偷懒,必须把每个环节都考虑到。

说白了,这套指令的核心就是不让 AI “想当然”。它必须按照预设的流程来工作,该问的问题不能跳过,该考虑的边界情况不能遗漏。

如何在实际工作中使用这套指令

经过实践,我发现在 VS Code 中配置 Copilot 使用这些指令非常简单:

  1. 打开 VS Code 设置(Ctrl+, 或 Cmd+,)
  2. 搜索 github.copilot.chat.codeGeneration.instructions
  3. 添加指向指令文件的配置,例如:
1
2
3
4
5
6
7
"github.copilot.chat.codeGeneration.instructions": [
{ "text": "避免生成与公共代码完全匹配的代码" },
{ "file": "../prompts/.github/instructions/req.md" },
{ "file": "../prompts/.github/instructions/ba.md" },
// 其它指令文件...
{ "file": "../prompts/.github/instructions/shortcut-system-instruction.md" }
]
 

需要注意的是,文件路径要正确。这里的路径是相对于你的 workspace 的。如果你的 prompts 仓库和当前项目不在同一位置,可能需要调整路径。

设置完成后,你会发现 Copilot 生成的代码质量明显提升:更规范、更健壮、考虑更周全。

一点思考

给 AI 工具”洗脑”,或者说深度引导它们,其实和带新人有些相似 —— 你需要清晰地表达期望,提供良好的指导和范例,然后持续进行纠正和反馈。

这不是一项精确的科学,而是一个持续改进的过程。不同项目可能需要对指令进行一些定制和调整,以适应特定的技术栈和团队风格。

对我来说,这套指令系统的价值不仅在于提升了 AI 工具的输出质量,更在于它促使我思考:什么是好的代码?什么是好的软件工程实践?这些思考反过来又能帮助我们在日常工作中做得更好。


如果你也在使用 AI 编程助手,不妨试试这套指令。如果有任何想法或改进建议,欢迎到 prompts 仓库提交 PR 或 Issue。

原创作者: cuipengfei 转载于: https://www.cnblogs.com/cuipengfei/p/18933709
### AI辅助编写代码的工具和方法 随着人工智能技术的发展,越来越多的AI工具被应用于软件开发领域,特别是在代码编写的自动化方面。这些工具不仅能够显著提升程序员的工作效率,还能降低初学者的学习门槛。 #### 工具概述 目前市场上存在多种用于辅助编写代码AI工具,它们通过自然语言处理、机器学习等技术提供智能化支持。以下是几类主要的AI辅助编码工具及其功能特点: 1. **GitHub Copilot** GitHub Copilot 是由 OpenAIGitHub 联合推出的一款基于 GPT 的插件式 IDE 扩展程序。它可以根据上下文自动生成完整的函数实现甚至整个文件的内容[^2]。用户只需输入简单的描述或者部分逻辑框架即可获得推荐代码片段。 2. **通义灵码** 阿里云推出的通义系列之一——通义灵码专注于中文环境下的开发者需求,特别适合国内用户的习惯与场景。其强大的多模态理解能力使得即使是复杂业务场景也能轻松应对。 3. **CodeWhisperer (Amazon)** Amazon 提供了一个名为 CodeWhisperer 的服务,该服务不仅能实时建议下一行应该写什么代码,还可以生成单元测试用例来验证现有代码是否正确无误[^3]。这对于希望减少手动创建繁琐测试工作的团队尤其有价值。 4. **DeepSeek 模型集成至 IDEA** 对于那些偏好离线操作而不依赖云端资源的人来说,可以考虑利用 DeepSeek 这样的大型预训练模型并通过特定配置将其嵌入到 JetBrains IntelliJ IDEA 中去完成日常任务如补全语句等功能[^4]。 5. **其他常见选项** - **CodeGeeX**: 支持超过十种主流编程语言转换翻译以及跨平台迁移改造工作。 - **Cody by Modality Labs**: 主打安全性和隐私保护,在企业内部署时尤为适用。 - **CodiumAI / AskCodi**: 更加注重社区互动交流反馈机制建设,鼓励共同进步成长。 #### 方法论探讨 除了具体产品之外,还有一些通用的方法可以帮助更好地运用上述提到的各种类型的AI助手来进行高效的代码创作过程: - 使用清晰简洁的语言表达意图给定提示(prompt),以便让算法更准确地捕捉所需信息并作出相应反应; - 定期评估所接收回来的结果质量水平,并据此调整后续交互方式直至满意为止; - 结合传统手工艺技巧同现代科技手段相结合形成互补优势最大化效益产出; 总之,无论是哪一种形式的技术解决方案都离不开持续不断的实践探索精神驱动前行! ```python # 示例:借助GitHub Copilot快速构建Python脚本 def calculate_area(radius): """Calculate the area of a circle given its radius.""" pi_value = 3.14159 result = pi_value * (radius ** 2) return round(result, 2) print(calculate_area(7)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值