分配、跟踪 Copilot 编码代理任务并排除故障
GitHub Copilot 编码代理充当直接在 GitHub 内部工作的自治团队成员。 启用后,可以为其分配任务、实时观察其进度,并通过对其拉取请求留下评论来指导其工作。 本单元介绍如何使用 GitHub.com、GitHub Mobile、API 或 CLI 将问题分配给 Copilot。 它还展示了如何跟踪代理的工作并进行迭代,并为常见问题提供故障排除手册。
在本单元结束时,你将能够:
- 使用 GitHub.com、GitHub Mobile、API 或 CL 将问题分配给 Copilot。
- 通过拉取请求时间线和会话日志监视 Copilot 的进度。
- 通过对 Copilot 的拉取请求进行评论来对其工作进行循环访问。
- 了解代理生成的拉取请求的审批规则。
- 排查将任务委派给 Copilot 时的常见问题。
将问题分配给 Copilot
向 Copilot 分配问题时,代理会通过向问题添加 👀 反应来确认此问题。 然后,它会创建一个专用的 copilot/ 分支,打开一个与该问题相关联的草稿拉取请求,并在由 GitHub Actions 驱动的环境中启动一个代理会话。 正常工作时,Copilot 会将提交推送到分支,并使用状态消息更新拉取请求正文。 任务完成后,Copilot 会发布“Copilot 已完成的工作”事件并请求你的评审。
在 GitHub.com,你可以向 Copilot 分配问题,就像将问题分配给另一个用户一样。 导航到存储库的“问题”选项卡,打开要委托的问题,然后在“被分配者”下的右侧栏中,选择“Copilot”。 Copilot 在任务分配时会收到问题标题、说明和任何现有评论。 代理不会看到有关问题的后续注释,因此,将新信息作为注释直接添加到代理的拉取请求上。
还可以从存储库问题页上的问题列表、GitHub 项目或使用 GitHub Mobile 将问题分配给 Copilot。 对于命令行工作流,可以使用 GitHub CLI (gh issue edit) 将 Copilot 添加为被分配者。
通过 API 分配
可以通过 GraphQL API 以编程方式将问题分配给 Copilot。 首先,检查编码代理是否可用:查询suggestedActors存储库,并验证copilot-swe-agent是否作为建议的参与者出现。 接下来,提取存储库 ID。 若要创建和分配新问题,请使用 createIssue 突变,传递存储库 ID 和 Copilot 的机器人 ID。 若要分配现有问题,请提取问题 ID,然后使用 replaceActorsForAssignable 突变将 Copilot 添加为被分配者。 此方法可用于将 Copilot 集成到自动化工作流中。
可用性检查
query {
repository(owner: "octo-org", name: "octo-repo") {
suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) {
nodes { login __typename ... on Bot { id } ... on User { id } }
}
}
}
获取存储库 ID
query {
repository(owner: "octo-org", name: "octo-repo") { id }
}
创建并分配新问题
mutation {
createIssue(
input: {
repositoryId: "REPOSITORY_ID",
title: "Implement comprehensive unit tests",
body: "DETAILS",
assigneeIds: ["BOT_ID"]
}
) {
issue { id title assignees(first: 10) { nodes { login } } }
}
}
分配现有问题
query {
repository(owner: "monalisa", name: "octocat") {
issue(number: 9000) { id title }
}
}
mutation {
replaceActorsForAssignable(
input: { assignableId: "ISSUE_ID", actorIds: ["BOT_ID"] }
) {
assignable {
... on Issue {
id title
assignees(first: 10) { nodes { login } }
}
}
}
}
跟踪 Copilot 的进度
将问题分配给 GitHub Copilot 后,代理会提供可见信号,以便你可以从头到尾跟踪其工作。
立即确认。 分配问题后不久,Copilot 会为问题添加 👀 回应。
拉取请求草稿创建。 几秒钟内,Copilot 将打开链接到原始问题的拉取请求草稿。 问题的时间线中会显示一个新事件,其中显示了拉取请求。
活动代理会话。 Copilot 启动代理会话以处理问题。 在拉取请求时间线中,您会看到“Copilot 开始工作”事件。 运行时,Copilot 使用常规状态消息更新拉取请求正文,并将提交推送到专用分支。
实时会话日志。 所有过去和当前的会话均在“代理”页中可见。 单击拉取请求上的“查看会话”以打开实时会话日志查看器,并实时查看 Copilot 的操作。 如果需要停止 Copilot,请单击查看器中的“停止会话”。
完成和审阅。 当 Copilot 完成其工作时,代理会话会自动结束。 拉取请求时间线中会显示一个“Copilot 已完成的工作”事件,Copilot 会请求你审阅,从而触发通知。
使用 Copilot 进行迭代
你指导 Copilot 工作的方式和指导真人参与者一样,都是通过评论和审阅进行指导。 在拉取请求评论中提及 @copilot 请求更改。 仅处理对存储库具有写入权限的用户的注释。 Copilot 会向您的评论发送一个 👀 反应,以确认它已收到请求,然后在恢复时将“Copilot 已开始工作”添加到拉取请求时间线。 这样就可以在不离开正常审阅工作流的情况下,反复改进 Copilot 的工作。
审批和工作流
Copilot 创建的拉取请求始终处于草稿状态。 在合并之前,需要人工批准,代理触发的 GitHub Actions 工作流不会自动运行。 若要在 Copilot 拉取请求上运行工作流,请单击“批准”并在合并框中运行工作流。 要求 Copilot 创建拉取请求的开发人员无法批准该请求,这样可以保持存储库的“所需评审”规则,并确保在合并之前进行独立评审。
Copilot 编码代理故障排除
Copilot 不在“Assignees”列表中
确保你使用的是符合条件的计划(Pro、Pro+、Business、Enterprise)。 请检查并确认代理在组织级别或存储库级别未被禁用。 在您的功能页面上进行验证:
github.com/settings/copilot/features。企业托管用户(EMU)个人存储库
代理不可用;使用组织拥有的存储库(需要 GitHub 托管的运行程序)。
“无法从聊天创建拉取请求”
确保代理可用。 在 IDE 中,在提示中提及 @github (GitHub.com 不需要)。
分配了问题,但未发生任何事情
刷新;留意👀反应,然后寻找草稿 PR。
PR 已创建,但没有进度
检查 PR 时间线,以确认“Copilot 已开始工作”;打开“会话日志查看”。
代理未响应 PR 评论
确认你具有写入访问权限,并在代理的 PR 上提及 @copilot。
出现停滞
问题可能恢复;会话在一小时后超时。 通过取消任务分配/重新分配任务或重新发布评论来重试。
操作未运行
单击“批准”并在合并框中运行工作流。
推送不会通过 CI
通过 .github/copilot-instructions.md 提供明确的存储库级别指南,以便代理可以使用测试/linters 进行自我验证。
防火墙警告
默认情况下,Internet 受到限制;警告列出了阻止的地址和命令。 根据自定义或禁用 GitHub Copilot 编码代理的防火墙进行调整。
未捕获到图像
最大图像大小为 3.00 MiB;删除较大的图像。
有了可靠的分配跟踪迭代循环,可以通过自定义代理的环境、使用 MCP 工具扩展它,并在合并前强制实施可靠的验证来提高一致性和速度。