Copilot SDK를 활용한 AI 기반 GitHub 이슈 분류 구축하기 (새 탭에서 열림)
IssueCrush는 GitHub 이슈를 카드처럼 검토하고, Copilot SDK로 각 이슈의 요약과 처리 방향을 자동으로 제안하는 앱이다. React Native가 Node.js 기반 SDK를 직접 실행할 수 없기 때문에, Copilot SDK는 서버에서 실행하고 클라이언트는 HTTPS로 통신하는 구조를 사용한다. 핵심은 AI를 활용해 트리아지 시간을 줄이되, 인증 보안·리소스 정리·AI 장애 시 대체 경로까지 함께 설계하는 것이다.
IssueCrush: 스와이프로 이슈 트리아지
- GitHub 이슈를 스와이프 가능한 카드로 표시한다.
- 왼쪽으로 넘기면 이슈를 닫고, 오른쪽으로 넘기면 유지한다.
- “Get AI Summary”를 누르면 Copilot이 이슈 내용을 분석한다.
- 긴 이슈 설명을 직접 모두 읽지 않고도 다음 정보를 빠르게 파악할 수 있다.
- 이슈의 핵심 내용
- 주요 문제나 기능 요청
- 조사, 구현, 담당 팀 배정, 중복 이슈 종료 등 권장 조치
React Native와 서버 측 SDK 아키텍처
- Copilot SDK는 Node.js 패키지이며 내부적으로 Copilot CLI 프로세스를 실행하고 JSON-RPC로 통신한다.
- React Native 앱에서는 Node.js 런타임과 CLI 바이너리를 직접 사용할 수 없으므로 SDK를 서버에서 실행해야 한다.
- 구성은 다음과 같다.
- React Native·웹 클라이언트 → HTTPS → Node.js 서버
- Node.js 서버 → Copilot SDK → 로컬 Copilot CLI
- 클라이언트는 별도로 GitHub OAuth와 GitHub REST API를 사용해 이슈 데이터를 가져온다.
- 서버 측 통합의 장점:
- 여러 클라이언트가 하나의 SDK 인스턴스를 공유해 연결과 인증 오버헤드를 줄인다.
- Copilot 인증 정보와 API 토큰을 모바일 앱에 포함하지 않아 보안성이 높다.
- Copilot 장애나 타임아웃이 발생해도 기본 요약으로 대체할 수 있다.
- 서버에서 요청·응답, 지연 시간, 오류를 기록해 디버깅과 모니터링이 쉽다.
사전 준비 사항
- 서버에 Copilot CLI를 설치하고 시스템
PATH에서 실행 가능하게 해야 한다. - GitHub Copilot 구독 또는 BYOK 방식의 자체 API 키가 필요하다.
- 서버에서
copilot auth를 실행하거나COPILOT_GITHUB_TOKEN환경 변수를 설정해 CLI를 인증해야 한다.
Copilot SDK의 세션 기반 실행
SDK 사용 흐름은 다음과 같다.
CopilotClient를 생성하고start()로 CLI 프로세스를 시작한다.createSession()으로 사용할 모델과 권한 처리 방식을 지정한다.sendAndWait()에 프롬프트를 전달해 응답을 기다린다.response.data.content에서 요약 결과를 추출한다.- 작업이 끝나면 세션을
disconnect()하고 클라이언트를stop()한다.
예시에서는 gpt-4.1 모델과 approveAll 권한 처리기를 사용하며, 초기화부터 정리까지 try/finally로 감싼다.
세션 생명주기와 리소스 정리
- SDK의 기본 생명주기는 다음 순서다.
start()createSession()sendAndWait()disconnect()stop()
- 세션을 정리하지 않으면 리소스와 메모리가 누수될 수 있다.
- 항상
try/finally에서 정리 작업을 수행해야 한다. - 정리 과정의 오류가 원래 발생한 오류를 덮지 않도록
catch(() => {})로 무시할 수 있다.
트리아지를 위한 프롬프트 설계
- 원문을 그대로 전달하기보다 모델이 판단하기 쉬운 구조화된 정보를 제공한다.
- 프롬프트에는 다음 정보가 포함된다.
- 제목과 이슈 번호
- 저장소 이름
- 상태와 라벨
- 생성일
- 작성자
- 이슈 본문
- 모델에게 2~3문장으로 간결하게 답하도록 요청한다.
- 응답 목표는 다음 세 가지다.
- 이슈가 무엇에 관한 것인지 설명
- 핵심 문제나 요청 식별
- 조사 필요, 구현 가능, 백엔드 팀 배정, 중복으로 종료 등 권장 조치 제안
- 빠른 검토를 위해 명확하고 실행 가능하게 작성하도록 하고, 마크다운 형식은 사용하지 않도록 지시한다.
- 라벨과 작성자 같은 메타데이터도 이슈의 성격과 처리 방향을 판단하는 데 중요한 맥락으로 활용된다.
실용적인 권장 사항
Copilot SDK를 모바일이나 웹 앱에 직접 넣기보다 Node.js 서버에 배치하고, 인증 정보는 서버에만 보관하는 구성이 적절하다. 또한 세션 정리를 반드시 보장하고, AI가 실패해도 기본 트리아지가 가능하도록 비AI 대체 경로를 마련하는 것이 안정적인 운영에 중요하다.