GitHub Copilot 编码代理
GitHub Copilot 编码代理是一个由 GitHub 托管的自主 AI 开发人员,它在后台独立工作以完成开发任务。要调用编码代理,可以将 GitHub 问题分配给 Copilot 或从聊天中委派任务,代理将利用其独立的开发环境,自主地在你的代码仓库中实现功能、修复错误并进行更改。
这不同于 VS Code 中的代理模式,后者在编辑器内提供交互式开发,并需要在编码会话期间你的积极参与。
Copilot 编码代理处于预览阶段,可能会发生变化。在预览期间,使用此功能需遵守 GitHub 预发布许可条款。
工作原理
Copilot 编码代理工作流
- 分配:你将 GitHub 问题分配给
@copilot
、从 VS Code 聊天中委派任务,或使用 TODO 代码操作 - 分析:代理分析任务和你的代码仓库结构
- 开发:Copilot 在其独立的 GitHub Actions 环境中工作,它可以
- 探索你的代码库
- 跨多个文件进行更改
- 运行构建和测试
- 执行 linter 和其他自动化检查
- 拉取请求:代理创建一个包含实现内容的拉取请求
- 审查:你审查更改,并可以通过 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 视图中,导航到问题部分
-
找到你想分配给 Copilot 的问题
-
右键单击问题并选择分配给 Copilot,或选择分配然后选择
@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+.) 打开快速修复菜单
-
从可用的代码操作中选择委派给编码代理
-
编码代理将分析 TODO 注释,并在一个新的拉取请求中实现所请求的更改
跟踪代理进度
理解编码代理的工作流
当你将工作分配给 Copilot 编码代理时,它会遵循一个特定的工作流,这可能与你的预期有所不同
-
初始拉取请求创建:代理会立即创建一个带有一个初始空提交的拉取请求。这建立了所有更改都将在其中进行的工作区和分支。
-
后台处理:编码代理在 GitHub 的云基础设施(GitHub Actions 环境)中工作,而不是在你的本地机器上。这意味着
- 所有开发都在 GitHub 的服务器上远程进行
- 代理可以访问完整的代码仓库上下文
- 即使你关闭 VS Code,工作也会继续
-
增量更新:在初始提交之后,代理将在开发解决方案的过程中推送包含实际代码更改的额外提交。
如果你看到一个没有更改的初始提交,这是预期行为。代理将在后续的提交中继续推送实际的代码更改,因为它正在处理你的任务。
在 VS Code 中监控工作
GitHub Pull Requests 扩展提供了一个专用的由 Copilot 代表我部分,显示
- 所有活动的 Copilot 编码代理会话
- 由代理创建的拉取请求
- 每个任务的进度状态
- 指示新更改或更新的数字徽章
你也可以通过 GitHub.com 监控你分配给 @copilot
的工作——无论你在哪里发起它们,所有活动的会话和拉取请求都将出现在此部分。
查看详细的会话日志
-
在拉取请求视图中,在由 Copilot 代表我下找到你的代理的工作
-
选择查看会话以查看代理所做的一切的详细日志
- 执行的命令
- 修改的文件
- 运行的测试
- 决策过程
使用专用聊天编辑器管理会话(实验性)
你可以从一个专用的聊天编辑器管理编码代理会话,这使你能够
- 实时关注编码代理的进度
- 直接从聊天中提供后续指令
- 在专用环境中查看代理的响应
- 直接从聊天编辑器查看或应用代码更改并签出拉取请求
- 体验从本地聊天到 GitHub 代理任务的无缝过渡,具有更好的连续性
- 受益于更好的会话渲染,视觉清晰度更高
- 享受更快的会话加载,获得更响应的体验
启用实验性设置 chat.agentSessionsViewLocation 来尝试此功能
-
当设置为
view
时,你将在 VS Code 侧边栏看到一个聊天会话视图,用于管理本地和编码代理会话。该视图现在包含带有详细上下文的丰富描述,以帮助你快速找到相关信息。 -
当设置为
showChatsMenu
时,编码代理会话会与本地聊天历史记录一起出现
当你启动会话时,由编码代理创建的拉取请求也会在聊天视图中以卡片形式呈现,提供更好的视觉集成。
改进的委派体验
从 VS Code 到 GitHub 编码代理的委派体验在最近的更新中得到了显著增强
- 更好的上下文转发:当你从聊天中委派任务时,包括文件引用在内的额外上下文会自动转发给 GitHub 编码代理
- 实时进度:新的聊天编辑器打开,实时显示编码代理的进度
- 无缝过渡:从本地聊天转移到 GitHub 代理任务时,连续性得到改善
- 增强的视觉集成:拉取请求在聊天视图中以交互式卡片的形式呈现,以便更好地导航
这些改进使得为编码代理精确规划任务并在不离开 VS Code 的情况下监控其进度变得更加容易。
取消正在运行的会话
如果你需要停止代理,可以留在 VS Code 中,并使用 PR 概览页面上的取消编码代理按钮。
你也可以从 GitHub.com 取消会话
- 在 GitHub.com 上转到你的 GitHub 代码仓库
- 导航到 Actions 选项卡
- 找到正在运行的 Copilot 编码代理工作流
- 选择取消工作流
审查和迭代
工作完成
在 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 代表我部分或聊天会话视图访问会话日志来监控进度。
为什么实现不完整?
- 审查会话日志以查找遇到的任何错误
- 检查代理工作期间测试是否失败
- 在你的问题描述中提供更详细的要求
Copilot 编码代理有哪些安全保护措施?
Copilot 编码代理包含内置的安全保护,并在 GitHub 的安全框架内运行。有关安全措施、权限和分支保护兼容性的详细信息,请参阅 GitHub Copilot 编码代理安全文档。
我可以使用外部工具扩展 Copilot 编码代理吗?
对于高级场景,你可以使用模型上下文协议 (MCP) 服务器扩展 Copilot 编码代理,使其能够访问
- 外部数据库
- 云服务
- API 和第三方集成
- 自定义开发工具
了解更多关于使用 MCP 扩展 Copilot 编码代理的信息。
当前有哪些限制?
- 跨代码仓库更改:只能在分配问题的代码仓库内工作
- 每个任务多个 PR:每个分配的任务只打开一个拉取请求
- 修改现有 PR:不能处理非其创建的拉取请求
有关限制、兼容性和使用成本的详细信息,请参阅 GitHub Copilot 编码代理文档。
后续步骤
- 按照 GitHub 设置指南启用 Copilot 编码代理
- 尝试 VS Code 中的代理模式以获得即时、交互式的编码辅助
- 了解在 VS Code 中使用聊天以获得对话式 AI 帮助