Copilot 云代理概览(原 Copilot 编码代理)
有了 Copilot 云代理,GitHub Copilot 能像人类开发者一样在后台独立完成任务。
Copilot 云代理可以
- 研究仓库
- 创建实现计划
- 修复漏洞
- 实现增量新功能
- 提升测试覆盖率
- 更新文档
- 处理技术债务
- 解决合并冲突
当你将任务委派给 Copilot 云代理时,你可以
- 使用代理面板或 GitHub.com 上的其他入口让 Copilot 研究、计划并在分支上进行代码更改,然后在创建拉取请求前进行迭代。你也可以在提示中注明希望立即创建拉取请求。参见 使用 Copilot 云代理研究、计划并迭代代码更改。
- 从其他入口(包括 GitHub Issues 和 Visual Studio Code)请求 Copilot 打开新的拉取请求。参见 请求 GitHub Copilot 创建拉取请求。
- 在已有的拉取请求中 @copilot 提及,以请求它进行更改。参见 请求 GitHub Copilot 对已有拉取请求进行更改。
- 从安全活动中将安全警报指派给 Copilot。参见 在安全活动中修复警报。
Copilot 云代理会根据你提供的提示评估分配给它的任务。
在处理编码任务时,Copilot 云代理拥有自己的临时开发环境(由 GitHub Actions 提供动力),可以在其中探索代码、进行更改、执行自动化测试、运行代码检查等。
注意
在 GitHub.com 上,仅通过 Copilot 云代理才能在创建拉取请求之前进行深入研究、计划和代码更改的迭代。云代理的集成(如 Azure Boards、JIRA、Linear、Slack 或 Teams)仅支持直接创建拉取请求。
相较传统 AI 工作流的优势
如果使用得当,Copilot 云代理相较 IDE 中的传统 AI 助手可提供更高的生产力收益。
-
使用 IDE 中的 AI 助手时,编码发生在 本地。开发者与 AI 助手进行 同步 配对会话。会话期间作出的决定 未被跟踪,除非提交,否则会随时间流逝而丢失。虽然助手能帮助编写代码,但开发者仍需执行大量 手动步骤:创建分支、编写提交信息、推送更改、打开 PR、撰写 PR 描述、接受审查、在 IDE 中迭代并重复这些步骤。这些步骤会占用时间和精力,对简单或例行的问题来说难以证明其价值。
-
使用 Copilot 云代理时,所有编码与迭代均在 GitHub 上完成。你可以让 Copilot 研究仓库、制定计划,并在分支上 进行代码更改——在打开拉取请求之前完成所有工作。你还能创建多个专注于不同任务类型的自定义代理。Copilot 会 自动化 分支创建、提交信息编写以及推送。开发者让代理在后台运行,然后在准备好时 创建拉取请求。在 GitHub 上工作带来了 透明性——每一步都有提交记录并可在日志中查看,同时为整个团队打开了 协作的机会。
Copilot 云代理 vs 代理模式
Copilot 云代理与 IDE 中的“代理模式”功能不同。Copilot 云代理在由 GitHub Actions 驱动的环境中自主完成通过 GitHub Issues 或 GitHub Copilot Chat 提示分配的开发任务。它可以研究仓库、制定计划、在分支上进行代码更改,并可选择性地打开拉取请求。而 IDE 中的代理模式则直接在本地开发环境中进行自主编辑。更多关于代理模式的信息,请参见 在 IDE 中向 GitHub Copilot 提问。
使用 Copilot 云代理简化软件开发
将任务指派给 Copilot 云代理可以提升软件开发工作流的效率。
例如,你可以在待办事项中为简单的 issue 选择“Copilot”作为受理人。这让你能把更多时间用于更复杂或更有趣的工作,或需要高度创造性思考的任务。Copilot 云代理可以处理那些提升代码库或产品质量的“可有可无”问题,而这些问题往往会因你专注于更紧急的工作而被搁置。
将 Copilot 云代理作为额外的编码资源,还能让你启动本来可能因资源不足而未能开始的任务。例如,你可以创建重构代码或添加日志的 issue,然后立即指派给 Copilot。
你也可以让 Copilot 云代理在任何代码编写之前研究仓库并制定计划,帮助你了解代码库的工作方式或在进行更改前达成一致的实现方案。参见 使用 Copilot 云代理研究、计划并迭代代码更改。
Copilot 云代理可以启动任务,随后由你接手继续完成。通过把初始工作交给 Copilot,你可以腾出本来用于重复性任务(例如为新项目搭建脚手架)的时间。
你可以为不同任务创建专门的自定义代理。例如,创建专注于 React 组件和样式的前端开发代理,或者创建擅长编写和更新技术文档的文档代理,亦或是专注生成全面单元测试的测试代理。每个自定义代理都可以通过特定的提示和工具进行量身定制。
衡量 Copilot 云代理的拉取请求结果
企业管理员和组织所有者可以使用 Copilot 使用情况指标来分析由 Copilot 云代理创建的拉取请求的结果。
Copilot 使用情况指标 API 包含以下拉取请求生命周期指标:
- 创建并合并的拉取请求总数
- 由 Copilot 云代理创建且已合并的拉取请求数量
- 已合并拉取请求的中位合并时间(包括由 Copilot 云代理创建的请求)
这些指标可帮助你跟踪 Copilot 云代理的采纳情况,并随时间监控拉取请求吞吐量和合并时长的变化。参见 GitHub Copilot 使用情况指标。
将 Copilot 云代理与第三方工具集成
你也可以从外部工具调用 Copilot 云代理,从而在不离开工作流的情况下指派任务、提供上下文并打开拉取请求。参见 关于 Copilot 集成
使 Copilot 云代理可用
在指派任务给 Copilot 云代理之前,需要先启用该功能。
Copilot 云代理随 GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot Business 和 GitHub Copilot Enterprise 计划提供。
如果你是 GitHub Copilot Business 或 GitHub Copilot Enterprise 订阅者,管理员必须先启用相应的策略才能使用该代理。
仓库所有者可以选择对部分或全部仓库关闭 Copilot 云代理。
更多信息请参见 管理对 GitHub Copilot 云代理的访问。
Copilot 云代理的 AI 模型
根据你启动 Copilot 云代理任务的方式,可能可以选择其使用的模型。不同模型在不同任务类型下的表现或响应质量可能有所差异。
更多信息请参见 更改 GitHub Copilot 云代理的 AI 模型。
提升 Copilot 云代理对仓库的了解
Copilot 云代理对仓库代码、使用的工具以及你的编码标准和实践了解得越多,其效能就越高。提升其了解程度有两种方式。
-
自定义指令
这些是你在仓库中以一个或多个文件形式编写并存储的简短自然语言说明。如果你是 GitHub 上组织的所有者,还可以在组织设置中定义自定义指令。更多信息请参见 关于自定义 GitHub Copilot 响应。
-
Copilot Memory(公开预览)
如果你拥有 Copilot Pro 或 Copilot Pro+ 计划,可启用 Copilot Memory。此功能允许 Copilot 为仓库存储其自行推断的有用细节,随后 Copilot 云代理在该仓库工作时即可使用这些信息。更多信息请参见 关于 GitHub Copilot 的代理记忆。
Copilot 云代理使用成本
Copilot 云代理消耗 GitHub Actions 的执行分钟数以及 Copilot 的高级请求配额。
在你的 GitHub Actions 与高级请求的月度配额范围内,你可以让 Copilot 云代理执行编码任务,而无需产生额外费用。
更多信息请参见 GitHub Copilot 许可。
自定义 Copilot 云代理
你可以通过多种方式自定义 Copilot 云代理
- 自定义指令:自定义指令允许你为 Copilot 提供有关项目以及如何构建、测试和验证其更改的额外上下文。更多信息请参见 为 GitHub Copilot 添加仓库自定义指令。
- 模型上下文协议(MCP)服务器:MCP 服务器使 Copilot 能访问不同的数据源和工具。更多信息请参见 使用模型上下文协议(MCP)扩展 GitHub Copilot 云代理。
- 自定义代理:自定义代理让你为不同任务创建专门的 Copilot 版本。例如,你可以将 Copilot 定制为遵循团队指南的前端专家。更多信息请参见 关于自定义代理。
- 钩子(Hooks):钩子允许你在代理执行的关键节点运行自定义 shell 命令,从而实现验证、日志记录、安全扫描或工作流自动化等功能。更多信息请参见 关于钩子。
- 技能(Skills):技能让你通过指令、脚本和资源增强 Copilot 执行特定任务的能力。更多信息请参见 关于代理技能。
Copilot 云代理的限制
Copilot 云代理在软件开发工作流以及与其他功能的兼容性方面存在一些限制。
Copilot 云代理软件开发工作流的限制
- Copilot 只能对启动任务时指定的仓库进行更改。Copilot 无法在一次运行中跨多个仓库进行更改。
- 默认情况下,Copilot 只能访问启动任务时指定的仓库上下文。Copilot MCP 服务器默认配置为仅允许 Copilot 访问其工作仓库中的上下文(例如 issue 和历史拉取请求)。你仍可以配置更广泛的访问权限。参见 使用模型上下文协议(MCP)扩展 GitHub Copilot 云代理。
- Copilot 一次只能在一个分支上工作,并且只能为每个分配的任务打开一个拉取请求。
Copilot 云代理与其他功能兼容性的限制
- Copilot 可能无法遵守对仓库配置的某些规则。如果你配置了与 Copilot 云代理不兼容的规则集或分支保护规则,代理的访问将被阻止。例如,仅允许特定提交作者的规则会阻止 Copilot 云代理创建或更新拉取请求。如果规则是通过规则集配置的,你可以将 Copilot 添加为绕过主体以启用访问。参见 为仓库创建规则集。
- Copilot 云代理不考虑内容排除设置。内容排除允许管理员配置 Copilot 忽略特定文件。使用 Copilot 云代理时,Copilot 不会忽略这些文件,仍然可以看到并更新它们。参见 从 GitHub Copilot 中排除内容。
- Copilot 云代理仅适用于托管在 GitHub 上的仓库。如果你的仓库存放在其他代码托管平台上,Copilot 将无法在其上工作。
实战练习
尝试 使用 Copilot 云代理扩展团队技能练习,以获得实际使用经验。