我当初投身软件开发是为了实现创意,而不是为了追查那些临时提出的功能需求而去修改硬编码的字符串。不幸的是,我们开发人员的日常工作中,很多都涉及到维护分支代码、重构代码以及为真正有趣的事情——发布新功能——做准备工作。
所以我转而使用 Copilot 的代理工作流程来加速一些繁琐的工作。在我最近一次的“橡皮鸭星期四”直播中,我在一个项目中验证了这一理论,该项目需要本地化一个使用以下技术的应用程序:
- 技术栈:一个Next.js Web 应用和一个配套的SwiftUI iOS 应用,分别位于两个独立的 GitHub 代码库中。
- 环境:在Codespaces(按需开发环境)中快速启动,移动部分使用Xcode 16 。
- 任务:根据几个段落构建的问题,即“添加英语、法语和西班牙语本地化”。
- Copilot 工具: 编码代理(将该问题转换为 PR)、自定义规划聊天模式 (用于尝试 VS Code 中的新预览功能)和新的远程GitHub MCP 服务器(以便我们可以避免在开发环境中管理这些依赖项)。
直播结束时,这个想法变成了一个 GitHub 问题,在我回答聊天问题并了解 VS Code 中的预览自定义聊天模式功能的同时,它变成了一个经过全面测试、可供审查的 PR。
让我们深入探讨一下。
我为什么使用代理工作流
即使是经验丰富的开发人员和团队,仍然会花费大量时间在诸如此类的工作上:
- 将模糊的需求转化为范围明确的问题
- 在横切重构中查找每个文件
- 一遍又一遍地编写相同的单元测试框架
Copilot 的创建问题功能,加上其代码代理、VS Code 中的自定义聊天模式以及全新的远程 MCP 后端,将这些繁琐的工作整合到一个紧密的循环中——从问题到 PR——让您始终掌控全局。您仍然需要进行代码审查、调整并决定何时合并,但可以省去这些繁琐的步骤。
本次直播涵盖的关键功能
| 能力 | 它的作用 | 为什么这很重要 | 如何启用和使用它 |
|---|---|---|---|
| 编码代理 | 将你分配给 Copilot 的任何 GitHub Issue 转换为 PR,并异步处理该任务。 | 它可以让你卸载样板工作,同时专注于代码审查和极端情况逻辑。 | 了解如何启用 Copilot 编码代理。 |
| 使用 Copilot 创建问题 | 将自然语言提示转换为结构良好的 Issue,包括标题、正文、验收标准和文件提示。 | 节省了项目经理/工程师的改进时间,并为团队成员或 Copilot 编码代理提供了有效工作所需的上下文。 | 访问github.com/copilot并输入提示信息以创建 issue。了解更多关于使用 Copilot 创建 issue 的信息。 |
| 自定义聊天模式(VS Code 预览版) | 允许您编写可重复的 AI 工作流程(例如,规划、重构、测试编写),这些工作流程会与默认的“询问/编辑/代理”聊天模式一起显示。 | 允许您将说明和相关工具打包在一起,以便更轻松地使用,帮助您的团队遵循类似的规范。 | 将文件添加.chatmode.md到您的存储库;在 VS Code 版本 1.101 中提供预览版。了解更多关于 VS Code 中的自定义聊天模式的信息。 |
| 远程 GitHub MCP 服务器 | 允许 AI 工具访问实时 GitHub 上下文和工具,例如问题、拉取请求和代码文件。借助远程 GitHub MCP 服务器,您无需在本地安装,甚至可以使用 OAuth 2.0 进行身份验证。 | 为访问 GitHub MCP 服务器提供流畅的体验,降低了本地服务器的管理开销。 | 按照远程 GitHub MCP 服务器文档中的示例更新您的 MCP 配置。 |
| 副驾驶代理模式 | Copilot 代理模式是一个实时协作助手,它会驻留在您的编辑器中,与您协同工作,并根据您的需求编辑文件。与编码助手不同,Copilot 代理模式与您同步工作。 | 可以将代理模式想象成与你结对编程的高级开发人员。它可以使用多种工具(例如读写代码、在终端运行命令、在 MCP 服务器上执行工具),并与你并肩工作。 | Copilot 代理模式可在多个 IDE 中使用,包括VS Code、Visual Studio、JetBrains(公开预览版)、Eclipse(公开预览版)和Xcode(公开预览版)。 |
要达到类似的结果,你需要做什么
- 你可以推送代码到 GitHub 仓库
- 已启用编码代理的 Copilot 订阅。(您知道吗?现在所有 GitHub Copilot 付费版本,包括Copilot Business和Copilot Pro ,都已提供此功能。)
- VS Code 1.101+,并配备最新的 Copilot 扩展。
- 可以是:GitHub 远程 MCP 服务器(更新您的 MCP 配置),也可以是本地 GitHub MCP 服务器。
演练:本地化 Next.js 应用
以下是我在最近一次“橡皮鸭星期四”直播中演示的完整流程。
1. 将请求捕获为 GitHub Issue
前往Copilot Chat 的沉浸式视图。在页面底部的“询问 Copilot”框中,描述您的需求。例如,以下是我使用的提示。
Create a GitHub Issue that brings i11n capability to the application. We must support English, French and Spanish. The user must be able to change their language in their profile page. When they change the language, it must apply immediately across the site. Please include an overview/problem statement in the issue, a set of acceptance criteria, and pointers on which files need updating/creating.
Copilot 会将这些信息整理成一个问题,其中包括标题、验收标准和简要的行动计划。之后,您可以将该问题分配给 Copilot,让它在后台自动处理。
2. 让编码代理将问题转化为 PR
分配任务后不久,编码员:
- 创建分支
- 启动新会话。如果您已配置 copilot-setup-steps.yml 文件,则在 Copilot 开始工作之前,会先配置开发环境。
- 回顾当前任务,探索代码库的当前状态,并制定完成任务的计划。
- 如果您配置了任何自定义指令,编码代理也会将这些指令用作上下文。例如,我们指定在提交代码之前,`npm run lint` 和 `npm run test` 必须通过。
- 完成后,它会打开一个 PR 草稿供您审核。
在程序运行期间,您可以继续编写代码,利用这个机会学习(就像我们学习了自定义聊天模式一样),或者去喝杯咖啡。
3. 像往常一样审核公关稿
无论是同事、合作者还是 Copilot 编写的代码,都需要一个代码审查员。因此,务必仔细检查代码,就像对待其他任何 pull request 一样。
- 首先查看拉取请求的正文,Copilot 会自动将其更新到最新版本。
- 然后,查看“文件更改”选项卡中的代码更改,了解更改的内容及其原因。我还会查看编码代理会话,以了解 Copilot 解决问题的方法。
- 熟悉代码后,您可以手动在 GitHub Codespace 中运行它。或者,您也可以通过 GitHub Actions 工作流运行现有的 CI 检查。但再次强调,请务必在执行代码之前仔细检查。
- 一切顺利的话,你的CI会返回绿色对勾标记。
然而,手动测试过程中总有可能遇到故障或发现一些变化。例如,我发现了一些代理程序没有处理的硬编码字符串。对此,我们处理的方式与其他任何拉取请求一样。我们可以将反馈发布在评论中。例如,以下是我使用的评论:
这是一个不错的开始。但是,还有很多页面仍然是硬编码的英文。例如,航班搜索/预订页面和查询预订页面。请问您能否在这些页面上实现本地化?
副驾驶会再次对该评论做出反应,并在另一个会话中开始工作。
使用自定义聊天模式提升您的工作流程
如果你日常使用 VS Code 并搭配 GitHub Copilot,那么你可能已经习惯了提问、编辑和代理聊天模式。但在VS Code 1.101 版本中,团队预览版新增了自定义聊天模式。这允许你将说明和相关工具打包在一起,以便更轻松地使用。例如,我基于VS Code 团队的“计划”聊天模式示例进行了扩展:
- 在 Visual Studio Code 中打开命令面板
- 输入“配置聊天模式”
- 选择“创建新的自定义聊天模式文件”。 系统会提示您将其保存到工作区(以便与他人协作)或本地用户数据文件夹(仅供您自己使用)。我们选择了工作区选项。
- 请输入用户名。此用户名将显示在聊天模式选择框中,请注意大小写。
- 您应该会看到一个新创建的文件,其扩展名为.chatmode.md. 。您可以在这里配置新自定义聊天模式的指令和可用工具。
以下是我们在直播中使用的示例,略微修改自 VS Code 团队的文档示例。我们已将 `create_issue` 工具添加到允许的工具列表中,调整了我们对 issue 中包含内容的预期,并添加了关于在修订完成并经用户批准后使用 `create_issue` 工具创建 issue 的说明。
--- description: Generate an implementation plan for new features or refactoring existing code. tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages', 'github', 'create_issue'] --- # Planning mode instructions You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code. Don't make any code edits, just generate a plan. The plan consists of a Markdown document that describes the implementation plan, including the following sections: * Overview: A brief description of the feature or refactoring task. * Requirements: A list of requirements for the feature or refactoring task. * Implementation Steps: A detailed list of steps to implement the feature or refactoring task. * Testing: A list of tests that need to be implemented to verify the feature or refactoring task. Once the plan is complete, ask the user if they would like to create a GitHub issue for this implementation plan. If they respond affirmatively, proceed to create the issue using the `create_issue` tool.
当文件在你的队友的本地存储库中可用时(也就是说,他们已在本地拉取了更改),VS Code 会在聊天下拉菜单中显示该模式,允许你配置在整个团队中一致且方便的聊天模式。
远程 MCP:移除本地设置
您可能习惯于通过 npm 包或 Docker 容器在本地运行 MCP。然而,远程 MCP 服务器可以降低本地运行这些工具的管理开销。此外,它还可能带来其他好处。例如,远程 GitHub MCP 服务器允许您使用 OAuth 2.0 进行身份验证,而不是使用个人访问令牌 (PAT)。
要在 VS Code 中使用 GitHub 远程 MCP 服务器,您需要更新 MCP 配置。您可以在 GitHub MCP 服务器存储库中找到相关说明。
移动化:Xcode 中的 Copilot 代理模式
虽然我们没有深入展示,但我快速回顾了我之前在 Xcode 中进行的一次代理模式会话。它展示了我如何向 Copilot 发出类似的提示,要求其为应用程序添加国际化功能,我们可以在模拟器中运行的应用程序的主导航栏中看到这一点。
We need to implement internationalization in the app. Please make the following changes: 1. The user can select from suported languages (English, Spanish, French) from a dropdown in their profile. 2. The main tab view should support internationalization. No other parts of the app should be changed for now. 3. When the user changes the language, it should update the rendered text instantly.
注意事项
| 严格控制问题范围 | 请代理商“重新设计应用程序”。 |
| 提供验收标准 | 假设代理人知道你的意图 |
| 仔细审查所做的更改 | 未经审查即可执行代码或合并 PR |
| 使用 Copilot 进行迭代。你第一次就能成功完成任务的概率有多大? | 期望第一次就做到完美 |
自己试试
- 启用 Copilot 编码代理,并在后台将工作分配给 Copilot。
- 在 VS Code 版本 1.101 中配置自定义聊天模式。
- 配置远程 GitHub MCP 服务器以减少本地管理工作量。
- 在VS Code、Visual Studio、JetBrains(公开预览版)、Eclipse(公开预览版)和Xcode(公开预览版)中使用 Copilot 代理模式。
下一步
- 观看完整直播回放,即可获得分步讲解。
- 深入研究 Copilot 编码代理和 MCP 文档以了解更多详情。
- 首先告诉我你实现了哪些自动化功能——在社交媒体上标记@github你一直在做的事情,让我们知道!
天模式和远程 MCP 服务器实用指南,帮助您通过清晰的步骤(而非夸大其词)将问题转化为经过测试的 PR。