Skip to main content

关于 GitHub Copilot 编码智能体

您可以请求 Copilot 打开新的拉取请求或对现有的拉取请求进行更改。 Copilot 在后台工作,然后请求你进行评审。

谁可以使用此功能?

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

Copilot 编码智能体 概述

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

Copilot 编码智能体 可以:

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

若要将任务分配给 Copilot 编码智能体,您可以:

Copilot 编码智能体 将根据提供的提示来评估所分配的任务,无论是从问题说明还是聊天消息。 然后 Copilot 编码智能体 将进行所需的更改并打开提取请求。 当 Copilot 编码智能体 完成时,它将请求您进行审阅,您可以留下拉取请求评论来请求 Copilot 编码智能体 进行迭代。

在处理编码任务时,Copilot 编码智能体 有权访问自己的临时开发环境,该环境由 GitHub Actions提供支持,可在其中浏览代码、进行更改、执行自动测试和 linters 等。

还可以创建 自定义代理 来定制 Copilot针对特定工作流、编码约定或专用任务的行为。 自定义智能体 允许你定义多个专用版本的代码代理(例如前端审阅者、测试生成器或安全审计员),每个版本都有各自的提示、工具和功能。 有关详细信息,请参阅“关于自定义代理”。

优于传统 AI 工作流的优势

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

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

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

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,提供上下文和打开拉取请求,而无需离开工作流。 请参阅“关于 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 编码智能体 使用成本

Copilot 编码智能体 使用 GitHub Actions 分钟数和 Copilot 高级请求。

在 GitHub Actions 和高级请求的每月使用限额内,您可以要求 Copilot 编码智能体 进行编码任务,而不会产生任何额外费用。

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

内置安全保护

与任何其他 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 编码智能体 在沙盒开发环境中工作,其 Internet 访问权限由防火墙控制。 对于分配给其工作的存储库,它具有只读访问权限。
    
  •         **对分支的访问有限**:Copilot 编码智能体 只能创建和推送到以开头的 `copilot/`分支。 它受任何分支保护约束,并且需要检查工作存储库。
    
  •         **仅响应具有写入权限的用户**:Copilot 编码智能体 不会响应来自具有较低访问级别用户的反馈。
    
  •         **被视为外部协作者**:Copilot 编码智能体 提出的草稿拉取请求需要具有写入权限的用户批准才能运行 Actions 工作流。 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 编码智能体的代码被审查并且具有对存储库写入权限的用户单击**批准并运行工作流**按钮之前,工作流不会被触发。 请参阅“[AUTOTITLE](/copilot/using-github-copilot/coding-agent/reviewing-a-pull-request-created-by-copilot)”。
    
  •         **阻止要求 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 只能访问与所分配问题相同的存储库中的上下文**。 默认情况下,与 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 编码智能体 需要使用 GitHub 托管运行器,而这些运行器不适用于由 托管用户帐户 拥有的仓库。 请参阅“[AUTOTITLE](/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners)”。
    
  •         **Copilot 编码智能体 不包括内容排除**。 内容排除使管理员能够配置 Copilot 以忽略某些文件。 使用 Copilot 编码智能体 时,Copilot 不会忽略这些文件,而是将能够查看和更新这些文件。 请参阅“[AUTOTITLE](/copilot/managing-copilot/configuring-and-auditing-content-exclusion/excluding-content-from-github-copilot)”。
    
  • Copilot 编码智能体 仅处理在 GitHub 上托管的存储库****。 如果存储库是使用其他代码托管平台存储的,则 Copilot 将无法处理它。

  •         **您不能选择 Copilot 编码智能体 所使用的 AI 模型**。 模型选取器无型号选择功能进行切换,GitHub 保留随时更改型号的权利。
    

    目前,Copilot 编码智能体 使用 克劳德十四行诗 4.5。

动手练习

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

其他阅读材料

  • GitHub Copilot 编码智能体”操作方法文章
  •         [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)