使用 GitHub Copilot coding agent 处理你的 backlog
抱歉,我目前没有办法直接访问外部链接获取文章内容。请您把需要翻译的文本粘贴在这里,我会按照要求为您翻译成简体中文,并保留原始的格式和链接。
使用 WRAP 框架与 GitHub Copilot
GitHub 的工程师已经使用 GitHub Copilot 编码代理 超过一年,了解它如何为开发者节省真实的时间和精力。基于这些经验,我们提炼出一个简洁、易记的首字母缩写,帮助你充分利用编码代理:
WRAP
| 字母 | 含义 | 如何应用 |
|---|---|---|
| W | 编写有效的 Issue | 清晰描述问题,包含验收标准,并添加任何相关的上下文或示例。 |
| R | 细化你的指令 | 将 Issue 拆解为精准的、一步一步的指导(例如,“生成一个 React 组件 …”)。 |
| A | 原子任务 | 保持每个任务小且自包含,使代理能够快速生成正确、可测试的代码。 |
| P | 与编码代理配对 | 将 Copilot 视为协作伙伴——审查其建议、迭代并提供反馈。 |
为什么 WRAP 有帮助
- 积压任务过多:通过将每个 Issue 转化为原子任务,让 Copilot 处理,从而优先并解决大量问题。
- 技术债务 vs. 新功能:使用代理削减技术债务,同时你专注于交付新功能。
- 分散注意力:让 Copilot 处理小的 bug 或实验,让你有更多时间专注于更大、更具战略性的工作。
快速示例
Issue: “为用户列表页面添加分页。”
WRAP 应用:
- Write 编写包含 UI 原型和 API 合约的简洁 Issue。
- Refine 指令:“创建一个
UserList组件,使用page和limit查询参数获取用户,每页显示 10 条,并包含 Next/Prev 按钮。”- Atomic 任务:在单独的
usePaginationhook 中实现分页逻辑。- Pair:运行 Copilot,审查生成的 hook,调整边缘情况处理,然后合并。
通过遵循 WRAP,你可以快速上手,让编码代理处理那些你以前没有时间完成的任务。祝编码愉快!
编写有效的 Issue
WRAP 的第一步是确保为 GitHub Copilot 编码代理编写有效的 Issue。把 Issue 看作是新团队成员的入职材料——提供足够的上下文可以让代理顺利开展工作。
指南
- 为新人编写 – 包含新开发者理解任务所需的任何背景信息。这自然会为编码代理提供所需的上下文。
- 撰写描述性标题 – 标题应说明做什么以及在哪里进行。由于可以向代理分配多个任务,清晰的标题有助于让你的 Issue 面板易于浏览。
- 添加具体示例 – 如果你已经知道期望的实现方式(例如,特定的错误处理模式),请在 Issue 中粘贴一个简短示例。这大大提升获得准确输出的可能性。
示例
错误示例:
Update the entire repository to use async/await
正确示例:
Update the authentication middleware to use the newer async/await pattern, as shown in the example below. Add unit tests that verify the changes and cover edge cases.
// Example async/await usage
async function exampleFunction() {
const result = await promise;
console.log(result); // "done!"
}
遵循这些技巧,创建清晰、可操作的 Issue,帮助编码代理快速交付高质量代码。
Source: …
精炼你的指令
WRAP 的下一步是细化 GitHub Copilot 的自定义指令,以提升由你的编码代理生成的 Pull Request 的质量。你可以创建多种类型的自定义指令,每种都适用于不同的场景。
仓库自定义指令
存放适用于整个仓库的信息。
示例: 如果你有一个 Go 应用并且偏好特定的编码风格,可以在此添加相应的指南。随着时间的推移添加和更新这些指令,将会提升仓库内所有 Copilot 交互的效果。
- 提示: 这是 GitHub Copilot 编码代理的理想首个使用案例。让代理为你生成仓库级别的自定义指令。
- 指南: 添加仓库自定义指令
组织自定义指令
创建一套适用于组织内 所有 仓库的指令。
示例: 在每个项目中强制执行统一的测试策略。
- 指南: 添加组织自定义指令
编码代理自定义代理
定义可复用的代理(通过自然语言文本文件),并可将其范围设定为企业、组织或仓库级别。这些代理可自动化那些并非每次更改都需要的重复开发任务。
示例: 一个 “集成代理”,负责为特定仓库的新产品集成生成样板代码。
- 指南: 创建自定义代理
记住: 持续细化并扩展你的自定义指令。指令越精确、越完整,Copilot 代理在生成代码和 Pull Request 时的表现就会越好。
原子任务
编码代理擅长处理小型、原子且定义明确的任务。它们也可以用于更大的问题——只需将问题拆分为多个独立的、更小的任务。
为什么要拆分任务?
- 单个庞大的请求(例如,“将 300 万行 Java 代码重写为 Go”)对代理来说过于宽泛,难以高效处理。
- 大规模的改动难以测试、验证和审查。
示例:将 Java 代码库迁移到 Go
与其一次性提出巨大的请求,不如将工作拆分为以下聚焦的任务:
-
认证模块
- 将认证模块迁移到 Go。
- 确保所有现有单元测试通过。
-
数据验证工具
- 将数据验证工具包转换为 Go。
- 保持相同的公共 API。
-
用户管理控制器
- 用 Go 重写用户管理控制器。
- 保持现有的 REST 端点和响应不变。
通过将大型问题拆分为这些原子任务,您可以获得:
- 更容易的测试 – 每个部分都可以单独验证。
- 更简洁的审查 – 拉取请求更小、更聚焦。
- 更高的可靠性 – 故障仅限于单个组件,而不是整个系统。
与编码代理的配对
在与编码代理协作时,重要的是要记住它的优势以及你作为人的优势。理解这种平衡可以实现更顺畅的合作,并在代理的行为未完全符合预期时减少挫败感。
人类擅长的方面
- 理解“为什么” – 把握任务背后的目的,并评估所提议的更改是否真正解决了根本问题。
- 处理模糊性 – 应对含糊或不完整的需求,补充编码代理所需的细节。
- 跨系统思考 – 预判对一个代码库的更改如何影响其他系统,这是代理可能忽略的。
编码代理擅长的方面
- 不知疲倦的执行 – 能同时处理多个任务而不感到疲劳。
- 重复性任务 – 能高效地在大量文件中更新命名规范或完成其他单调的工作。
- 探索可能性 – 快速原型化多种方案,提供快速洞察而无需大量资源消耗。
随身携带
当你配备了 GitHub Copilot 和 WRAP 时,长期积压的问题将不再有机会。
- 需要更新依赖吗?
- 想要更多的测试覆盖率吗?
- 想在整个代码库中采用新的错误处理模式吗?
- 想快速开始使用 GitHub Copilot 编码代理添加仓库说明吗?
使用 WRAP 来解决你的积压工作!
Get started with GitHub Copilot →
编写者
Brittany Ellich – 软件工程师,平台与企业部,GitHub
Jason Etcovitch – 软件工程师,平台与企业部,GitHub
相关帖子
(在此添加相关文章链接)