参加你附近的 ,了解 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 编码代理工作流

  1. 分配:你将 GitHub 问题分配给 @copilot从 VS Code 聊天中委托任务,或使用 TODO 代码操作
  2. 分析:代理分析任务和你的仓库结构
  3. 开发:Copilot 在其独立的 GitHub Actions 环境中工作,它可以在其中
    • 探索你的代码库
    • 跨多个文件进行更改
    • 运行构建和测试
    • 执行代码检查和其他自动化检查
  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. 在“拉取请求”视图中,在“Copilot on My Behalf”下找到你的代理的工作

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

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

    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. 选择“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 提供两种自主编码体验。代理模式直接在编辑器中提供交互式开发,而 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 编码代理文档

后续步骤

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