MUACO TECH NOTE
GitHub Copilot

[GitHub Copilot] GitHub Copilot 코딩 에이전트에 이슈 맡기고 PR 받는 법

GitHub 이슈에 Copilot을 담당자로 지정해 초안 풀 리퀘스트를 자동으로 받아 보는 설정과 절차를 정리했습니다.

안녕하세요, muaco입니다.

이 글로 할 수 있는 것

GitHub 이슈에 담당자로 사람 대신 Copilot을 지정하면, Copilot이 저장소를 읽고 코드를 고쳐 초안 풀 리퀘스트(코드 변경 제안서)를 열어 줍니다. 이 글에서는 계정에서 기능을 켜는 경로, 이슈를 넘기는 화면 순서, 작업이 끝났는지 확인하는 방법까지 따라갑니다. 새로 설치할 프로그램은 없고 터미널도 열지 않습니다. 브라우저에서 GitHub에 로그인할 수 있으면 끝까지 진행됩니다.

미리 갖춰야 할 것

  • 유료 Copilot 요금제. 공식 문서는 클라우드 에이전트가 "all paid Copilot plans", 즉 모든 유료 Copilot 요금제에서 쓸 수 있다고 적고 있습니다. 무료 요금제에서는 담당자 목록에 Copilot이 아예 나타나지 않습니다.
  • 해당 저장소의 쓰기 권한. 읽기만 가능한 저장소에서는 담당자를 지정할 수 없습니다.
  • GitHub에 올라가 있는 저장소. 문서에 따르면 에이전트는 GitHub가 호스팅하는 저장소에서만 동작합니다. 사내 서버에만 있는 저장소는 대상이 아닙니다.
  • 조직 저장소라면 관리자의 정책 허용. Copilot Business나 Enterprise를 쓰는 조직은 관리자가 정책을 켜야 구성원이 쓸 수 있습니다.

운영체제는 상관없습니다. 작업은 GitHub 서버에서 돌아가고 사용자는 웹 화면만 봅니다.

따라 하기

  1. 개인 계정에서 기능이 켜져 있는지 확인합니다. 브라우저에서 github.com/settings/copilot/features로 들어가 클라우드 에이전트 항목이 활성화돼 있는지 봅니다. 담당자 목록에 Copilot이 안 보일 때 문제 해결 문서가 첫 번째로 확인하라고 안내하는 경로입니다. 조직 소유 저장소라면 이 화면이 아니라 조직 관리자 쪽 정책이 기준입니다.
  2. 맡길 이슈를 엽니다. 저장소 메인 페이지에서 저장소 이름 아래의 Issues를 누르고 넘기려는 이슈를 엽니다. 이슈 본문이 부실하면 결과도 부실합니다. 무엇이 잘못됐는지, 어떤 상태가 되면 완료인지 두 가지가 본문에 있어야 합니다.
  3. 담당자로 Copilot을 지정합니다. 이슈 화면 오른쪽 사이드바에서 Assignees를 누르고 목록에서 Copilot을 고릅니다. 사람을 담당자로 넣는 절차와 완전히 같습니다. 여기서 Copilot이 목록에 없다면 1번 조건 중 하나가 빠진 상태입니다.
  4. Optional prompt 입력란에 조건을 적습니다. 이름 그대로 선택 사항이지만 여기가 결과 품질을 가르는 자리입니다. 지켜야 할 코딩 방식, 쓰는 프레임워크, 테스트를 어디까지 붙일지 같은 조건을 적습니다. 대상 저장소와 브랜치, 사용할 모델도 이 화면의 드롭다운에서 바꿀 수 있습니다.
  5. 눈 모양 반응이 달리는지 봅니다. 지정하고 잠시 뒤 Copilot이 이슈에 👀 반응을 답니다. 이 표시가 곧 접수 확인입니다. 몇 초 더 지나면 원래 이슈에 연결된 초안 풀 리퀘스트가 열립니다. 화면에 아무 변화가 없으면 새로 고침을 한 번 하고 기다립니다.
  6. 작업 로그를 확인합니다. 열린 풀 리퀘스트 안에 "Copilot started work" 항목이 생기고 여기의 View session을 누르면 에이전트가 어떤 파일을 읽고 무엇을 고쳤는지 기록이 보입니다. 진행이 멈춘 것처럼 보일 때 실제로 도는 중인지 판단하는 근거입니다.
  7. 리뷰 요청을 받고 검토합니다. 작업이 끝나면 Copilot이 사용자에게 리뷰를 요청합니다. 내용이 마음에 들지 않으면 풀 리퀘스트 댓글에 @copilot을 붙여 수정을 요청합니다. 문서 기준으로 댓글 하나가 다시 작업 요청이 됩니다.
  8. 반복되는 규칙은 파일로 남깁니다. 매번 같은 지시를 적기 번거롭고 CI 검사가 자꾸 깨진다면, 저장소 최상위에 .github/copilot-instructions.md 파일을 만들어 규칙을 적어 둡니다. 문서가 CI 실패 대응으로 안내하는 방법입니다. 이미 파일이 있다면 지우지 말고 아래 내용을 뒤에 이어 붙입니다.
# 저장소 작업 규칙

## 커밋 전 확인
- 변경한 코드에 대응하는 테스트를 함께 추가합니다.
- `npm run lint` 와 `npm test` 가 모두 통과해야 합니다.

## 스타일
- 들여쓰기는 공백 2칸입니다.
- 새 의존성을 추가하기 전에 이슈에서 먼저 확인을 받습니다.

막히기 쉬운 곳

  • 담당자 목록에 Copilot이 없습니다. 유료 요금제 가입 여부를 먼저 봅니다. 개인 저장소는 github.com/settings/copilot/features에서 활성화 상태를, 조직 저장소는 관리자 정책을 확인합니다.
  • Enterprise Managed User 계정의 개인 저장소에서 안 됩니다. 에이전트가 GitHub가 제공하는 실행 환경을 쓰는데, 관리형 사용자 계정의 개인 저장소에서는 그 환경을 쓸 수 없다고 문서에 나와 있습니다. 조직 소유 저장소로 옮겨서 시도해야 합니다.
  • 풀 리퀘스트는 열렸는데 CI가 안 돕니다. Copilot이 코드를 올려도 GitHub Actions 워크플로는 자동으로 실행되지 않습니다. 풀 리퀘스트 아래 병합 상자에서 Approve and run workflows를 눌러야 검사가 시작됩니다. 사람이 한 번 확인하고 승인하는 구조입니다.
  • 세션이 멈춘 듯합니다. 세션은 한 시간 뒤 자동으로 종료됩니다. 담당자 지정을 해제했다가 다시 지정하거나, 같은 댓글을 한 번 더 남기면 재시작됩니다. 최대 실행 시간은 59분이고 더 짧게 줄일 수도 있습니다.
  • 방화벽 경고가 뜹니다. 에이전트의 인터넷 접근이 제한됐다는 안내이며 차단된 주소가 풀 리퀘스트나 댓글에 표시됩니다. 외부 패키지를 받아야 하는 작업이라면 방화벽 설정을 손봐야 합니다.
  • 이슈에 붙인 스크린샷을 못 읽습니다. 이미지 크기 상한이 3.00 MiB입니다. 큰 캡처는 줄여서 다시 올립니다.

여기서 더 나아가려면

요금이 신경 쓰인다면 사용량 계산을 먼저 봅니다. 문서 기준으로 클라우드 에이전트 세션 하나가 프리미엄 요청 1건을 쓰고 모델별 배율이 곱해지며 작업 중 끼어들어 방향을 바꾸는 댓글도 각각 1건을 씁니다. 월 할당량은 Copilot Pro가 300건, Copilot Pro+가 1,500건이고 초과분은 건당 0.04달러입니다. 익숙해지면 여러 이슈를 한꺼번에 맡기는 방식이나 웹 화면 대신 API로 작업을 거는 방법을 살펴볼 만합니다.

이상으로 글 마치겠습니다.

출처

#GitHub Copilot#코딩 에이전트#이슈#풀 리퀘스트#자동화#개발 생산성#AI 도구