깃허브 AI 스팸 봇, Git의 --author 플래그로 완벽히 차단한 사례
오픈소스 저장소에 AI 봇이 무분별하게 스팸 PR과 이슈를 생성하여 진짜 기여자들의 의욕을 상실하게 만드는 문제가 심각해졌습니다. 이를 해결하기 위해 팀은 Git의 '--author' 플래그를 활용해 사전 온보딩을 거친 사용자만 기여할 수 있는 권한을 부여하는 독창적인 방법을 고안했습니다. 이 사례는 양적 지표보다 코드 품질을 중시하고, AI로 인해 훼손된 오픈소스 생태계를 보호하려는 개발자들의 실무적 대응 방안을 보여줍니다.
작성자: 일다르 이스하코프(CTO)
우리가 알던 오픈소스의 종말 수개월 전 깃허브(GitHub)가 제품 지표에서 AI의 엄청난 기여를 자랑하는 통계를 공유했을 때, 그들은 기여 품질이 저하되었다는 핵심을 완전히 간과했습니다. 우리는 이미 상황이 악화되고 있다고 느꼈습니다.
첫 번째 우려스러운 순간은 900달러의 바운티(현상금)를 걸고 올린 이슈였습니다. 누군가 기여하여 우리 플랫폼에 멋진 새 'MCP Apps' 지원을 가져오도록 동기를 부여하길 바랐습니다. 곧 계획을 제안하고 질문하며 시도를 제출하는 정당한 기여자들의 관심을 끌었지만, 곧... AI 봇이 몰려와 이슈를 폭파시켰습니다. 총 253개의 댓글이 달렸고, 무의미한 '구현 계획'과 유지보수자를 향한 순수한 공격성으로 대화가 독이 되었습니다!
AI 계정은 이 이슈뿐만 아니라 전체 저장소를 홍수로 뒤덮기 시작했습니다. 형편없는 댓글 하나하나가 저장소를 살펴보는 모든 팀원에게 알림을 발송했습니다. 우리의 깃허브 알림은 소음의 벽이 되었습니다. 바운티 작업에 적극적으로 참여하던 @ethanwater, @developerfred, @Geetk172 같은 진짜 기여자들의 실제 대화가 파묻혔습니다.
나중에 이 문제는 전염병 형태를 띠었습니다. 예를 들어, Archestra에 x.ai 제공자 지원을 추가하는 이슈 하나만 해도 27개의 풀 리퀘스트(PR)를 받았는데, 그중 대부분은 기여자들이 테스트조차 해보지 않은 것들이었습니다. 우리 팀원 중 한 명은 매주 반나절을 저장소에서 AI 쓰레기를 치우고, 테스트되지 않은 PR을 제거하며 환각(Hallucination)으로 생성된 이슈를 닫는 데 써야 했습니다. 이 작업을 잊으면 우리 저장소는 정당한 기여자들에게 완전히 불친절한 곳으로 빠르게 변모했습니다.
반격 처음에는 기여자들의 '평판(Reputation)'을 계산하려 했고, 병합된 PR과 몇 가지 신호를 기반으로 기여자의 평판을 계산하는 작은 봇인 'London-Cat'을 만들었습니다. 당연히 스팸을 막지는 못했지만, 누가 누구인지 파악하는 데는 도움이 되었습니다.
다음 단계로 'AI 보안관(Sheriff)'을 만들었는데, 이게 당연히 몇 가지 정당한 PR도 닫아버렸습니다 🤦. 쓸모없는 AI 댓글과 제안의 끊임없는 흐름은 점점 악화되어 진짜 기여자들을 떠나게 만들었고, 우리가 다시 생각하게 했습니다. 바운티로 기여를 장려하는 것을 멈춰야 할까요? 구직자에게 재미있는 테스트 과제를 주는 것을 멈춰야 할까요?
우리는 반격하고, 정당한 기여자, 책임감 있는 AI 사용자, 초보자 및 숙련된 엔지니어를 위해 우리 저장소를 편안하고 안전한 공간으로 만들기를 고집하기로 결정했습니다.
오늘부터 온보딩(Onboarding) 과정을 거치지 않은 사람들은 이슈를 생성하고, PR을 열고, 댓글을 남길 수 없도록 차단합니다. 네, 극단적인 선택입니다. 깃허브 활동을 통해 철저하게 평가받는 벤처캐피탈(VC) 지원 스타트업에게는 특히 민감한 문제입니다. 하지만 우리는 방아쇠를 당겨야 합니다. 우리는 양보다 질을 중시합니다. 우리는 AI 쓰레기로 부풀려진 지표를 가치 있게 여기지 않습니다. 우리는 Archestra가 AI 봇에게 삼켜지지 않고 모든 사람이 기여할 수 있는 훌륭한 소프트웨어가 되기를 원합니다.
깃허브에서의 실행 오픈소스 저장소에서 댓글을 달거나 PR을 만들 수 있는 사람을 허용 목록에 추가하는 간단한 방법은 없어서, 우리는 우회 방법을 찾아야 했습니다.
'이전 기여자로 제한(Limit to prior contributors)'이라는 설정이 있습니다. 간단한 규칙입니다. 이전에 main에 커밋한 적이 없으면, 이슈나 PR에 댓글을 달 수 없습니다. 이 설정은 AI 봇과 바운티 작업을 위해 가입한 실제 개발자를 구별할 수 없습니다. 둘 다 '이전 기여자'가 아닙니다. 둘 다 잠깁니다.
깃허브는 깃허브 계정이 main의 커밋 작성자(Author)인 사람을 '이전 기여자'로 정의합니다. Git 커밋에는 작성자(Author)와 커밋터(Committer)라는 두 개의 신원 필드가 있으며, 이는 서로 다른 사람일 수 있습니다. Git의 '--author' 플래그를 사용하여 다른 사람에게 귀속된 커밋을 만들 수 있습니다. 이메일이 해당 깃허브 계정과 일치하면, 깃허브는 커밋을 해당 프로필에 연결하고 기여자 상태를 부여합니다.
모든 깃허브 계정에는 noreply 이메일이 있습니다: