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

入职您的AI同行程序员:设置GitHub副副代表编码代理成功

2025-07-31 17:17:06 英文原文

作者:Christopher Harrison

我们经常将Github Copilot描述为AI同行程序员或团队中的AI成员。借助诸如编码代理这样的代理功能,您可以将问题分配给Copilot,它将努力地在幕后工作,为问题提供了建议的解决方案,甚至无需要求喝杯咖啡。

副本编码代理的大部分初始设置类似于入门新开发人员,例如提供良好的文档并简化设置过程。但是,由于它是AI,因此有几件事使Copilot成为团队成员的独特之处(除了不需要咖啡因之外)。

因此,让我们探索如何完成。我们将首先检查流副副代理的遵循,以及确保Copilot具有生成最佳拉力请求所需的资源的关键策略。

内部Copilot编码代理的工作流程:从发行到审查拉力请求

当您将问题分配给Copilot时,它遵循设定模式:

  1. 为其将创建的代码创建一个分支。
  2. 创建一个拉动请求,以跟踪其工作并与团队进行交流。
  3. 为其工作创建一个包含的环境(在GitHub操作中运行)。
  4. 阅读问题或提示以了解所请求的任务。
  5. 探索项目以确定解决问题的最佳方法。
  6. 迭代朝向解决方案。
  7. 最终确定其工作,更新拉动请求,并通知团队拉力请求已准备好审查。

通过了解这一流程,我们可以努力确保为成功设置副驾驶。

前两个步骤 - 创建拉动请求和分支是独立的,我们没有其他工作要做帮助副驾驶。” 

因此,让我们直接跳到第三步 - 环境中 - 我们可以在该环境中配置所有内容可能需要的一切,其中它会在生成拉动请求时编写代码并运行任务。

使用GitHub操作配置Copilot的环境

为了与新开发人员的类比,让我们考虑Github Copilot或真正任何开发人员从事其工作的环境。在您能够发挥作用之前,您需要安装特定的服务,库和框架。

副驾驶是完全相同的。为了使Copilot添加新功能并运行必要的测试以确保一切正常,它需要访问团队其余部分的所有工具。我们将使用自定义工作流文件来执行此操作。

编码代理使用内部运行的容器github动作。如果您还不熟悉操作,则是我们的自动化平台,并使用YAML文件配置,这些文件描述了需要完成的必要任务。 

操作通常用于CI/CD,因此,诸如测试,部署等的任务。在这种情况下,操作托管容器编码代理将用于其工作。我们可以利用在YAML中脚本脚本任务的能力,以确保正确设置该容器!

ð专家提示:您很有可能已经有一个创建环境的工作流程,可以将其用于开发,就像运行各种测试或验证脚本时使用的环境一样。你绝对可以重复使用这些工作流程用于副铜编码代理的环境!

示例Copilot设置工作流量文件

为此,创建一个新的工作流文件位于.github/workflows/copilot-setup-steps.yml用标题为副标士设定的步骤。在作业内部,您将列出为环境安装必要要求的所有步骤。可以说,例如,我们构建了使用SQLite的Python应用程序。我们可以使用以下工作流量的文件,该文件将运行以设置Copilot的环境:

名称:“ Copilot设置步骤”#更改时会自动运行设置步骤#允许简化验证,#并允许通过存储库的“动作”选项卡进行手动测试在:workflow_dispatch:推:路径: -  .github/workflows/copilot-setup-steps.ymlpull_request:路径: -  .github/workflows/copilot-setup-steps.yml工作:#该作业必须称为`#否则,Copilot将不会捡起它。副标士设定的步骤:运行:ubuntu-latest#仅针对设置步骤设置的权限#Copilot拥有其分支机构的权限许可:#允许我们克隆用于设置的存储库内容:阅读#设置步骤 - 安装Python和我们的依赖项步骤: - 名称:结帐代码用途:Action/Checkout@V4 - 名称:设置Python用途:Action/Setup-Python@V4和:python-version:“ 3.13”缓存:“ pip” - 名称:安装python依赖关系运行:pip install -r sumpliont.txt - 名称:安装sqlite运行:sudo apt Update && sudo apt install sqlite3

每当将问题分配给Copilot时,它将运行此工作流程以配置其环境,以便它具有所需的一切!

ð专家提示:如果您知道应该做些特定的方式,请告诉Copilot!在上面的示例中,Copilot可以自己安装必要的服务。但是,这样做可能会导致意外版本或其他错误。就像我一直喜欢开玩笑的那样,不要对副驾驶被动进取。ð

通过编写良好的问题和提示,将Copilot取得成功

说到不是被动的侵略性,现在是专注于下一步的最佳时机,如下:阅读该问题。这将是Copilot的入口点,以创建您以后的审查。请记住,越清楚地定义了问题,拉动请求质量越好。 

最好的方法是考虑如何你d想查看您在一个新项目上分配的第一个问题。很有可能,您感谢以下内容:

  • 明确定义的问题陈述或用户故事
  • 如果是一个错误,则完整错误消息,堆栈跟踪或输出以及重现问题的步骤
  • 以前尝试过的任何相关历史或方法
  • 有关如何解决问题的建议

副驾驶也是如此。可以说您需要从UNITSESTpytest。当然,Copilot可能会自己弄清楚最好的方法,但是花几分钟时间写出一个好问题,可以很长的路要走,可以确保将Copilot的PR接受并合并到您的代码库中。

这里是一个好问题的一个例子(对于开发人员和副驾驶,都一样!): 

标题:迁移服务器测试从Unitest到Pytest身体:我们希望从Untist到Pytest迁移,以利用一些Pytest特定功能。要求: - 将使用新的pytest测试创建一个称为“迁移_tests”的新文件夹。 - 所有现有的Unitests均使用“迁移_tests”文件夹中的pytest样式重写,保持完全相同的功能和代码覆盖范围。 - 更新文档,突出显示运行新测试所需的迁移和步骤。 - 所有新测试通过。现有资源: - 所有现有测试都存在于“服务器/测试”中 - ``脚本/run-server-tests.sh''有一个脚本,用于运行测试和生成代码覆盖范围报告推荐方法: - 探索现有测试以确定其功能 - 阅读覆盖范围报告以确定现有代码覆盖 - 一一重新创建测试,一路测试,以确保兼容性 - 在最后进行所有测试,以确保一切通过 - 生成一份代码覆盖报告以证明代码覆盖范围已维护 - 生成迁移的文档以及如何运行新测试

让您的存储库欢迎(对于开发人员和AI)

让我们坚持将开发人员加入新团队和项目的类比,我在整个职业生涯中都做了几次。” 

当我在新的某个地方登上船时,我会设置笔记本电脑,并尝试克服我的第一天蝴蝶,因为我知道要做很多工作。抛开有关我焦虑的对话,让我们探索我需要做的一切以提高生产力。

首先,我需要弄清楚应该在哪里以及如何创建我的代码。项目结构是什么?需要遵循哪些规则和准则?我们正在使用标签或空间吗?(当然,正确的答案是空间。)

Github Copilot需要知道这些相同的知识!幸运的是,围绕文档和项目结构的标准最佳实践将有助于相同的方式帮助开发人员。

ð专家提示:了解Copilot如何解决问题可以帮助您改善其使用方式。这是如何做到这一点的:在PR Copilot上创建的您会看到一个查看会话向您显示Copilot所做的一切(如果会话当前处于活动状态)的按钮。这既是验证Copilot的工作并了解其处理任务的好方法。然后,您可以使用此信息进一步完善您分配任务和配置Copilot环境的方法。

优化项目结构和文档,以便快速找到正确的信息

可以说,我们将问题分配给Copilot,并要求其将搜索功能添加到应用程序。当Copilot处理问题时,它要做的第一件事是探索代码库。它会寻找读数文件,与此开发人员不同,实际上读取文档以在编写代码之前了解该项目。它可以在代码库中对与数据库进行交互的任何内容进行搜索,并仔细阅读其发现的文件。然后它将上班。

如果您被分配了任务,这与开发人员可能采用的方法相同。因此,确保项目结构具有资源和实体,以使其对新开发人员的欢迎,从而使每个人(包括您的AI队友)取得成功。

这包括对项目和服务具有强大而最新的回复性,代码中的评论以描述执行操作的内容和方式,以及在命名课程,功能和变量中遵循的良好实践。此外,拥有一个逻辑项目结构,该项目结构遵循公认的文件夹名称和实体分组的最佳实践,将为副驾驶(以及团队的其余部分)提供更可预测的环境。

用副本自定义说明记录机构知识

为副驾驶提供指导的最佳方法之一是通过使用自定义说明。自定义说明就像听起来一样:专门针对副驾驶的一组说明。它们可以涉及您围绕格式代码的各种规则和准则,也可以是所有开发人员固有地知道的机构知识,但是在任何地方都没有写下。

Copilot编码代理支持两种类型的指令文件:Copilot-Instructions.md,范围内存储库,并应用于所有请求,以及<file-name> .instructions.md,可以针对特定类型的文件。

存储库级指令文件

存储在.github/copilot-instructions.md在代码库中,通常与副副标士的所有请求有关的房屋注释。包括的一些关键信息将是:

  • 概述您建立的内容以及如何建立它
  • 任何总体用户故事
  • 使用的框架和库
  • 项目结构,突出显示关键文件和文件夹
  • 全球编码指南和规则

在下面的示例中,请注意我们如何从应用程序的快速概述,用户的预期流,框架和规则以及可用资源开始。

#经典街机该项目拥有经典的街机,以1980年代8位游戏为主题。##标准玩家流1。播放器打开应用程序并看到游戏列表。2。玩家选择要玩的游戏。3。玩家看到带有消息“插入季度”的飞溅屏幕。4。播放器按空间开始游戏和玩游戏6。在游戏结束后,显示“游戏over”消息。7。与高分相对检查。如果分数在前10名,则提示用户以缩写(3个首字母)。8。显示高分,并可以选择返回主菜单重新开始。##框架-Python`街机图书馆用于街机本身-sqlite用于存储所有分数##编码指南 - 所有游戏都必须从“基础游戏”继承 -  Python代码应遵循PEP8实践,包括Docstrings和类型提示##项目结构 - `data':存储数据抽象层和SQLite数据库 - ``Games':存储游戏和``基础游戏'' - `app`:存储包括菜单系统在内的核心应用程序组件

上面的副标士指令文档中记录的所有内容都可能由Copilot弄清楚,因为它进行了调查。但是,列出您的要求和资源有助于确保其具有正确的信息,尤其是因为可能会偏离组织公认的最佳实践的代码。

>注意:该作者的代码始终是完美的,因此当然不适用于我。ð

目标说明文件

显然,在单元测试中驻留的代码与数据抽象层中的代码大不相同,这与•虽然具有整个存储库的说明很强大,但我们通常也有围绕特定类型的文件的规则。Copilot编码代理通过使用<file-name> .instructions.md文件,该文件位于代码库中.github/指令/文件夹(或其中的子文件夹)。

这些目标说明文件可以包含一个申请部分,该部分使您可以设置Glog模式以识别规则应应用的文件。坚持上面的场景 - 建立经典街机 - 我们可能会在游戏文件夹为Python文件。我们使用的模式是**/games/*。py。在该部分中,您可以添加针对这些文件的指令,例如要继承哪个基类以及任何测试要求。.github/instructions/game.instructions.py看起来如下:

---申请:**/games/*。py---##资源和要求 - 所有游戏都从“基础游戏”继承 - 所有游戏都需要进行单位测试,重点是核心功能 - 在街机上添加新游戏时,请确保将较高分数添加到数据库中##街机框架注释 - “矩形”在框架中总是缩写为`rect' - “基础游戏”类包含许多抽象来简化游戏创建

注意我们如何列出要求和资源。我们还添加了一个关于长方形被缩写为矩形,这是为了帮助副驾驶可能犯的常见错误。

ð专家提示:指令文件是一种在看到特定类型的错误时,指导副副总数朝正确方向引导。

关于指令文件的闭幕思考

在您在IDE中使用和将任务分配给Copilot编码代理时,投入时间来创建强大的指令文件将有助于Copilot。实际上,如果您对Copilot有经验,那么您很有可能已经熟悉了本节中的概念。由于这些变成了该项目的工件,因此它们将继续以生产力和建议质量既付出了股息。

用MCP扩展副本,以提供更多的上下文和工具

所有开发人员都需要在某个时候提供帮助。它可能是从您的GitHub存储库中检索特定的讨论,以了解有关功能历史记录的更多信息,或查找用于实现特定算法或代码块的语法。

AI代理可以使用MCP或模型上下文协议执行这些任务。MCP是旨在帮助AI连接到关键服务和工具的开放标准。这有助于AI代理执行您代表的任务 - 但它还可以通过将其连接到更多的数据和信息来源(例如GitHub!)来提供更多的模型上下文。 

这是为什么重要的:github副驾驶可以使用MCP服务器呢默认情况下,当您使用其编码代理时,可以使用两个MCP服务器:github剧作家。前者允许Copilot与您的存储库进行交互,搜索问题和其他信息,而后者允许副铜生成剧作家测试用于端到端或接受测试。

示例:用于二头肌生成的Azure MCP服务器

让我接受Azure二头肌例如,它是用于定义Azure资源的特定领域的语言(DSL)。为了使用DSL(例如Azure Bicep)进行最佳工作,Copilot受益于虚拟帮助生成代码的人。幸运的是,那里Azure MCP服务器Copilot可用可用于获得一些支持。

如果您的团队已经在VS代码中为项目使用MCP服务器,则现有.VSCODE/MCP.JSON您的项目中的文件可以由Copilot使用来识别MCP服务器!否则,您可以配置MCP服务器专门用于副本编码代理设置您项目的标签,副驾驶然后编码代理,您将有一个文本框可以粘贴在JSON中。

遵循我们想要更好地支持二头肌创建的示例,下面的JSON启用了Azure MCP服务器,同时指定我们只需要二头肌模式支持。 

{“ McPservers”:{“ azurebicep”:{“类型”:“本地”,“命令”:“ npx”,“ args”:[[“ -y”,“@azure/mcp@最新”,“服务器”,“开始”,“  -  namempace”,“二丝希玛”,“  - 仅阅读”这是给出的}}}

使用Copilot的防火墙管理Internet访问和数据剥离风险

您可能已经注意到类型以前的MCP示例中的选项设置为当地的。这意味着无需与外部服务联系的情况下,将在容器内访问服务器。但这也意味着一个可能性偏僻的服务器,哪个提出了一个问题:是否允许Copilot访问Internet?如果是这样,我们如何控制它?

Copilot编码代理具有默认的防火墙,这有效地限制了Copilot对核心服务的访问,例如包装托管服务NPMpip。这可以帮助您管理数据剥落风险。例如,如果对GitHub Copilot提供了恶意说明,则可能导致代码或其他敏感信息泄漏到远程位置。

如果要添加远程MCP服务器,或者需要允许Copilot访问Internet资源,您将需要更新防火墙,您可以通过更新允许列表来做到这一点。这可以在您的存储库的设置下可用副驾驶,然后编码代理(方便地,这与配置MCP服务器相同!)。 

欢迎来到团队,副胜奇!

就像任何好的队友一样,Github Copilot编码代理在为成功设置时就会蓬勃发展!通过投入一些时间来配置其环境,制定清晰的问题,优化您的项目并利用自定义说明和MCP服务器,您将授权Copilot提供最佳工作。

借助您的武器库,您将在从Copilot编码代理那里获得更高质量的拉力请求以及更有生产力的开发经验。 

准备看到魔术发生了吗? 了解有关Github Copilot的更多信息

至于我,我需要补充咖啡杯。

了解如何分配和完成问题GitHub副副词中的编码代理>


写的

Christopher Harrison

高级开发人员倡导者Github

关于《入职您的AI同行程序员:设置GitHub副副代表编码代理成功》的评论


暂无评论

发表评论

摘要

GitHub Copilot被描述为能够通过编码代理功能分配任务的AI对等程序员。当给出问题时,它会创建一个分支,提取请求和孤立的环境来处理任务。明确的说明和优化的项目结构对于其性能至关重要。自定义指令文件和MCP(模型上下文协议)集成通过提供上下文和访问外部工具,从而进一步增强其功能。配置这些元素可确保Copilot可牢固有效地运行,从而提供高质量的代码贡献。总体而言,正确建立副驾驶会带来更有生产力的发展经验。要了解有关将任务分配给Copilot编码代理的更多信息,请参阅GitHub的文档。由Github的高级开发人员倡导者撰写。