英语轻松读发新版了,欢迎下载、更新

超越及时的手工制作:如何成为AI对程序员的更好伙伴

2025-07-09 16:07:37 英文原文

作者:Christopher Harrison

当开发人员第一次开始使用时github副标士(正确地)着重于提示制作或提供良好的上下文和信息以产生高质量建议的艺术。” 

但是上下文不仅仅是在VS代码中键入几行中的几行。我们要确保Copilot在执行操作时要考虑正确的文件,这些文件易于阅读,并且我们为项目或特定任务提供了任何可能需要的额外指导。 

因此,让我们探索采取下一步超越迅速制作的步骤,并考虑一下我们如何成为AI Pair Programmer更好的合作伙伴。

上下文是关键

我总是喜欢从故事开始谈论上下文。前几天,我和我的伴侣醒了,她说,让我们去早午餐!谁不爱早午餐? 

我推荐了一个地方,这是我们的最爱之一,她说:“您知道我们最近去过那里。我想尝试一些不同的事情。让我们找到一个很好的华夫饼干的地方。

当然,这种对话很正常。我的伴侣问了一个问题,我回答说,她提供了更多的背景,我们来了。根据我的信息,我所有的建议都是完全合理的,而当她听到她期望的东西时,她提供了更多的指导。当我们继续交谈时,她意识到自己渴望华夫饼,当她考虑了我的建议时,她发现了这一点。

这是我们俩都与他人交谈的方式,也是我们如何使用包括副铜在内的生成AI工具来处理的。我们提出问题,得到答案并来回工作,以提供更多的背景,并根据我们的看法做出决定。 

如果我们没有收到我们期望的建议,或者如果我们想到的规格构建了某些东西,那么副驾驶很可能没有必要的背景,就像我在与伴侣交谈的时候没有新的上下文。

GitHub Copilot如何与代码合作

要了解IDE中的Copilot如何获得上下文,重要的是要了解其工作原理。除了代理模式,执行外部任务,Copilot不会在生成代码建议时构建或运行代码。实际上,它的行为与配对的程序员非常相似。它读取我们将其指向的文件的代码(和注释),就像另一个开发人员一样。 

但是,与队友不同,Copilot没有机构知识,也没有经验带来的背景信息(尽管您可以添加自定义说明,但稍后会更多)。这可能就是为什么以某种方式构建事物的历史(这不是在某个地方记录的,而是每个人都知道ð),即应该始终使用的内部库或框架,或者需要遵循的模式。

显然,所有这些背景信息对于从Copilot获得正确的代码建议都很重要。例如,如果我们使用数据抽象层(DAL),但是Copilot正在生成RAW SQL代码,那么这些建议将是如此有用。” 

问题不是Copilot生成无效的代码。取而代之的是,缺乏以我们需要的格式和结构生成代码的上下文。基本上,我们想要华夫饼,它给我们一个煎蛋。让我看看我们可以做些什么来获得华夫饼。

人们普遍认为,高质量的代码不应该注释,而添加评论是一种代码气味,或表明可以改善某些东西的迹象。虽然努力编写尽可能可读的代码是崇高的,但我们在日常工作中常常缺少这一点。

即使我们击中标记,我们也需要记住,仅仅因为代码对一个开发人员来说可能是可读的,这并不意味着所有开发人员都可以阅读。几行评论可以确保可读性有很长的路要走。

副驾驶也是如此!正如我们上面突出的那样,除非在特定情况下,Copilot不运行或编译您的代码。相反,它像开发人员一样读取您的代码。 

遵循有关Docstrings例如,在Python中的功能/模块中,可以帮助确保Copilot更好地了解代码的作用以及它的作用。这使Copilot可以通过使用您现有的代码来确保任何新代码遵循相同的模式和实践,从而生成更高质量的建议。

ð专家提示当您打开文件时,将其保持比您找到的状态更好的状态总是一个好主意。您可以做出的一点改进是在有助于描述代码的地方添加一些评论。您总是可以要求Copilot生成评论的初稿,并且您可以添加任何其他详细信息副标题副标题!

在您的项目上使用GitHub Copilot使用自定义说明的好处

为了产生高质量的建议,副驾驶受益于您所做的事情以及您如何做的情况。了解您使用的技术和框架,遵循哪些编码标准,甚至有关您的重新构建的一些背景,有助于副本提高其建议的优质条。这是自定义说明发挥作用。

自定义说明可帮助您提供所有这些背景信息并设置基本规则(诸如您要调用的API,遵循所需的命名模式,甚至是风格的偏好)。 

首先,您将所有重要的内容都放在名为的文件中Copilot-Instructions.md你内心.github文件夹。这是一个降价文件,因此您可以创建类似的部分项目结构,,,,技术,,,,编码标准,以及您希望Copilot在每个聊天请求中考虑的任何其他笔记。您还可以在您看到Copilot并不总是选择正确的路径的任务上添加任何指导,例如使用基于类的React组件而不是基于功能的组件(所有很酷的孩子都使用基于功能的组件)。

请记住,自定义说明已发送到Copilot每一个聊天请求。您想将指示仅限于与整个项目相关的信息。提供太多的细节可能会使副驾驶确定重要的事情变得更加困难。

用更简单的话来说,您基本上可以考虑一个您拥有的一个朋友,他们在讲故事时可能会分享太多细节,以及如何将重点放在主要情节上的棘手。副驾驶也是如此。提供一些项目级别的指导和概述,因此最好理解它的工作环境。

一个好的经验法则是拥有突出项目各个方面的部分。Web应用程序的MonorePo的大纲可能看起来像这样:

#Tailspin玩具人群资金网站为游戏资金提供资金。##后端后端是使用以下方式写的: -  API的烧瓶 -  sqlalchemy for the Orm - 数据库的sqlite## 前端前端使用:-Astro用于路由 - 组件和互动性的苗条 - 用于造型的尾风CSS##代码标准 - 使用良好的变量名称,避免缩写和单个字母变量 - 使用有关语言的套管标准(用于打字稿的骆驼缩,snake_casing for python等) - 使用所有支持它们的语言中的类型提示##项目结构 - `client`包含前端代码 - `docs'包含项目的文档-`脚本'包含用于安装服务,启动应用程序并运行测试的脚本 - `server'包含后端代码

这是相对缩写的,但请注意结构。我们向Copilot讲述了我们拥有的项目,其结构,使用的技术以及有关如何创建代码的一些指导。我们没有任何特定于任务的东西,例如编写单元测试,因为我们有另一种告诉副柯洛特这些信息的方法!

为特定任务提供特定说明

继续我们关于教学文件的对话�(我是Gen-X,所以我需要至少使用一次Gen-X

VS代码和代码还支持.md.md文件。这些就像Copilot-Instructions.md我们之前谈到的文件,只有它们是为特定类型的任务使用的文件.github/指令。考虑一个您重新建立的项目

瓶蓝图对于API的路线。可能有关于如何构造文件以及如何创建单元测试的要求。您可以创建一个称为的自定义说明文件烧瓶-Endpoint.instructions.md,将其放在.github/指令,然后在请求Copilot创建新端点时将其添加为聊天中的上下文。看起来像:

#端点创建指南##端点注释 - 使用蓝图在烧瓶中创建端点 - 创建用于访问数据的集中式函数 - 所有端点都需要测试 - 使用`untest`模块进行测试 - 所有测试必须通过 - 提供了一个脚本来运行“脚本/run-server-tests.sh”的测试。##项目注释 -  python虚拟环境位于项目的根部** venv **文件夹中 - 在“服务器/app.py”中注册所有蓝图 - 创建测试时,请使用[测试指令](./ python-tests.instructions.md)##原型文件 -  [端点原型](../../服务器/routes/games.py) -  [测试原型](../../服务器/tests/test_games.py)

请注意,我们如何提供有关如何创建终点的特定信息。您还会注意到我们甚至链接到其他文件在项目中使用超链接 - 两个现有文件以供副本用作代表性示例,以及其他说明文件以获取更多信息。

此外,您还可以根据模式将指令应用于文件类型。让我们以测试为例。如果他们都位于服务器/测试,然后从测试_,您可以将元数据添加到顶部,以确保Copilot在处理测试文件时始终包含说明:

---申请:服务器/测试/测试_*。py---

这为您提供了很大的灵活性,以确保Copilot能够在正确的时间访问正确的信息。可以通过在指令文件中添加或隐式为构建某些文件时使用的模式来显式地完成。

就像以前一样,这些都是您的存储库中的工件。构建指令文件的集合可能需要一些时间,但是该投资将以高质量的代码的形式获得回报,进而提高了生产率。

完全可重复使用的提示

VS代码团队最近发布了一个新的实验功能,称为提示文件。因为他们仍在发展中,所以我不想深入研究它们,但是您可以阅读更多有关在文档中提示文件并查看如何在当前实施时使用它们。简而言之,它们允许您有效地为Copilot创建脚本提示。您可以选择可用的副本模式(询问,编辑和代理),要调用的工具以及要问开发人员的问题。这些可以由团队创建,以增强重复使用和一致性。

使用模型上下文协议(MCP)扩展GitHub Copilot的功能

在不断变化的软件开发环境中,我们需要确保与之合作的信息是准确,相关且最新的。这是MCP或模型上下文协议的目的!MCP最初是由人类学开发的,是一种开源协议,可让组织将其服务或数据公开为生成的AI工具。” 

当您将MCP服务器添加到IDE中时,您允许副驾驶员打电话给朋友查找信息,甚至代表您执行任务。例如,剧作家MCP服务器帮助创建剧作家端到端测试,而GitHub MCP服务器提供对诸如存储库,问题和拉请请求之类的GitHub服务的访问权限。

可以说,例如,您将剧作家MCP服务器添加到IDE中。当您要求Copilot创建一个新的测试以验证网站上的功能时,Copilot可以咨询权威来源,从而可以生成最佳代码。

您甚至可以创建自己的MCP服务器!我通常听到的一个问题是关于如何允许副柯洛特通过内部代码库或库的套件来查看。使用自定义MCP服务器,您可以为Copilot提供执行这些类型的查询的外墙,然后利用发现的信息根据您的内部环境建议代码。

MCP足够大,可以拥有自己的博客文章,我的同事Cassidy写了这篇文章有关MCP的技巧,技巧和见解

超越提示的思考

让我清楚:及时的制作很重要。这是任何开发人员开始使用Github Copilot时都应该学习的第一批技能。 

但是写一个好的提示只是副副总裁在生成答案时考虑的。通过使用上面突出显示的最佳实践 - 评论和良好的代码,自定义说明和MCP服务器 - 您可以帮助Copilot了解您想要做什么以及如何完成它。为了使它回到我的类比,您可以确保副驾驶知道何时想要华夫饼而不是煎蛋。

因此,我要早午餐。

开始github副词>


写的

Christopher Harrison

高级开发人员倡导者Github

关于《超越及时的手工制作:如何成为AI对程序员的更好伙伴》的评论


暂无评论

发表评论

摘要

本文讨论了与Github Copilot有效合作的策略,而不仅仅是制作提示。它强调提供足够的上下文和指导以确保副本生成与项目要求一致的质量代码建议的重要性。这包括在代码中添加注释,使用项目中的自定义说明文件,并利用模型上下文协议(MCP)服务器访问相关数据或服务。这些方法有助于副驾驶更好地了解特定于项目的细节并遵守编码标准,从而增强其作为开发援助的效用。