Copilot 编码智能体 概述
借助 Copilot 编码智能体,GitHub Copilot 可以在后台独立工作来完成任务,就像人类开发人员一样。
Copilot 编码智能体 可以:
- 修复 Bug
- 实现增量新功能
- 改进测试覆盖率
- 更新文档
- 处理技术债务
要将任务委托给 Copilot 编码智能体,你可以:
- 从多个位置要求 Copilot 打开新的拉取请求,包括 GitHub Issues、Visual Studio Code 以及 GitHub 每个页面上的智能体面板。 请参阅“要求 GitHub Copilot 创建拉取请求”。
- 在对现有拉取请求的注释中提及
@copilot,要求其进行更改。 请参阅“要求 GitHub Copilot 对现有拉取请求进行更改”。 - 从安全活动中将安全警报分配给 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 时,透明度增加,因为每一个步骤都作为提交发生,并且可以在日志中查看;这为整个团队带来了 协作 的机会。
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 编码智能体 的 AI 模型
GitHub Copilot Pro 和 GitHub Copilot Pro+ 用户可以选择 Copilot 编码智能体 使用的模型。 你可能会发现,根据分配给 Copilot 的任务类型,不同模型的表现更好或能提供更有用的响应。
GitHub Copilot Business 和 GitHub Copilot Enterprise 用户即将支持选择模型。 在此之前,这些用户的 Copilot 编码智能体 将使用 克劳德十四行诗 4.5。 GitHub 保留随时更改所用模型的权利。
有关详细信息,请参阅“更改 GitHub Copilot 编码代理的 AI 模型”。
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)”。 -
**技能**:技能允许你通过指令、脚本和资源增强 Copilot 执行专用任务的能力。 有关详细信息,请参阅“[AUTOTITLE](/copilot/concepts/agents/about-agent-skills)”。
内置安全保护
与任何其他 AI 智能体一样,在启用 Copilot 编码智能体 时,安全性是一个至关重要的考虑因素。 Copilot 编码智能体 具有强大的内置安全保护基础,你可以通过遵循最佳做法指南来补充这些保护。
-
* CodeQL 用于标识代码安全问题。**安全问题验证**:Copilot 会分析 Copilot 编码智能体 创建的代码是否存在安全问题,并尝试在完成拉取请求前解决这些问题。 这降低了 Copilot 编码智能体 生成的代码引入硬编码机密、不安全依赖项和其他漏洞等问题的可能性。 会话日志中可查看 Copilot 编码智能体 执行的分析和采取的操作的详细信息。 请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/track-copilot-sessions)”。- 新引入的依赖项会根据 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 编码智能体 的工作。
有关详细信息,请参阅:
-
[AUTOTITLE](/copilot/tutorials/pilot-copilot-coding-agent#2-secure)(有关组织所有者如何进一步增强安全性的信息) -
[AUTOTITLE](/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom) -
[GitHub Copilot 信任中心](https://copilot.github.trust.page/)
风险和缓解措施
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 以忽略某些文件。 使用 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)