尝试以扩展 VS Code 中的代理模式!

GitHub Copilot 编码代理

GitHub Copilot 编码代理是一个由 GitHub 托管的自主 AI 开发者,它在后台独立工作以完成开发任务。要调用编码代理,请将 GitHub 问题分配给 Copilot 或从聊天中委派任务,代理将在其自己隔离的开发环境中自主工作,以实现功能、修复错误,并在您的存储库中进行更改。

这与 VS Code 中的代理模式不同,后者在编辑器内提供交互式开发,并需要在编码会话期间您的积极参与。

GIF showing how to assign an issue to Copilot coding agent from within VS Code.

注意

Copilot 编码代理处于预览阶段,可能会发生变化。在预览期间,使用此功能须遵守 GitHub 预发布许可条款

工作原理

Copilot 编码代理工作流

  1. 分配:您将 GitHub 问题分配给 @copilot从 VS Code 聊天中委派任务
  2. 分析:代理分析任务和您的存储库结构
  3. 开发:Copilot 在其自己隔离的 GitHub Actions 环境中工作,它可以
    • 浏览您的代码库
    • 跨多个文件进行更改
    • 运行构建和测试
    • 执行 linter 和其他自动化检查
  4. 拉取请求:代理创建一个包含实现的拉取请求
  5. 审查:您审查更改,并可以通过 PR 评论请求修改
  6. 迭代:代理响应反馈并更新实现

先决条件

在使用 Copilot 编码代理之前,您需要

  • GitHub Copilot 订阅:适用于 Copilot Pro、Pro+、Business 或 Enterprise 计划
  • 写入权限:您必须对存储库具有写入权限
  • 启用代理:必须为您的帐户或组织启用 Copilot 编码代理
  • VS Code 设置:安装 GitHub 拉取请求扩展

确保您已使用正确的 GitHub 帐户登录 GitHub 拉取请求扩展。

Screenshot showing the accounts menu, highlighting the sign in to GitHub Pull Request action.

可选:启用实验性设置 githubPullRequests.codingAgent.uiIntegration,以在 Copilot Chat 中显示一个委派给编码代理按钮,以便更轻松地委派任务。

您还可以通过启用实验性设置 chat.agentSessionsViewLocation,从专用的聊天编辑器管理编码代理会话,并查看一个聊天会话视图。

提示

如果您还没有 Copilot 访问权限,可以注册 Copilot 免费计划以获得每月的交互限制。

在 VS Code 中为 Copilot 编码代理分配工作

方法 1:将问题分配给 Copilot

您可以通过将 GitHub 问题分配给 Copilot 来触发 Copilot 编码代理,这与您将问题分配给团队成员的方式类似。Copilot 编码代理会自动分析问题并开始处理它。

  1. GitHub 拉取请求视图中,导航到问题部分

  2. 找到您想要分配给 Copilot 的问题

  3. 右键单击问题并选择分配给 Copilot 或选择分配然后选择 @copilot

    提示

    您也可以直接在 GitHub.com 上将问题分配给 @copilot。编码代理将以同样的方式工作,创建一个拉取请求,然后您可以在 VS Code 或 GitHub 上进行审查。

  4. 代理将在后台开始处理该问题

  5. 在 VS Code 中打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 屏幕截图显示 GitHub 拉取请求视图,突出显示分配给 Copilot 的操作,以及分配给 Copilot 的工作的 PR 查询。

方法 2:从聊天中委派

您也可以直接从您的聊天对话中将工作交给 Copilot 编码代理。您可以将任务委派给编码代理,让它在后台自主工作,而不是让代理模式立即在您的编辑器中实现更改。

  1. 在 VS Code 中打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))

  2. 就您想要实现的功能或更改进行对话

  3. 准备好后,使用以下方法之一委派给代理

    使用委派按钮(实验性)

    启用实验性设置 githubPullRequests.codingAgent.uiIntegration,以便在已启用代理的存储库的聊天视图中显示一个委派给编码代理按钮。选择此按钮可将您当前的聊天上下文交给编码代理。

    使用 #copilotCodingAgent 工具

    您还可以在您的提示中直接引用 #copilotCodingAgent 工具,要求 Copilot 在后台继续本地更改。此工具会自动将待处理的更改推送到远程分支,并发起一个编码代理会话

    Screenshot showing handing off a session to Copilot coding agent

  4. 代理将创建一个拉取请求并开始实现所讨论的更改。当您启动编码代理会话时(通过 #copilotCodingAgent 或使用委派给编码代理操作),拉取请求将在聊天视图中以卡片形式呈现。

    Screenshot of a coding agent PR card in the Chat view.

跟踪代理进度

在 VS Code 中监控工作

GitHub 拉取请求扩展提供了一个专门的代表我的 Copilot部分,显示

  • 所有活动的 Copilot 编码代理会话
  • 由代理创建的拉取请求
  • 每个任务的进度状态
  • 指示新更改或更新的数字徽章

Screenshot showing status of multiple coding agent pull requests

提示

您还可以通过 GitHub.com 监控您分配给 @copilot 的工作——所有活动的会话和拉取请求都将出现在此部分,无论您在哪里发起它们。

查看详细的会话日志

  1. 在拉取请求视图中,在代表我的 Copilot下找到您的代理工作

  2. 选择查看会话以查看代理所做的一切的详细日志

    • 执行的命令
    • 修改的文件
    • 运行的测试
    • 决策过程

    Screenshot showing the session log of a coding agent session.

使用专用聊天编辑器管理会话(实验性)

您可以从专用的聊天编辑器管理编码代理会话,这使您能够

  • 实时跟踪编码代理的进度
  • 直接从聊天中提供后续指令
  • 在专门的环境中查看代理的响应

启用实验性设置 chat.agentSessionsViewLocation 以尝试此功能

  • 当设置为 view 时,您将在 VS Code 侧边栏中看到一个聊天会话视图,用于管理本地和编码代理会话

    Screenshot showing the Coding Agent Sessions view.

  • 当设置为 showChatsMenu 时,编码代理会话会与本地聊天历史一起出现

    Screenshot showing the Coding Agent Sessions Quick Pick.

当您启动会话时,由编码代理创建的拉取请求也会在聊天视图中以卡片形式呈现,提供更好的视觉集成。

取消正在运行的会话

如果您需要停止代理,可以停留在 VS Code 中,并使用 PR 概览页面上的取消编码代理按钮。

您也可以从 GitHub.com 取消会话

  1. 在 GitHub.com 上转到您的 GitHub 存储库
  2. 导航到操作选项卡
  3. 找到正在运行的 Copilot 编码代理工作流
  4. 选择取消工作流

审查和迭代

工作完成

在 Copilot 编码代理分析了您的代码并确定了完成任务所需的更改后,它会执行以下步骤

  • 创建一个包含所有更改的拉取请求
  • 将 PR 分配给您进行审查
  • 请求您作为审查者
  • 包含一个详细描述以解释实现
  • 在适用时添加屏幕截图(用于 UI 更改)

Screenshot showing a pull request from Copilot coding agent displayed in VS Code with an included screenshot of the implemented feature.

提供反馈

您可以通过拉取请求评论来指导代理的工作。请确保在您的评论中标记 @copilot,以便代理会响应

  1. 请求更改:留下关于需要修改的具体反馈

    @copilot Please update the login form to include password strength validation
    
  2. 请求改进:要求额外的功能或优化

    @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 编码代理有哪些安全保护措施?

Copilot 编码代理包含内置的安全保护措施,并在 GitHub 的安全框架内运行。有关安全措施、权限和分支保护兼容性的详细信息,请参阅 GitHub Copilot 编码代理安全文档

我可以用外部工具扩展 Copilot 编码代理吗?

对于高级场景,您可以使用模型上下文协议 (MCP) 服务器扩展 Copilot 编码代理,使其能够访问

  • 外部数据库
  • 云服务
  • API 和第三方集成
  • 自定义开发工具

了解更多关于使用 MCP 扩展 Copilot 编码代理的信息。

当前的限制是什么?

  • 跨存储库更改:只能在分配问题的存储库内工作
  • 每个任务多个 PR:每个分配的任务只打开一个拉取请求
  • 现有 PR 修改:无法处理非其创建的拉取请求

有关限制、兼容性和使用成本的详细信息,请参阅 GitHub Copilot 编码代理文档

后续步骤