用 GitHub Copilot 代码代理快速清理积压任务:WRAP 方法详解

工程师们已经在 GitHub 内部使用 GitHub Copilot 代码代理超过一年时间,通过实践经验研究它在哪些地方能为开发者真正节省时间和精力。在我们的工作中,我们总结出了一个方便易记的缩写:WRAP,它代表:

R – 优化你的指令 A – 原子化任务 P – 与代码代理结对

WRAP 将帮助你最大限度地利用代码代理。例如,你的待办事项列表中很可能充满了难以确定优先级的问题。也许你不得不为了发布新功能而推迟一些技术债务的改进工作。或者你的开发时间被分散在修复客户漏洞和更大型的激情项目之间。WRAP 可以帮助你快速上手,利用代码代理来处理那些你过去可能没时间处理的任务。

避免这样做:

更新整个代码库以使用 async/await

尝试这样做:

将身份验证中间件更新为使用较新的 async/await 模式,如下方示例所示。为此项工作添加单元测试进行验证,并确保考虑了边界情况。

async function exampleFunction() { let result = await promise; console.log(result); //"完成!" }

优化你的指令

WRAP 的下一步是确保你优化 GitHub Copilot 的自定义指令,以改进代码代理创建的拉取请求的结果。你可以创建多种不同的自定义指令,也有多种不同的场景适合使用它们。

  1. 仓库自定义指令。这是存储任何可能适用于你整个仓库信息的绝佳位置。例如,如果你有一个 Go 应用程序并且偏好特定的 Go 代码编写方式,那应该放在你的仓库自定义指令中。随着时间的推移,向这些指令中添加内容将改善在该仓库中与 GitHub Copilot 的任何交互的响应。这是一份关于如何开始添加这些仓库自定义指令的指南。

    注意:这是 GitHub Copilot 代码代理的一个绝佳初始用例!可以尝试请它为你的仓库生成自定义仓库指令。

  2. 组织自定义指令。就像你可以为整个仓库创建一组 GitHub Copilot 自定义指令一样,你也可以为整个组织创建一组 GitHub Copilot 自定义指令。这适用于任何适用于你组织中所有仓库的要求。例如,你可能对所有应用程序应该创建的测试有特定要求。这是一份关于如何开始添加组织自定义指令的指南。

  3. 代码代理自定义代理。与仓库和组织自定义指令类似,代码代理自定义代理可以使用自然语言文本文件创建,并可在企业、组织或仓库级别应用。这些非常适合任何可能频繁发生但不一定适用于每一组更改的重复性开发任务。例如,你可以为在特定仓库中集成新产品创建一个“集成代理”。这是一份关于如何开始创建自定义代理的指南。

原子化任务

代码代理非常擅长处理小型、原子化且定义明确的任务。然而,它对于处理大型问题也可能很有用!如果你希望它处理一个较大的问题,诀窍是将这个大问题分解成多个独立的、更小的任务。

  • 将身份验证模块迁移到 Golang,确保所有现有单元测试通过。
  • 将数据验证工具包转换为 Golang,同时保持相同的 API 接口。
  • 将用户管理控制器重写为 Golang,保留现有的 REST 端点和响应。

通过将这个大问题分解为更小的原子化任务,测试和验证工作的各个部分会容易得多,审查各个拉取请求也会容易得多。

与代码代理结对

在与代码代理合作时,重要的是要记住它作为代码代理的优势和你作为人类的优势。如果代码代理的表现不如你所愿或期望,这样做将减少后续令人沮丧的体验。

例如,人类非常擅长以下方面:

  • 跨系统思考:人类更善于思考在一个系统中进行的更改对另一个系统的影响。当代码代理在一个特定仓库中完成某项任务时,它不太可能知道该任务将如何影响其他仓库。考虑跨系统影响是一项更适合人类而非 GitHub Copilot 的任务。

另一方面,代码代理非常擅长以下方面:

  • 不知疲倦地执行:你可以立即分配十个不同的任务给代码代理,并期望它处理每一个。
  • 重复性任务:人类在执行重复性任务(例如跨多个文件更新命名约定)时常常会感到无聊或遗漏东西。而 GitHub Copilot 非常适合完成这些事情!
  • 探索可能性:如果你正在考虑用几种不同的方式解决一个问题,可以将每种不同的方式分配给代码代理。这让你可以快速了解每种策略可能产生的结果,而无需占用大量开发资源。

掌握此方法

有需要更新的依赖项吗?有些地方可以增加测试覆盖率?想要在整个代码库中采用新的错误处理模式?或者也许你想抢先一步添加仓库指令并利用 GitHub Copilot 代码代理来完成?

使用 WRAP 来快速搞定你的积压任务吧!

开始使用 GitHub Copilot >

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计