GitHub 이슈 분류(Triage)를 AI에게 맡기기

GitHub 저장소를 관리하는 것은 어렵습니다. 새로운 이슈들은 종종 모호한 제목이나 재현 단계가 없는 상태로 접수됩니다. 당신은 라벨을 붙이고, 중복 여부를 확인하고, 추가 정보를 요청하는 데 하루를 보냅니다. 이런 작업은 정작 코딩에 써야 할 시간을 갉아먹습니다.

2024년 설문 조사에 따르면 오픈소스 메인테이너의 60%가 그만두는 것을 고민해 본 적이 있다고 합니다. 이슈 관리는 매우 큰 부담입니다.

1차 검토를 처리할 봇을 만들었습니다. 이 봇은 GitHub Actions에서 실행되며 언어 모델을 사용합니다. 다음과 같은 작업을 수행합니다:

  • 규칙에 따라 라벨을 적용합니다.
  • 잠재적인 중복 이슈를 표시합니다.
  • 내용이 부실한 설명에 대해 누락된 세부 정보를 요청합니다.

이 봇은 경직된 스크립트가 아니라 에이전트입니다. 모델에게 일련의 도구(tools)를 제공하면, 모델이 어떤 도구를 어떤 순서로 사용할지 스스로 결정합니다. 깔끔한 이슈는 도구가 하나만 필요할 수 있지만, 복잡한 이슈는 세 개가 필요할 수도 있습니다.

첫 번째 버전은 너무 말이 많았습니다. 모든 이슈에 댓글을 달았죠. 이는 노이즈를 발생시켰고, 노이즈가 많아지면 사람들은 봇을 무시하게 됩니다.

저는 시스템 프롬프트에 문장 하나를 추가하여 이 문제를 해결했습니다. 모델에게 '아무것도 하지 않을 권한'을 준 것입니다. 침묵이 때로는 최선의 답이라는 점을 알려주었습니다. 이 한 문장이 그 어떤 코드 수정보다 모델의 행동을 더 크게 변화시켰습니다.

LiteLLM을 사용하여 Claude, GPT 또는 Gemini와 연동되도록 했습니다. 봇은 이슈에 조치를 취하기 위해 function calling에 의존합니다.

실제 테스트를 통해 세 가지 주요 과제를 발견했습니다:

  • GitHub 보안 정책으로 인해 봇이 pull request의 secrets를 볼 수 없습니다.
  • 신뢰할 수 없는 텍스트를 모델에 입력할 때 프롬프트 인젝션(prompt injection) 위험이 있습니다.
  • 권한 및 API 오류는 디버깅하기 까다로울 수 있습니다.

또한 봇을 위한 규칙을 하나 만들었습니다. 보안 위험만 체크하고 코드 품질은 평가하지 않는다는 것입니다. 봇이 설계를 판단하게 되면 기여자들을 멀어지게 만듭니다. 그런 결정은 인간의 몫으로 남겨두어야 합니다.

이슈 관리 업무로 지쳐 있다면, 이 설정이 도움이 될 수 있습니다. 반복적인 작업은 봇에게 맡기고, 당신은 중요한 결정에만 집중하세요.

Source: https://dev.to/jescalada/putting-an-ai-agent-in-charge-of-github-issue-triage-3085

Optional learning community: https://t.me/GyaanSetuAi