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

工作原理
Copilot 编码代理工作流
- 分配:你将 GitHub 问题分配给 @copilot,从 VS Code 聊天中委托任务,或使用 TODO 代码操作
- 分析:代理分析任务和你的仓库结构
- 开发:Copilot 在其独立的 GitHub Actions 环境中工作,它可以在其中- 探索你的代码库
- 跨多个文件进行更改
- 运行构建和测试
- 执行代码检查和其他自动化检查
 
- 拉取请求:代理创建包含实现的拉取请求
- 审查:你审查更改并通过 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 的工作——所有活动的会话和拉取请求都将出现在此部分中,无论你在何处启动它们。
查看详细的会话日志
- 
在“拉取请求”视图中,在“Copilot on My Behalf”下找到你的代理的工作 
- 
选择“View Session”以查看代理所做的一切的详细日志 - 执行的命令
- 修改的文件
- 运行的测试
- 决策过程
  
使用专用聊天编辑器管理会话(实验性)
你可以从专用的聊天编辑器管理编码代理会话,该编辑器使你能够
- 实时跟踪编码代理的进度
- 直接从聊天提供后续指令
- 在专用环境中查看代理的响应
- 直接从聊天编辑器查看或应用代码更改并签出拉取请求
- 通过改进的连续性,实现从本地聊天到 GitHub 代理任务的无缝过渡
- 受益于改进的可视清晰度,获得更好的会话渲染
- 享受更快的会话加载,获得更灵敏的体验
启用实验性设置 chat.agentSessionsViewLocation 以试用此功能
- 
当设置为 view时,你将在 VS Code 侧边栏中看到一个“聊天会话”视图,用于管理本地和编码代理会话。该视图现在包含带有详细上下文的丰富描述,可帮助你快速找到相关信息。 
- 
当设置为 showChatsMenu时,编码代理会话会与本地聊天历史记录一起显示 
当你启动会话时,编码代理创建的拉取请求也会作为卡片呈现在“聊天”视图中,提供更好的视觉集成。
改进的委托体验
在最近的更新中,从 VS Code 到 GitHub 编码代理的委托体验得到了显著增强
- 更好的上下文转发:当你从聊天中委托任务时,包括文件引用在内的额外上下文会自动转发到 GitHub 编码代理
- 实时进度:新的聊天编辑器打开,实时显示编码代理的进度
- 无缝过渡:从本地聊天到 GitHub 代理任务时,连续性得到改进
- 增强的视觉集成:拉取请求在“聊天”视图中以交互式卡片形式呈现,以实现更好的导航
这些改进使为编码代理精确规划任务和监控其进度变得更容易,而无需离开 VS Code。
取消正在运行的会话
如果你需要停止代理,可以留在 VS Code 中,并使用 PR 概览页面上的“取消编码代理”按钮。
你也可以从 GitHub.com 取消会话
- 转到 GitHub.com 上的 GitHub 仓库
- 导航到“Actions”选项卡
- 找到正在运行的 Copilot 编码代理工作流
- 选择“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 提供两种自主编码体验。代理模式直接在编辑器中提供交互式开发,而 Copilot 编码代理在 GitHub 上独立工作,在后台实现功能。
| 功能 | Copilot 编码代理 | 代理模式 | 
|---|---|---|
| 运行位置 | GitHub 云 | 你的 VS Code 编辑器 | 
| 独立性 | 完全自主 | 涉及用户交互和迭代 | 
| 输出 | 创建拉取请求 | 直接编辑文件 | 
| 最适合 | 明确定义的任务,后台工作 | 交互式开发,即时反馈 | 
在其文档中了解有关代理模式的更多信息。
为什么代理没有启动?
- 验证你的 GitHub 账户上的 Copilot 访问权限
- 确保你对仓库具有写入权限
- 检查是否为你的组织启用了 Copilot 编码代理
为什么初始提交显示为空?
当 Copilot 编码代理开始工作时,它会创建一个初始空提交以建立拉取请求和工作分支。这是预期行为——代理将在 GitHub 的云环境中工作时,在后续提交中推送实际的代码更改。
你可以通过拉取请求、GitHub Pull Request 扩展的“Copilot on My Behalf”部分或“聊天会话”视图中可访问的会话日志来监控进度。
为什么实现不完整?
- 查看会话日志中是否有遇到的错误
- 检查代理工作期间测试是否失败
- 在问题描述中提供更详细的要求
Copilot 编码代理有哪些安全防护?
Copilot 编码代理包含内置安全防护,并在 GitHub 的安全框架内运行。有关安全措施、权限和分支保护兼容性的详细信息,请参阅GitHub Copilot 编码代理安全文档。
我可以使用外部工具扩展 Copilot 编码代理吗?
对于高级场景,你可以使用模型上下文协议 (MCP) 服务器扩展 Copilot 编码代理,使其能够访问
- 外部数据库
- 云服务
- API 和第三方集成
- 自定义开发工具
了解有关使用 MCP 扩展 Copilot 编码代理的更多信息。
当前的限制是什么?
- 跨仓库更改:只能在分配了问题的仓库中工作
- 每个任务多个 PR:每个分配的任务只打开一个拉取请求
- 现有 PR 修改:无法处理它未创建的拉取请求
有关限制、兼容性和使用成本的详细信息,请参阅GitHub Copilot 编码代理文档。
后续步骤
- 按照GitHub 设置指南启用 Copilot 编码代理
- 尝试VS Code 中的代理模式,以获得即时、交互式编码协助
- 了解在 VS Code 中使用聊天以获得对话式 AI 帮助