现已发布!阅读关于 11 月新增功能和修复的内容。

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 编码代理工作流

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

先决条件

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

确保您使用正确的 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”视图中,导航到“Issues”部分

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

  3. 右键单击该问题并选择“Assign to Copilot”或选择“Assign”,然后选择 @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. 从可用的代码操作中选择“Delegate to coding agent

    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 on My Behalf”部分,显示

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

Screenshot showing status of multiple coding agent pull requests

提示

您还可以通过 GitHub.com 监视您分配给 @copilot 的工作 - 所有活动会话和拉取请求都将显示在此部分中,无论您在哪里启动它们。

查看详细的会话日志

  1. 在 Pull Requests 视图中,在“Copilot on My Behalf”下找到代理的工作

  2. 选择“View Session”以查看代理所做的所有操作的详细日志

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

    Screenshot showing the session log of a coding agent session.

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

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

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

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

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

    Screenshot showing the Coding Agents view.

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

    Screenshot showing the Coding Agent Sessions Quick Pick.

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

改进的委托体验

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

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

这些改进使您可以更轻松地为编码代理精确规划任务并监视其进度,而无需离开 VS Code。

取消正在运行的会话

如果您需要停止代理,您可以留在 VS Code 中并使用 PR 概述页面上的“Cancel coding agent”按钮。

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

  1. 转到 GitHub.com 上的 GitHub 存储库
  2. 导航到“Actions”选项卡
  3. 找到正在运行的 Copilot Coding Agent 工作流
  4. 选择“Cancel workflow

审查和迭代

工作完成

在 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 提供了两种自主编码体验。虽然在 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 编码代理文档

后续步骤

© . This site is unofficial and not affiliated with Microsoft.