参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

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 聊天中委派任务,或使用 TODO 代码操作
  2. 分析:代理分析任务和你的代码仓库结构
  3. 开发:Copilot 在其独立的 GitHub Actions 环境中工作,它可以
    • 探索你的代码库
    • 跨多个文件进行更改
    • 运行构建和测试
    • 执行 linter 和其他自动化检查
  4. 拉取请求:代理创建一个包含实现内容的拉取请求
  5. 审查:你审查更改,并可以通过 PR 评论请求修改
  6. 迭代:代理响应反馈并更新实现

先决条件

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

  • GitHub Copilot 订阅:适用于 Copilot Pro、Pro+、Business 或 Enterprise 计划
  • 写入权限:你必须拥有代码仓库的写入权限
  • 启用代理:必须为你的帐户或组织启用 Copilot 编码代理
  • VS Code 设置:安装 GitHub Pull Requests 扩展

确保你已使用正确的 GitHub 帐户登录到 GitHub Pull Request 扩展。

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 Pull Requests 视图中,导航到问题部分

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

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

    提示

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

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

  5. 在 VS Code 中打开聊天视图 (⌃⌘I (Windows、Linux 为 Ctrl+Alt+I)) 屏幕截图显示 GitHub Pull Requests 视图,突出显示“分配给 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.

方法 3:使用编码代理修复 TODO

现在,代码中以 TODO 开头的注释会显示一个代码操作,以快速启动一个编码代理会话。这提供了一种直接从代码中委派特定任务的便捷方式。

提示

TODO 关键字可通过 githubIssues.createIssueTriggers 设置进行配置。你可以自定义哪些注释关键字会触发编码代理的代码操作。

  1. 导航到代码中的 TODO 注释

  2. 寻找灯泡图标或使用 ⌘. (Windows、Linux 为 Ctrl+.) 打开快速修复菜单

  3. 从可用的代码操作中选择委派给编码代理

    Screenshot of a code action above a 'TODO' comment called 'Delegate to coding agent'

  4. 编码代理将分析 TODO 注释,并在一个新的拉取请求中实现所请求的更改

跟踪代理进度

理解编码代理的工作流

当你将工作分配给 Copilot 编码代理时,它会遵循一个特定的工作流,这可能与你的预期有所不同

  1. 初始拉取请求创建:代理会立即创建一个带有一个初始空提交的拉取请求。这建立了所有更改都将在其中进行的工作区和分支。

  2. 后台处理:编码代理在 GitHub 的云基础设施(GitHub Actions 环境)中工作,而不是在你的本地机器上。这意味着

    • 所有开发都在 GitHub 的服务器上远程进行
    • 代理可以访问完整的代码仓库上下文
    • 即使你关闭 VS Code,工作也会继续
  3. 增量更新:在初始提交之后,代理将在开发解决方案的过程中推送包含实际代码更改的额外提交。

注意

如果你看到一个没有更改的初始提交,这是预期行为。代理将在后续的提交中继续推送实际的代码更改,因为它正在处理你的任务。

在 VS Code 中监控工作

GitHub Pull Requests 扩展提供了一个专用的由 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.

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

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

  • 实时关注编码代理的进度
  • 直接从聊天中提供后续指令
  • 在专用环境中查看代理的响应
  • 直接从聊天编辑器查看或应用代码更改并签出拉取请求
  • 体验从本地聊天到 GitHub 代理任务的无缝过渡,具有更好的连续性
  • 受益于更好的会话渲染,视觉清晰度更高
  • 享受更快的会话加载,获得更响应的体验

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

  • 当设置为 view 时,你将在 VS Code 侧边栏看到一个聊天会话视图,用于管理本地和编码代理会话。该视图现在包含带有详细上下文的丰富描述,以帮助你快速找到相关信息。

    Screenshot showing the Coding Agent Sessions view.

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

    Screenshot showing the Coding Agent Sessions Quick Pick.

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

改进的委派体验

从 VS Code 到 GitHub 编码代理的委派体验在最近的更新中得到了显著增强

  • 更好的上下文转发:当你从聊天中委派任务时,包括文件引用在内的额外上下文会自动转发给 GitHub 编码代理
  • 实时进度:新的聊天编辑器打开,实时显示编码代理的进度
  • 无缝过渡:从本地聊天转移到 GitHub 代理任务时,连续性得到改善
  • 增强的视觉集成:拉取请求在聊天视图中以交互式卡片的形式呈现,以便更好地导航

这些改进使得为编码代理精确规划任务并在不离开 VS Code 的情况下监控其进度变得更加容易。

取消正在运行的会话

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

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

  1. 在 GitHub.com 上转到你的 GitHub 代码仓库
  2. 导航到 Actions 选项卡
  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 编码代理开始工作时,它会创建一个初始的空提交来建立拉取请求和工作分支。这是预期行为——代理将在 GitHub 的云环境中工作时,在后续的提交中推送实际的代码更改。

你可以通过拉取请求、GitHub Pull Request 扩展的由 Copilot 代表我部分或聊天会话视图访问会话日志来监控进度。

为什么实现不完整?

  • 审查会话日志以查找遇到的任何错误
  • 检查代理工作期间测试是否失败
  • 在你的问题描述中提供更详细的要求

Copilot 编码代理有哪些安全保护措施?

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

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

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

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

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

当前有哪些限制?

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

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

后续步骤