Skip to main content

Copilot을 사용하여 이슈 해결

GitHub Copilot에 이슈를 할당하고, Copilot에서 이슈를 해결하는 동안 진행 상황을 모니터링하고, 끌어오기 요청 검토 댓글을 사용하여 Copilot에게 작업을 반복하도록 하는 메시지를 표시하는 방법을 알아보세요.

누가 이 기능을 사용할 수 있나요?

Copilot 코딩 에이전트는 해당 기능이 활성화된 리포지토리에서 GitHub Copilot Pro(프로)+ 및 GitHub Copilot Enterprise 플랜을 구독하여 이용할 수 있습니다.
Sign up for Copilot

참고 항목

Copilot 코딩 에이전트 is in 공개 미리 보기 and subject to change.

소개

소프트웨어 개발자에게 할당하는 것과 마찬가지로 GitHub 이슈를 Copilot에게 할당할 수 있습니다. Copilot은 해당 이슈에 대한 작업을 시작하고, 끌어오기 요청을 제기하여, 작업이 완료되면 검토를 요청할 것입니다. 자세한 내용은 Copilot에 작업 할당 정보을(를) 참조하세요.

이슈를 해결하기 위해 Copilot을 이전에 사용한 적이 없었다면 Best practices for using Copilot to work on tasks에서 좋은 결과를 얻기 위한 몇 가지 유용한 조언을 찾을 수 있습니다.

Copilot에 이슈 할당

Copilot에 이슈를 할당하여 이슈 해결 작업을 시작하도록 요청할 수 있습니다.

Copilot에 이슈를 할당할 수 있습니다.

GitHub.com의 Copilot에 이슈 할당

GitHub.com의 Copilot에 이슈를 할당하는 방법은 다른 사용자에게 이슈를 할당하는 것과 같은 방식입니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 이슈 아이콘을 클릭합니다.

    리포지토리의 기본 페이지 스크린샷. 가로 탐색 모음에서 "문제" 레이블이 지정된 탭이 진한 주황색으로 표시됩니다.

  3. Copilot에 할당하려는 이슈를 엽니다.

  4. 오른쪽 메뉴에서 담당자를 클릭합니다.

    이슈의 오른쪽 사이드바 스크린샷. "담당자"라는 레이블이 있는 머리글이 진한 주황색으로 표시되어 있습니다.

  5. 담당자 목록에서 Copilot을 클릭합니다.

    이슈에 대한 "Assignees" 창의 스크린샷 Copilot이 목록에 있습니다.

Copilot에 이슈를 할당하면 이슈 제목, 설명, 현재까지 작성된 모든 댓글이 전송됩니다. 그러나 이슈를 할당한 후에는 Copilot이 해당 이슈에 추가된 새로운 댓글을 인식하지 못하기 때문에 반응하지 않습니다. 추가 정보가 있거나 원래 요구 사항에 변경할 내용이 있는 경우, Copilot에서 제기하는 끌어오기 요청에 댓글으로 추가해 주세요.

또한, GitHub.com의 다른 위치에서도 Copilot에 이슈를 할당할 수 있습니다.

  • 리포지토리의 Issues 페이지에 있는 이슈 목록에서
  • GitHub 프로젝트에서 이슈를 확인 중일 때

GitHub API를 통해 Copilot에 이슈 할당

GraphQL API에 요청을 보내면 Copilot에 이슈를 할당할 수 있습니다.

  1. 사용자 토큰(예: personal access token 또는 GitHub App 사용자-서버 토큰)을 사용하여 API 인증을 진행해야 합니다.

  2. GraphQL API에서 해당 리포지토리의 suggestedActors에 Copilot이 포함되어 있는지 확인하여 리포지토리에서 Copilot 코딩 에이전트가 활성화되어 있는지 확인합니다. monalisa를 리포지토리 소유자의 이름으로, octocat을 리포지토리 이름으로 바꿉니다.

    GraphQL
    query {
      repository(owner: "monalisa", name: "octocat") {
        suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) {
          nodes {
            login
            __typename
    
            ... on Bot {
              id
            }
    
            ... on User {
              id
            }
          }
        }
      }
    }
    

    사용자와 리포지토리 모두에 대해 Copilot 코딩 에이전트가 활성화되어 있는 경우, 쿼리에서 반환되는 첫 번째 노드의 login 값은 copilot-swe-agent입니다.

  3. Copilot에 할당하려는 이슈의 GraphQL 전역 ID를 페치하려면 monalisa는 리포지토리 소유자의 이름으로, octocat은 리포지토리 이름으로, 9000은 이슈 번호로 각각 바꿉니다.

    GraphQL
    query {
      repository(owner: "monalisa", name: "octocat") {
        issue(number: 9000) {
          id
          title
        }
      }
    }
    
  4. replaceActorsForAssignable GraphQL mutation을 사용하여 Copilot에 해당 이슈를 할당합니다. ISSUE_ID는 이전 단계에서 반환된 ID로, BOT_ID는 그보다 앞 단계에서 반한된 ID로 바꿉니다.

    GraphQL
    mutation {
      replaceActorsForAssignable(input: {assignableId: "ISSUE_ID", assigneeIds: ["BOT_ID"]}) {
        assignable {
          ... on Issue {
            id
            title
            assignees(first: 10) {
              nodes {
                login
              }
            }
          }
        }
      }
    }
    

Copilot의 이슈 해결 진행 상황 추적

Copilot에 이슈를 할당한 직후, Copilot은 해당 이슈에 👀 반응을 남깁니다.

Copilot에 할당된 이슈의 스크린샷 Copilot이 눈 아이콘 반응을 남겼습니다.

몇 초 후, Copilot은 원래 이슈와 연결된 초안 끌어오기 요청을 엽니다. 이슈의 타임라인에 해당 끌어오기 요청과 연결된 이벤트가 표시됩니다.

연결된 끌어오기 요청이 열려 있음을 보여 주는 이슈 타임라인 이벤트의 스크린샷

Copilot은 이슈 작업을 위해 에이전트 세션을 시작합니다. "Copilot started work" 이벤트가 끌어오기 요청 타임라인에 나타나고, Copilot이 작업을 진행하면서 끌어오기 요청 본문이 정기적인 상태 업데이트로 반영되고, 분기에 커밋을 푸시합니다.

"Copilot started work"를 포함한 일련의 타임라인 이벤트가 있는 끌어오기 요청의 스크린샷

Copilot이 어떤 작업을 진행하고 있는지 확인하려면 View session을 클릭하세요. 세션 로그 뷰어가 표시되어 Copilot이 이슈 작업을 진행하는 동안 실시간 로그를 확인할 수 있습니다. Copilot이 해당 이슈 작업을 중단하도록 하려면 Stop session을 클릭하세요. Copilot 코딩 에이전트 로그 사용을(를) 참조하세요.

Copilot이 작업을 마치면 에이전트 세션이 종료되고, Copilot이 검토를 요청하는 알림이 전송됩니다. 또한, "Copilot finished work" 이벤트가 끌어오기 요청 타임라인에 표시됩니다.

"Copilot requested review" 및 "Copilot finished work" 이벤트가 있는 끌어오기 요청 타임라인의 스크린샷

Copilot과 끌어오기 요청 작업

Copilot이 해당 이슈 작업을 완료한 후에는 끌어오기 요청을 철저히 검토하고, 변경해야 하는 모든 사항에 댓글을 달아야 합니다. Copilot에서 만든 끌어오기 요청 검토을(를) 참조하세요.

추가 참고 자료