分配、跟踪 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 存储库导航栏的屏幕截图,其中突出显示了“问题”选项卡,其中显示了打开的问题数。

在 GitHub.com,你可以向 Copilot 分配问题,就像将问题分配给另一个用户一样。 导航到存储库的“问题”选项卡,打开要委托的问题,然后在“被分配者”下的右侧栏中,选择“Copilot”。 Copilot 在任务分配时会收到问题标题、说明和任何现有评论。 代理不会看到有关问题的后续注释,因此,将新信息作为注释直接添加到代理的拉取请求上。

GitHub 问题受理者面板的截图,显示了将 Copilot 分配为 AI 配对编程助手的选项。

还可以从存储库问题页上的问题列表、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 会为问题添加 👀 回应。

    GitHub 问题说明的屏幕截图,其中显示了重现步骤和创建子问题的选项。

  • 拉取请求草稿创建。 几秒钟内,Copilot 将打开链接到原始问题的拉取请求草稿。 问题的时间线中会显示一个新事件,其中显示了拉取请求。

    GitHub 问题注释的屏幕截图,其中 Copilot 提及了指向问题编号 1123 的链接的相关问题。

  • 活动代理会话。 Copilot 启动代理会话以处理问题。 在拉取请求时间线中,您会看到“Copilot 开始工作”事件。 运行时,Copilot 使用常规状态消息更新拉取请求正文,并将提交推送到专用分支。

    GitHub 问题时间线的屏幕截图,其中 Copilot 代表用户开始工作。

  • 实时会话日志。 所有过去和当前的会话均在“代理”页中可见。 单击拉取请求上的“查看会话”以打开实时会话日志查看器,并实时查看 Copilot 的操作。 如果需要停止 Copilot,请单击查看器中的“停止会话”。

  • 完成和审阅。 当 Copilot 完成其工作时,代理会话会自动结束。 拉取请求时间线中会显示一个“Copilot 已完成的工作”事件,Copilot 会请求你审阅,从而触发通知。

    GitHub 问题时间线的屏幕截图,其中 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 工具扩展它,并在合并前强制实施可靠的验证来提高一致性和速度。