关于 GitHub 上的 AI 代理
企业中的开发人员可能已习惯将 AI 用作结对编程工具。 在这种模式下,开发人员与 AI 助手同步协作,并在项目的开发阶段接收代码建议。
AI 代理更像是结对编程的伙伴。 代理可以:
- 执行异步任务,例如运行测试或修复积压工作中的问题,所需的人工干预较少。
- 在开发阶段之外为工作流做贡献,例如发布后的构思或优化工作。
与代理协作可以让员工有更多时间专注于其他优先事项(如高层次规划),并通过赋予自然语言提示更强的能力,将 AI 的优势扩展至非开发人员角色。
GitHub Copilot 的代理式 AI 功能已集成到 GitHub 的一体化平台中,与采用一系列第三方工具相比,可提供更简化的用户体验以及更便捷的许可和治理控制。
示例方案
你是精品伞具零售商 Mona's 的工程经理。 你的团队的任务是为公司的在线商店添加一个 AI 驱动的小组件****。 小组件将基于用户位置和当地天气趋势等因素提供定制化建议,帮助客户选择合适的伞具。
为了赶在紧迫的截止日期前完成,你打算加快团队中开发人员和非开发人员在每个流程阶段的工作进度。 你还希望确保新功能推出后,团队不会被维护任务压得不堪重负。
注意
GitHub 正在持续扩展其 AI 驱动的平台。 本文中描述的部分功能处于 公共预览版 阶段,企业可能默认未启用这些功能。 你将在“Get started with agentic AI”部分找到每个功能的相关资源。
1.使用 Copilot Chat 进行计划
-
为了启动规划,产品经理会在
https://github.com/copilot
与 Copilot Chat 协同工作****。他们向 Copilot 提出大致问题,以了解新功能所需的开发工作。 为了让 Copilot 访问项目的重要上下文,他们上传了原型文件并链接到存储代码库的仓库。
-
当 PM 与 Copilot 合作获取了所需任务的概述后,他们会要求 Copilot 为工作的每个部分创建问题。****
Copilot 在沉浸式视图中草拟问题,PM 可在其中完善问题并将其发布到仓库。
PM 将部分问题标记为“可有可无”或“维护类”。 这些可能是 Copilot 编码智能体 的理想候选项。
-
为了帮助开发人员快速开始,PM 会在
https://github.com/copilot/spaces
创建一个包含 Copilot Spaces 的空间****。 PM 收集诸如图表和对代码文件的引用等资源,提交一些测试问题,然后将该空间与其组织共享。现在,开发人员可以在该空间中提问,而 Copilot 已经具备了 PM 所添加的全部上下文信息。
2.使用 GitHub Models 和代理模式创建
-
PM 请开发人员首先根据模型的成本和效果,找出最适合提供定制化雨伞推荐的 AI 模型。
-
开发人员请求 Copilot Chat 推荐几款适合该任务的 AI 模型,并说明各自的优缺点****。 为了提供有用的上下文,他们要求 Copilot 考虑 为任务选择合适的 AI 模型 GitHub Docs 文章中的信息。
-
为了从候选列表中选定一个模型,开发人员使用 GitHub Models 操场,针对同一提示在不同模型间比较结果。 他们通过在单个平台上测试模型来节省时间,而无需为每个模型分别设置 API 密钥。
-
选定模型后,开发人员在 VS Code 中打开代码。****
-
开发人员开始为新小组件编写代码。 为了加快工作进度,他们在“Ask”和“Edit”模式下使用 Copilot Chat 来解决语法问题并获取大致建议****。
提示
开发人员以最适合自己的方式使用 AI,但贵组织可对该体验进行控制。 例如,可以:
- 控制模型,以便开发人员可将其用于开发工作,从而满足合规要求并管理成本。****
- 排除特定文件,使其不在 Copilot Chat 的访问范围内****。
- 保存已通过 GitHub Models 测试的有效提示,供其他用户参考****。
-
当开发人员编写完一些代码后,他们会切换到代理模式,要求 Copilot 将代码重构为多个不同的函数,以提高可读性。****
在代理模式下,Copilot 能够更自主地工作,可以更新多个文件,并在获得开发人员授权的情况下运行命令,如安装依赖项或运行测试。
提示
可以通过向仓库添加自定义说明文件来创建更一致的体验。**** 例如,该文件可帮助确保代理模式使用既定的命名约定,并根据贵组织的标准运行正确的命令来构建、测试代码以及对代码进行 Lint 分析。
-
开发人员会评审代理工作的差异,并选择要保留的代码。
3.使用 MCP 服务器进行测试
-
代码完成后,开发人员希望使用自动化浏览器内测试服务 Playwright 在其本地构建的网站上运行测试。
- 仓库管理员已为 Playwright 添加了 Model Context Protocol (MCP) 服务器,这为 Copilot 代理提供了一个预定义的接口,用于与 Playwright 集成****。
- 开发人员要求 Copilot 概述
.feature
文件中的测试场景,然后指示 Copilot 在浏览器中运行这些测试。 - 在代理模式下,Copilot 在打开浏览器并单击 UI 中的不同元素时,会请求开发人员授权其操作。 当开发人员在浏览器中查看测试时,Copilot 识别出一个失败的测试,并在代码中提出修复建议。
-
当开发人员对测试结果满意时,他们会要求代理模式在 GitHub 上为该工作创建一个拉取请求。
提示
在启用 GitHub MCP 服务器的情况下,Copilot 可以直接从 VS Code 运行创建拉取请求的命令,并且标题和描述已填写。****
4.使用 Copilot 代码评审
进行评审
- 仓库所有者已配置由 Copilot 在仓库上执行自动代码评审****。 Copilot 会对拉取请求进行初步评审,识别出开发人员可以在人工评审者处理该拉取请求之前修复的 bug 和潜在性能问题。
- 开发人员的同事评审并批准拉取请求。 工作已准备好合并。
5.使用 Copilot 编码智能体 进行优化
-
发布后,产品经理收集客户反馈,并发现了一个改进小组件建议的机会,即通过切换到更可靠的天气数据 API。 他们创建了一个问题来实施此更改,并在 GitHub 上直接将其分配给 Copilot。****
-
Copilot 编码智能体 在后台工作并创建了一个拉取请求,产品经理将其标记为“已准备好进行评审”。
-
一位开发人员评审了 Copilot 的拉取请求并留下反馈,Copilot 会整合这些反馈。 最后,开发人员合并拉取请求。
提示
Copilot 编码智能体 附带默认防护措施。 例如,Copilot 本身无法合并拉取请求。 可以使用仓库规则集为目标分支定义其他保护。
-
之后,在开发另一个独立功能时,开发人员注意到 AI 小组件的代码中存在一个小 bug。 为避免上下文切换,开发人员指示 Copilot 直接从 VS Code 打开一个拉取请求。
@github Create a PR for the widget function to correctly validate that the user's age is a positive integer.
-
Copilot 在后台工作,并在 GitHub 上打开一个拉取请求,可供另一位开发人员进行评审。
6.使用 Copilot Autofix 进行保护
-
管理员已在仓库中启用 code scanning,且 code scanning 警报提示代码中存在潜在漏洞。
-
安全经理请求 Copilot Autofix 自动为漏洞提出修复建议,开发人员对该建议进行评审并批准****。
代理式 AI 入门
要开始使用本文中提到的功能,请使用下表中的链接。
要将代理式 AI 功能有效集成到工作流,你需要在有效的培训、治理和文化变革方面进行投入。 我们建议与跨职能团队一起试用代理功能,以在大规模推出前收集反馈。
注意
其中一些功能使用高级请求。**** 请参阅“关于高级请求”。
功能 | 详细信息 |
---|---|
Copilot Chat 的沉浸式视图 | 在 GitHub 中向 GitHub Copilot 提问 |
Copilot Spaces (公共预览版) | 关于使用 Copilot Spaces 组织和共享上下文 |
Copilot Chat 代理模式 | 在 VS Code 中使用代理模式 |
内容排除 | 从 GitHub Copilot 中排除内容 |
MCP 服务器 (公共预览版) | 使用模型上下文协议 (MCP) 扩展 Copilot 对话助手 |
GitHub Models 操场 (公共预览版) | 使用 AI 模型进行原型制作 |
自定义说明 | 为 GitHub Copilot 添加存储库自定义说明 |
Copilot 代码评审 | 配置 Copilot 的自动代码评审 |
Copilot 编码智能体 (公共预览版) | 在组织中有效使用 Copilot 编码智能体 |
Copilot Autofix | 配置代码扫描的默认设置 |