최근, AI로 생성한 듯한 PR(Pull Request)이나 issue가 OSS(Open Source Software) 리포지토리에 늘어나고 있습니다. 겉보기에는 그럴싸해 보이지만, 막상 읽어보면 아무도 검증하지 않은 내용입니다. close(종료)하려 해도 일단 내용을 확인해야 하므로, 수가 늘어나면 메인테이너(Maintainer)의 시간이 은근히 낭비됩니다.
제 리포지토리에도 들어오기 시작해서, 자동으로 분류하는 GitHub App을 만들었습니다.
하는 일
설치하면 PR과 issue에 0~100점의 스코어(Score)를 매깁니다. 임계값을 넘으면 slop-quarantine 라벨을 붙이고, 판단 이유를 코멘트로 남깁니다.
隔離コメントの例
공을 들인 부분은 "자동으로 close하지 않는다"는 점입니다. 신규 컨트리뷰터(Contributor)의 진지한 PR을 기계가 멋대로 거부하는 것이 가장 싫었기에, 최종 판단은 반드시 사람이 하도록 설계했습니다. /slop approve 또는 /slop reject를 코멘트로 남기면 확정됩니다.
정밀도
무료 플랜은 휴리스틱(Heuristic)만으로 동작합니다 (API 키 불필요). 수중에 있는 평가 세트 25케이스(리포지토리에서 공개됨)에서는 precision(정밀도) 100% / recall(재현율) 92%였습니다. 평가 세트가 작으므로 과신은 금물이지만, 명백히 생성만 했을 뿐 내용이 없는 것들은 대부분 잡아낼 수 있습니다.
사용법
https://slopguard.app 에서 설치하기만 하면 됩니다. Action의 YAML은 필요 없습니다. 소스는 https://github.com/Blue-B/slopguard 에서 공개하고 있습니다 (MIT + Commons Clause). 셀프 호스트(Self-host)도 가능합니다.
같은 문제로 고민하고 계신 분이 있다면 시도해 보세요. 피드백을 주시면 감사하겠습니다.
Discussion