Skip to main content

关于 GitHub Copilot 编码代理

你可以要求 Copilot 打开新的拉取请求或修改现有拉取请求。 Copilot 在后台工作,然后请求你审核。

谁可以使用此功能?

Copilot编程助理 可用于 GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot业务 和 GitHub Copilot Enterprise 计划。 该代理在 GitHub 上存储的所有仓库中均可用,但以下情况除外:由 托管用户帐户 拥有的仓库,以及已显式禁用该代理的仓库。
Sign up for Copilot

Copilot编程助理 概述

借助 Copilot编程助理,GitHub Copilot 可以在后台独立工作来完成任务,就像人类开发人员一样。

Copilot编程助理 可以:

  • 修复 Bug
  • 实现增量新功能
  • 改进测试覆盖率
  • 更新文档
  • 处理技术债务

要将任务委托给 Copilot编程助理,你可以:

Copilot编程助理 会根据你给出的提示(无论是来自问题描述还是聊天消息)评估分配给它的任务。 然后 Copilot编程助理 会进行必要的更改并打开拉取请求。 Copilot编程助理 完成后,会请求你审核,你可以留下拉取请求评论,要求 Copilot编程助理 迭代优化。

处理编码任务时,Copilot编程助理 可以访问自己的临时开发环境(由 GitHub Actions 提供支持),在其中可以浏览你的代码、进行更改、执行自动化测试和代码检查等操作。

优于传统 AI 工作流的优势

有效使用时,Copilot编程助理 提供优于 IDE 中传统 AI 助手的生产力优势:

  • 借助 IDE 中的 AI 助手,可在本地进行编码。******** 单个开发人员使用 AI 助手在同步会话中进行协作。**** 在会话期间做出的决策未被跟踪,除非提交,否则会随着时间的推移而丢失。**** 虽然助手帮助编写代码,但开发人员仍有很多人工步骤要做:创建分支、编写提交信息、推送更改、打开 PR、编写 PR 说明、进行评审、在 IDE 中迭代和重复。 对于简单或常规问题而言,这些步骤耗费的时间和精力可能难以证明其合理性。

  • 借助 Copilot编程助理,所有编码和迭代都在 GitHub 上作为拉取请求工作流的一部分执行。******** 可以创建多个 自定义代理,专门执行不同类型的任务。 Copilot 自动执行分支创建、提交消息写入和推送、PR 打开和 PR 描述撰写。**** 开发人员允许代理在后台工作,然后通过 PR 审查将 Copilot 引导至最终解决方案。 在 GitHub 上工作增加了<0>透明度</0>,每一步都在提交中进行,并在日志中可查看,同时为整个团队创造了<0>协作</0>机会。

Copilot编程助理 与代理模式

Copilot编程助理 与 IDE 中可用的“智能体模式”功能不同。 Copilot编程助理 在 GitHub Actions 提供支持的环境中自主工作,以完成通过 GitHub 问题或 GitHub Copilot 聊天 提示分配的开发任务,并创建包含结果的拉取请求。 相比之下,IDE 中的代理模式直接在本地开发环境中进行自治编辑。 有关代理模式的详细信息,请参阅 在 IDE 中提问GitHub Copilot 问题

使用 Copilot编程助理 简化软件开发

将任务分配给Copilot编程助理能够改进您的软件开发工作流程。

例如,你可以通过选择“Copilot”作为经办人,将 Copilot编程助理 分配到待办事项中简单的问题。 这样,你就可以花更少的时间处理这些问题,花更多的时间处理更复杂的或有趣的工作,或者需要高度创造性思维的工作。 Copilot编程助理 可以处理那些能提高代码库或产品质量但通常在你专注于更紧急工作时留在待办事项中的“锦上添花”类问题。

将 Copilot编程助理 作为额外的编码资源,还能让你启动那些因资源不足而原本无法启动的任务。 例如,你可以创建重构代码或添加更多日志的问题,然后立即将这些问题分配给 Copilot。

Copilot编程助理 可以启动任务,之后你再接手继续处理。 通过将初始工作分配给 Copilot,你可以腾出原本花费在重复性任务上的时间,例如为新项目设置基架。

你可以为不同任务创建专用的 自定义代理。 例如,你可以创建一个专门用于前端开发的 自定义智能体(专注于 React 组件和样式)、一个擅长编写和更新技术文档的文档智能体,或一个专门生成全面单元测试的测试智能体。 每个 自定义智能体 都可以通过适合其特定任务的专用提示和工具进行定制。

衡量 Copilot编程助理 的拉取请求结果

企业管理员和组织所有者可以使用 Copilot 使用情况指标,分析由 创建的拉取请求的拉取请求结果。

Copilot 使用情况指标 API 包括拉取请求生命周期指标,例如:

  • 创建和合并的拉取请求总数
  • 由 创建且已合并的拉取请求数量
  • 已合并拉取请求的合并中位时间(包括由 创建的拉取请求)

这些指标可帮助你跟踪 数据变量.copilot.copilot_coding_agent %} 的采用情况,并监控随时间推移的拉取请求吞吐量和合并时间的变化。 请参阅“GitHub Copilot使用情况指标”。

将 Copilot编程助理 集成到第三方工具中

你还可以从外部工具调用 Copilot编程助理,无需离开工作流即可向 Copilot 分配任务、提供上下文并打开拉取请求。 请参阅“关于 Copilot 集成

使 Copilot编程助理 可用

必须先启用 Copilot编程助理,然后才能向其分配任务。

Copilot编程助理 可用于 GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot业务 和 GitHub Copilot Enterprise 计划。

如果你是 GitHub Copilot业务 或 GitHub Copilot Enterprise 订阅者,则必须先由管理员启用相关策略,你才可以使用该代理。

存储库所有者可以选择将部分或所有存储库从Copilot编程助理中退出。

有关详细信息,请参阅 管理对 GitHub Copilot 编码代理的访问

Copilot编程助理 的 AI 模型

根据你如何启动 Copilot编程助理 任务,你可以选择 Copilot编程助理 使用的模型。 你可能会发现,根据分配给 Copilot 的任务类型,不同模型的表现更好或能提供更有用的响应。

有关详细信息,请参阅 更改 GitHub Copilot 编码代理的 AI 模型

增强 Copilot编程助理 对仓库的了解

Copilot编程助理 对仓库中的代码、你使用的工具以及你的编码标准和实践了解得越多,其效果就会越好。 可通过两种方式增强 Copilot编程助理对存储库的了解。

  •         **自定义指令**
    

    这些是以自然语言编写的简短语句,并将其作为一个或多个文件写入和存储于存储库中。 如果你是 GitHub 上的组织的所有者,还可以在组织的设置中定义自定义说明。 有关详细信息,请参阅 关于自定义GitHub Copilot 响应

  •         **Copilot内存** (公共预览版)
    

    如果你有 Copilot Pro 或 Copilot Pro+ 套餐,则可以启用 Copilot内存。 这允许 Copilot 存储其自行推断出的关于仓库的有用信息。 Copilot编程助理 之后在该仓库中工作时可以使用此信息。 有关详细信息,请参阅 关于GitHub Copilot的自主记忆

Copilot编程助理 使用成本

Copilot编程助理 使用 GitHub Actions 分钟数和 Copilot 高级请求。

在 GitHub Actions 和高级请求的每月使用额度内,你可以要求 Copilot编程助理 处理编码任务,无需支付额外费用。

有关详细信息,请参阅 GitHub Copilot许可证

自定义 Copilot编程助理

您可以通过多种方式自定义 Copilot编程助理:

  •         **自定义指令**:自定义指令允许你向 Copilot 提供有关项目以及如何构建、测试和验证其更改的额外上下文。 有关详细信息,请参阅 [AUTOTITLE](/copilot/how-tos/configure-custom-instructions/add-repository-instructions)。
    
  •         **模型上下文协议 (MCP) 服务器**:MCP 服务器允许你向 Copilot 提供对不同数据源和工具的访问权限。 有关详细信息,请参阅 [AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/extend-coding-agent-with-mcp)。
    
  •         **自定义智能体**:自定义智能体 允许你为不同任务创建 Copilot 的不同专用版本。 例如,你可以将 Copilot 自定义为遵循团队指南的专业前端工程师。 有关详细信息,请参阅 [AUTOTITLE](/copilot/concepts/agents/coding-agent/about-custom-agents)。
    
  •         **挂钩:挂钩**允许在代理执行期间在关键点执行自定义 shell 命令,使你能够添加验证、日志记录、安全扫描或工作流自动化。 有关详细信息,请参阅 [AUTOTITLE](/copilot/concepts/agents/coding-agent/about-hooks)。
    
  •         **技能**:技能允许你通过指令、脚本和资源增强 Copilot 执行专用任务的能力。 有关详细信息,请参阅 [AUTOTITLE](/copilot/concepts/agents/about-agent-skills)。
    

内置安全保护

与任何其他 AI 智能体一样,在启用 Copilot编程助理 时,安全性是一个至关重要的考虑因素。 Copilot编程助理 具有强大的内置安全保护基础,你可以通过遵循最佳做法指南来补充这些保护。

  •         **安全问题验证**:Copilot 会分析 Copilot编程助理 创建的代码是否存在安全问题,并尝试在完成拉取请求前解决这些问题。 这降低了 Copilot编程助理 生成的代码引入硬编码机密、不安全依赖项和其他漏洞等问题的可能性。 会话日志中可查看 Copilot编程助理 执行的分析和采取的操作的详细信息。 请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/track-copilot-sessions)”。
    
    * CodeQL 用于标识代码安全问题。
    • 新引入的依赖项会根据 GitHub Advisory Database 检查是否存在恶意软件公告以及任何 CVSS 评级为高或严重的漏洞。
    •       **Secret scanning** 用于检测敏感信息,例如 API 密钥、令牌和其他机密。
      
    • Copilot编程助理** 的安全验证不需要** GitHub Secret Protection, GitHub Code Security, or GitHub Advanced Security 许可证。
  •         **遵循现有治理**:组织设置和企业策略控制可用性。 为组织设置的任何安全策略和做法也适用于 Copilot编程助理。
    
  •         **受限开发环境**:Copilot编程助理 在沙盒开发环境中工作,且该环境的互联网访问由防火墙控制。 它对分配给它的存储库具有只读访问权限。
    
  •         **分支访问限制**:Copilot编程助理 只能创建和推送到以 `copilot/` 开头的分支。 它受任何分支保护约束,并且需要检查工作存储库。
    
  •         **仅响应具有写入权限的用户**:Copilot编程助理 不会响应访问级别较低的用户的反馈。
    
  •         **被视为外部协作者**
    
    • 由 Copilot编程助理 创建的拉取请求草稿必须由人审阅和合并。 Copilot编程助理 无法将其拉取请求标记为“准备审核”,也无法批准或合并拉取请求。
    • 默认情况下,GitHub Actions 工作流不会为 Copilot编程助理的拉取请求触发,直到对存储库具有写入访问权限的用户单击“ 批准并运行工作流 ”按钮。 您可以选择将 Copilot 配置为允许工作流自动运行。 请参阅“审查 GitHub Copilot 创建的拉取请求”。
  •         **合规性跟踪**:Copilot编程助理 的提交由分配问题或请求更改拉取请求的开发人员共同署名,以便追踪提议更改的归属。 要求 Copilot 创建拉取请求的开发人员无法批准该拉取请求。 在要求审批审核的存储库中,这确保至少有一名独立开发人员审核 Copilot编程助理 的工作。
    

有关详细信息,请参阅: * 在组织中试用 GitHub Copilot 编码代理(有关组织所有者如何进一步增强安全性的信息) * 在 GitHub.com 上负责任地使用GitHub Copilot编码代理 * GitHub Copilot 信任中心

风险和缓解措施

Copilot编程助理 是一个自主智能体,有权访问代码并可将更改推送到存储库。 这会带来一些风险。 如果可能,GitHub 已应用适当的缓解措施。

风险:Copilot编程助理 可以将代码更改推送到你的存储库

若要缓解此风险,GitHub:

  •         **限制谁可以向 Copilot编程助理 分配任务。** 只有对存储库具有写入权限的用户才能触发 Copilot编程助理 工作。 从不向代理显示没有写入权限的用户注释。
    
  •         **限制Copilot编程助理使用的访问令牌中的权限。** 仅允许推送到以 `copilot/` 开头的分支。 Copilot编程助理 无法推送到 `main` 或 `master` 分支。
    
  •         **限制 Copilot编程助理 的凭据。** Copilot编程助理 只能执行简单的推送操作。 它无法直接运行 `git push` 或其他 Git 命令。
    
  •         **限制 GitHub Actions 工作流运行。** 默认情况下,工作流不会在 Copilot编程助理 的代码被审核并且对存储库具有写入访问权限的用户单击“**批准并运行工作流**”按钮之前被触发。 (可选)可以将 Copilot 配置为允许工作流自动运行。 请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/review-copilot-prs#managing-github-actions-workflow-runs)”。 
    
  •         **防止要求 Copilot编程助理 创建拉取请求的用户批准该请求。** 这维持了“必需审批”规则和分支保护中的预期控制。 请参阅“[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets)”。
    

风险:Copilot编程助理 可以访问敏感信息

Copilot编程助理 可以访问代码和其他敏感信息,可能会因意外或恶意用户输入而泄露这些信息。 若要缓解此风险,GitHub:

  •         **限制 Copilot编程助理 的 Internet 访问。** 请参阅“[AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent)”。
    

风险:提示注入漏洞

用户可以在分配给 Copilot编程助理 的问题或留给 Copilot编程助理 的评论中包含隐藏消息,作为提示注入的一种形式。 若要缓解此风险,GitHub:

  •         **在将用户输入传递给 Copilot编程助理之前会筛选掉隐藏字符**:例如,作为HTML注释输入到问题或拉取请求评论中的文本将不会被传递给 Copilot编程助理。
    

Copilot编程助理 的限制

Copilot编程助理 在其软件开发工作流和与其他功能的兼容性方面存在一定限制。

Copilot编程助理 软件开发工作流的限制

  •         **Copilot 只能在启动任务时指定的存储库中进行更改**。 Copilot 无法在单次运行中跨多个存储库进行更改。
    
  •         **默认情况下,Copilot 只能访问启动任务时指定的存储库中的上下文**。 Copilot MCP 服务器默认配置为允许 Copilot 访问其工作所在存储库中的上下文(例如问题和历史拉取请求)。 然而,你可以配置更广泛的访问权限。 请参阅“[AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp)”。
    
  •         **Copilot 一次只能打开一个拉取请求**。 Copilot 将只打开一个拉取请求来处理分配给它的每个任务。
    

Copilot编程助理 与其他功能的兼容性限制

  •         **Copilot 无法遵守可能为你的存储库配置的某些规则**。 如果您已配置与 Copilot编程助理 不兼容的规则集或分支保护规则(例如“要求提交签名”规则),将会阻止对代理的访问。 如果规则是使用规则集配置的,你可以将 Copilot 添加为绕过参与者以启用访问。 请参阅“[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#granting-bypass-permissions-for-your-branch-or-tag-ruleset)”。
    
  •         **Copilot编程助理 不考虑内容排除项**。 内容排除使管理员能够配置 Copilot 以忽略某些文件。 使用 Copilot编程助理 时,Copilot 不会忽略这些文件,而是将能够查看和更新这些文件。 请参阅“[AUTOTITLE](/copilot/managing-copilot/configuring-and-auditing-content-exclusion/excluding-content-from-github-copilot)”。
    
  •         **Copilot编程助理 仅适用于 GitHub 托管的存储库**。 如果存储库是使用其他代码托管平台存储的,则 Copilot 将无法处理它。
    

动手练习

尝试“使用 Copilot编程助理 扩展团队”技能练习,以获取使用 Copilot编程助理 的实践经验。

其他阅读材料

  •         [AUTOTITLE](/copilot/using-github-copilot/coding-agent)使用指南文章
    
  •         [AUTOTITLE](/copilot/concepts/agents/coding-agent/about-custom-agents)
    
  •         [AUTOTITLE](/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom)