GitHub Copilot 编码代理
GitHub Copilot 编码代理是一个由 GitHub 托管的自主 AI 开发人员,它在后台独立工作以完成开发任务。要调用编码代理,请将 GitHub 问题分配给 Copilot 或从聊天中委托任务,代理将使用自己的隔离开发环境自主工作,以在整个存储库中实现功能、修复错误和进行更改。
这与 在 VS Code 中使用代理 不同,后者提供编辑器内的交互式开发,需要在编码会话期间积极参与。

工作原理
Copilot 编码代理工作流
- 分配:您将 GitHub 问题分配给
@copilot,从 VS Code 聊天中委托任务,或使用 TODO 代码操作 - 分析:代理分析任务和存储库结构
- 开发:Copilot 在其自己的隔离 GitHub Actions 环境中工作,它可以
- 探索您的代码库
- 更改多个文件
- 运行构建和测试
- 执行 lint 和其他自动化检查
- 拉取请求:代理创建包含实现内容的拉取请求
- 审查:您审查更改并通过 PR 评论请求修改
- 迭代:代理响应反馈并更新实现
先决条件
在您使用 Copilot 编码代理之前,您需要
- GitHub Copilot 订阅:适用于 Copilot Pro、Pro+、Business 或 Enterprise 计划
- 写入权限:您必须具有存储库的写入权限
- 启用代理:必须为您的帐户或组织启用 Copilot 编码代理
- VS Code 设置:安装GitHub Pull Requests 扩展
确保您使用正确的 GitHub 帐户登录到 GitHub Pull Request 扩展。

可选:启用实验性设置 githubPullRequests.codingAgent.uiIntegration,以在 Copilot Chat 中显示一个“委托给编码代理”按钮,以便更轻松地委托任务。
您还可以通过启用实验性设置 chat.agentSessionsViewLocation 来从专用的聊天编辑器管理编码代理会话,并查看“聊天会话”视图。
如果您还没有 Copilot 访问权限,可以注册Copilot 免费计划以获得每月交互限制。
在 VS Code 中向 Copilot 编码代理分配工作
方法 1:将问题分配给 Copilot
您可以通过将 GitHub 问题分配给 Copilot 来触发 Copilot 编码代理,类似于您将问题分配给团队成员的方式。Copilot 编码代理会自动分析问题并开始处理它。
-
在“GitHub Pull Requests”视图中,导航到“Issues”部分
-
找到您想要分配给 Copilot 的问题
-
右键单击该问题并选择“Assign to Copilot”或选择“Assign”,然后选择
@copilot提示您也可以直接在 GitHub.com 上将问题分配给
@copilot。编码代理将以相同的方式工作,创建一个拉取请求,然后您可以在 VS Code 或 GitHub 上审查它。 -
代理将在后台开始处理问题
-
在 VS Code 中打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))

方法 2:从聊天中委托
您还可以直接从聊天对话中将工作交给 Copilot 编码代理。您无需让代理立即在编辑器中实现更改,而是可以将任务委托给编码代理,让其在后台自主处理。
-
在 VS Code 中打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))
-
就您想要实现的功能或更改进行对话
-
准备就绪后,使用以下方法之一委托给代理
使用委托按钮(实验性)
启用实验性设置 githubPullRequests.codingAgent.uiIntegration,以在已启用代理的存储库的聊天视图中显示一个“委托给编码代理”按钮。选择此按钮可将您当前的聊天上下文移交给编码代理。
当您委托任务时,包括文件引用在内的附加上下文会转发给编码代理,使您能够为编码代理精确规划要完成的任务。一个新的聊天编辑器会打开,实时显示编码代理的进度。
使用 #copilotCodingAgent 工具
您还可以直接在提示中引用
#copilotCodingAgent工具,要求 Copilot 在后台继续进行本地更改。此工具会自动将挂起的更改推送到远程分支并启动编码代理会话
-
代理将创建一个拉取请求并开始实现所讨论的更改。当您启动编码代理会话时(通过
#copilotCodingAgent或使用“委托给编码代理”操作),拉取请求将作为卡片呈现在聊天视图中。
方法 3:使用编码代理修复 TODO
代码中以 TODO 开头的注释现在会显示一个代码操作,用于快速启动编码代理会话。这提供了一种方便的方法,可以直接从代码中委托特定任务。
TODO 关键字可通过 githubIssues.createIssueTriggers 设置进行配置。您可以自定义哪些注释关键字会触发编码代理代码操作。
-
导航到代码中的
TODO注释 -
查找灯泡图标或使用 ⌘. (Windows, Linux Ctrl+.) 打开“快速修复”菜单
-
从可用的代码操作中选择“Delegate to coding agent”

-
编码代理将分析 TODO 注释并在新的拉取请求中实现请求的更改
跟踪代理进度
了解编码代理工作流
当您将工作分配给 Copilot 编码代理时,它会遵循特定的工作流,这可能与您的预期有所不同
-
初始拉取请求创建:代理立即创建一个包含初始空提交的拉取请求。这建立了将进行所有更改的工作区和分支。
-
后台处理:编码代理在 GitHub 的云基础设施(GitHub Actions 环境)中工作,而不是在您的本地计算机上。这意味着
- 所有开发都在 GitHub 的服务器上远程进行
- 代理可以访问完整的存储库上下文
- 即使您关闭 VS Code,工作也会继续
-
增量更新:在初始提交之后,代理将在开发解决方案时推送包含实际代码更改的额外提交。
如果您看到一个没有更改的初始提交,这是预期行为。代理将在后续提交中继续推送实际代码更改,因为它正在处理您的任务。
在 VS Code 中监视工作
GitHub Pull Requests 扩展提供了一个专用的“Copilot on My Behalf”部分,显示
- 所有活动的 Copilot 编码代理会话
- 代理创建的拉取请求
- 每个任务的进度状态
- 指示新更改或更新的数字徽章

您还可以通过 GitHub.com 监视您分配给 @copilot 的工作 - 所有活动会话和拉取请求都将显示在此部分中,无论您在哪里启动它们。
查看详细的会话日志
-
在 Pull Requests 视图中,在“Copilot on My Behalf”下找到代理的工作
-
选择“View Session”以查看代理所做的所有操作的详细日志
- 执行的命令
- 修改的文件
- 运行的测试
- 决策过程

使用专用聊天编辑器管理会话(实验性)
您可以从专用的聊天编辑器管理编码代理会话,使您能够
- 实时跟踪编码代理的进度
- 直接从聊天中提供后续说明
- 在专用环境中查看代理的响应
- 直接从聊天编辑器查看或应用代码更改并签出拉取请求
- 体验从本地聊天到 GitHub 代理任务的无缝过渡,具有改进的连续性
- 受益于具有改进视觉清晰度的更好会话渲染
- 享受更快的会话加载,以获得更灵敏的体验
启用实验性设置 chat.agentSessionsViewLocation 来试用此功能
-
当设置为
view时,您将在 VS Code 侧边栏中看到一个“Chat Sessions”视图,用于管理本地和编码代理会话。该视图现在包含带有详细上下文的丰富描述,可帮助您快速找到相关信息。
-
当设置为
showChatsMenu时,编码代理会话将与本地聊天历史记录一起显示
当您启动会话时,编码代理创建的拉取请求也会作为卡片呈现在聊天视图中,从而提供更好的视觉集成。
改进的委托体验
从 VS Code 到 GitHub 编码代理的委托体验在最近的更新中得到了显著增强
- 更好的上下文转发:当您从聊天中委托任务时,包括文件引用在内的附加上下文会自动转发给 GitHub 编码代理
- 实时进度:新的聊天编辑器打开,实时显示编码代理的进度
- 无缝过渡:从本地聊天到 GitHub 代理任务的连续性得到改进
- 增强的视觉集成:拉取请求作为交互式卡片呈现在聊天视图中,以实现更好的导航
这些改进使您可以更轻松地为编码代理精确规划任务并监视其进度,而无需离开 VS Code。
取消正在运行的会话
如果您需要停止代理,您可以留在 VS Code 中并使用 PR 概述页面上的“Cancel coding agent”按钮。
您也可以从 GitHub.com 取消会话
- 转到 GitHub.com 上的 GitHub 存储库
- 导航到“Actions”选项卡
- 找到正在运行的 Copilot Coding Agent 工作流
- 选择“Cancel workflow”
审查和迭代
工作完成
在 Copilot 编码代理分析您的代码并确定完成任务所需的更改后,它将执行以下步骤
- 创建包含所有更改的拉取请求
- 将 PR 分配给您进行审查
- 请求您作为审阅者
- 包含详细的描述解释实现
- 在适用时添加屏幕截图(用于 UI 更改)

提供反馈
您可以通过拉取请求评论来指导代理的工作。确保在评论中标记 @copilot,以便代理会做出响应
-
请求更改:留下关于需要修改内容的具体反馈
@copilot Please update the login form to include password strength validation -
请求改进:要求添加功能或改进
@copilot Can you add error handling for network timeouts?
代理将响应您的反馈,进行请求的更改,并更新拉取请求。
当使用编码代理创建的拉取请求时,#activePullRequest 工具会自动为您的聊天会话启用。这为聊天提供了关于您的 PR 的上下文,包括更改了哪些文件、分配给了谁以及状态(草稿或准备审查)。然后,您可以在聊天中询问有关此 PR 的信息并进一步迭代它。
常见问题
Copilot 编码代理与使用代理有什么区别?
VS Code 提供了两种自主编码体验。虽然在 VS Code 中使用代理提供编辑器内的交互式开发,但 Copilot 编码代理在 GitHub 上独立工作,在后台实现功能。
| 功能 | Copilot 编码代理 | 使用代理 |
|---|---|---|
| 运行位置 | GitHub 云 | 您的 VS Code 编辑器 |
| 独立性 | 完全自主 | 涉及用户交互和迭代 |
| 输出 | 创建拉取请求 | 直接编辑文件 |
| 最适合 | 定义明确的任务、后台工作 | 交互式开发、即时反馈 |
了解有关在 VS Code 中使用代理的更多信息。
为什么代理没有启动?
- 验证您的 GitHub 帐户上的 Copilot 访问权限
- 确保您对存储库具有写入权限
- 检查是否为您的组织启用了 Copilot 编码代理
为什么初始提交显示为空?
当 Copilot 编码代理开始工作时,它会创建一个初始空提交以建立拉取请求和工作分支。这是预期行为 - 代理将在 GitHub 的云环境中工作时推送包含实际代码更改的后续提交。
您可以通过拉取请求、GitHub Pull Request 扩展的“Copilot on My Behalf”部分或“Chat Sessions”视图中的会话日志来监视进度。
为什么实现不完整?
- 查看会话日志中遇到的任何错误
- 检查代理工作期间测试是否失败
- 在您的问题描述中提供更详细的要求
Copilot 编码代理有哪些安全保护?
Copilot 编码代理包含内置安全保护,并在 GitHub 的安全框架内运行。有关安全措施、权限和分支保护兼容性的详细信息,请参阅GitHub Copilot 编码代理安全文档。
我可以使用外部工具扩展 Copilot 编码代理吗?
对于高级场景,您可以使用模型上下文协议 (MCP) 服务器扩展 Copilot 编码代理,使其能够访问
- 外部数据库
- 云服务
- API 和第三方集成
- 自定义开发工具
了解有关使用 MCP 扩展 Copilot 编码代理的更多信息。
当前的局限性是什么?
- 跨存储库更改:只能在分配了问题的存储库中工作
- 每个任务多个 PR:每个分配的任务只打开一个拉取请求
- 现有 PR 修改:无法处理它没有创建的拉取请求
有关局限性、兼容性和使用成本的详细信息,请参阅GitHub Copilot 编码代理文档。
后续步骤
- 按照GitHub 设置指南启用 Copilot 编码代理
- 尝试在 VS Code 聊天中使用代理以获得即时、交互式编码帮助