注意
Copilot 编码智能体 is in 公共预览版 and subject to change.
Copilot 编码智能体 概述
借助 Copilot 编码智能体,GitHub Copilot 可以在后台独立工作来完成任务,就像人类开发人员一样。
Copilot 可以:
- 修复 Bug
- 实现增量新功能
- 改进测试覆盖率
- 更新文档
- 处理技术债务
若要将开发任务委托给 Copilot,你可以:
- 向 Copilot 分配议题。 请参阅“Using Copilot to work on an issue”。
- 使用 GitHub Copilot Chat 要求 Copilot 创建拉取请求。 请参阅“要求 Copilot 创建拉取请求”。
Copilot 将根据你提供的提示评估分配给它的任务 - 无论是来自问题描述还是聊天消息。 然后,Copilot 将进行所需的更改并打开拉取请求。 当 Copilot 完成时,它将要求你评审,而你可留下拉取请求注释来要求 Copilot 进行迭代。
在处理编码任务时,Copilot 可以访问它自己的临时开发环境,该环境由 GitHub Actions 提供支持,可在其中浏览代码、进行更改、执行自动测试和 Linter 等。
Copilot 编码智能体 与 Visual Studio Code 中的代理模式
Copilot 编码智能体 不同于 Visual Studio Code 中提供的“代理模式”功能。 Copilot 编码智能体 在 GitHub Actions 提供支持的环境中自主工作,以完成通过 GitHub 问题或 GitHub Copilot Chat 提示分配的开发任务,并创建包含结果的拉取请求。 与之不同,Visual Studio Code 中的代理模式是 GitHub Copilot 编辑 功能的一部分,该功能使 Copilot 能够直接在本地开发环境中自主进行编辑。 有关代理模式的详细信息,请参阅 在 IDE 中向 GitHub Copilot 提问。
使用 Copilot 编码智能体 简化软件开发
通过将任务分配给 Copilot,可以增强软件开发工作流。
例如,可以将 Copilot 分配给积压工作中的简单问题。 这样,你可以花更少时间处理这些工作,花更多时间处理更复杂或有趣的工作,或者需要高度创造性思维的工作。 Copilot 可以处理“锦上添花”的问题,这些问题可改进代码库或产品质量,但通过因你专注于更紧急的工作而仍搁置在积压工作中。
将 Copilot 作为额外的代码资源还能让你启动可能因缺乏资源而原本搁置的任务。 例如,可以将 Copilot 任务委托给重构代码或添加更多日志记录,然后立即将这些任务分配给 Copilot。
Copilot 可以启动一个任务,然后你选择该任务并继续自行工作。 通过将初始工作分配给 Copilot,你可以腾出原本花费在重复性任务上的时间,例如为新项目设置基架。
使 Copilot 编码智能体 可用
必须启用 Copilot,���后才能向其分配任务。 请参阅“Enabling Copilot coding agent”。
Copilot 编码智能体 使用成本
注意
近期将开始对高级请求收费。 在此之前,可继续使用 Copilot 编码智能体 而无需为额外的高级请求付费。 有关计费起始日期的最新信息,请参阅 关于高级请求。
这是一项预览功能,将来可能会变更。
Copilot 编码智能体 使用 GitHub Actions 分钟数和 Copilot 高级请求。
在 GitHub Actions 和高级请求的每月使用额度中,你可以要求 Copilot 处理编码任务,而不会产生任何额外费用。
有关详细信息,请参阅“关于 GitHub Copilot 的计费”。
风险和缓解措施
Copilot 编码智能体 是一个自主智能体,有权访问代码并可将更改推送到存储库。 这会带来一些风险。 如果可能,GitHub 已应用适当的缓解措施。
风险:Copilot 可以将代码更改推送到你的存储库
为了缓解此风险,GitHub:
- 限制谁可以将任务分配给 Copilot。 只有对存储库具有写权限的用户可以触发 Copilot 工作。 没有写权限的用户提供的注释永远不会提供给智能体。
- 限制 Copilot 使用的访问令牌中的权限。 仅允许推送到以
copilot/
开头的分支。 Copilot 无法推送到main
或master
分支。 - 限制 Copilot 的凭据。 Copilot 只能执行简单的推送操作。 它无法直接运行
git push
或其他 Git 命令。 - 限制 GitHub Actions 工作流运行。 在 Copilot 的代码经过评审,并且对存储库具有写权限的用户单击“Approve and run workflows”按钮之前,无法触发工作流。**** 请参阅“Reviewing a pull request created by Copilot”。
- 防止要求 Copilot 创建拉取请求的用户对该请求进行审批。 这将维持“需要批准”规则和分支保护中的预期控制措施。 请参阅“规则集的可用规则”。
风险:Copilot 有权访问敏感信息
Copilot 有权访问代码和其他敏感信息,这些信息可能会因意外或恶意用户输入而泄露。 为了缓解此风险,GitHub:
- 限制 Copilot 对 Internet 的访问。 请参阅“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 一次访问一个存储库。 不过,你可以配置更广泛的访问权限。 请参阅“使用模型上下文协议 (MCP) 扩展 Copilot 编码助手”。
- Copilot 一次只能打开一个拉取请求。 Copilot 将只打开一个拉取请求来处理分配给它的每个任务。
- Copilot 无法处理它未创建的现有拉取请求。 如果你希望 Copilot 提供有关现有拉取请求的反馈,你可以将其添加为审阅者。 请参阅“使用 GitHub Copilot 代码评审”。
- Copilot 将始终从存储库的默认分支开始更改。 Copilot 无法从任何其他分支(例如功能分支或发布分支)创建分支。
Copilot 在与其他功能的兼容性方面的限制
- Copilot 不会对其提交进行签名。 如果启用了“要求签名提交”规则或分支保护,则必须重写提交历史记录,以便合并 Copilot 的拉取请求。 请参阅“规则集的可用规则”。
- Copilot 不会与自托管的 GitHub Actions 运行器配合使用。 Copilot 有权访问自己的开发环境(该环境在 GitHub Actions 中运行),并且必须使用 GitHub 托管的运行器。 请参阅“Customizing the development environment for Copilot coding agent”。
- Copilot 不考虑内容排除。 内容排除使管理员能够配置 Copilot 以忽略某些文件。 使用 Copilot 编码智能体 时,Copilot 不会忽略这些文件,而是将能够查看和更新这些文件。 请参阅“从 GitHub Copilot 中排除内容”。
- Copilot 编码智能体 在 具有数据驻留的 GitHub Enterprise Cloud 中不可用。 该代理仅在 GitHub.com 中可用。