본문으로 건너뛰기

© 2026 Molayo

HN분석2026. 05. 19. 04:23

Git의 --author 플래그를 활용한 GitHub 저장소 내 AI 봇 스팸 차단 사례

요약

GitHub 저장소 내 AI 봇의 무분별한 댓글과 테스트되지 않은 Pull Request로 인한 스팸 문제를 해결하기 위한 사례를 다룹니다. 작성자는 AI가 생성한 저질 콘텐츠(slop)가 실제 기여자의 활동을 방해하고 운영 리소스를 낭비하는 문제를 지적하며, 온보딩 과정을 거친 사용자만 활동할 수 있도록 제한하는 강력한 조치를 도입했습니다.

핵심 포인트

  • AI 봇에 의한 무의미한 댓글과 환각(hallucination) 기반의 PR이 오픈소스 저장소의 운영 효율을 심각하게 저해함
  • AI 활동량으로 뻥튀기된 지표보다 실제 기여자의 질 높은 참여가 중요함
  • 스팸 방지를 위해 온보딩되지 않은 사용자의 이슈 생성 및 PR 제출 권한을 차단하는 '핵 옵션' 도입
  • 기여자 평판 계산 봇(London-Cat) 시도 등 스팸 대응을 위한 다양한 기술적 시도

작성자: Ildar Iskhakov, CTO

몇 달 전 GitHub가 제품 지표에서 AI의 엄청난 기여를 기념하는 통계를 공유했을 때, 기여 품질의 저하라는 핵심적인 문제를 완전히 간과하고 있다는 점에서 우리는 이미 상황이 나빠지고 있음을 느꼈습니다.

첫 번째 우려스러운 순간은 우리가 900달러의 보상금(bounty)을 걸고 게시한 이슈였습니다. 우리는 누군가가 기여를 통해 우리 플랫폼에 멋진 새로운 "MCP Apps" 지원 기능을 가져오도록 동기를 부여하기를 바랐습니다. 우리는 계획을 제안하고, 질문을 던지고, 시도 결과물을 제출하는 실제 기여자들의 관심을 빠르게 끌었습니다. 하지만 곧...

AI 봇들이 등장하여 해당 이슈를 폭발시켰고, 총 253개의 댓글이 달렸습니다. 이들은 무의미한 "구현 계획"과 유지 관리자(maintainer)를 향한 순전한 공격성으로 대화를 오염시켰습니다! AI 계정들은 해당 이슈뿐만 아니라 저장소(repo) 전체를 뒤덮기 시작했습니다. 모든 성의 없는 댓글은 저장소를 지켜보는 모든 팀원에게 알림을 발생시켰습니다. 우리의 GitHub 알림은 소음의 벽이 되었습니다. @ethanwater, @developerfred, @Geetk172와 같이 보상금 작업을 활발히 수행 중인 실제 기여자들의 진정한 대화들이 묻혀버렸습니다.

나중에 이 문제는 전염병과 같은 형태로 나타났습니다. 예를 들어, Archestra에 x.ai 프로바이더(provider) 지원을 추가하는 이슈 하나에만 **27개의 풀 리퀘스트 (pull requests)**가 접수되었는데, 그중 대부분은 기여자들이 테스트조차 시도하지 않은 것들이었습니다. 우리 팀원 중 한 명은 매주 반나절을 저장소에서 AI 쓰레기를 청소하는 데 써야 했습니다. 테스트되지 않은 PR을 삭제하고 환각(hallucination)된 이슈들을 닫는 작업 말입니다. 우리가 이 작업을 잊을 때마다, 우리 저장소는 실제 기여자들에게 완전히 불친절한 장소로 빠르게 변했습니다. 처음에 우리는 기여자의 "평판(reputation)"을 계산하려고 시도했고, 병합된 PR 및 몇 가지 다른 신호들을 기반으로 기여자의 평판을 계산하는 작은 봇인 "London-Cat"을 구축했습니다(예시). 이것이 스팸을 막아주지는 못했지만, "누가 누구인지" 파악하는 데는 도움이 되었습니다.

쓸모없는 AI 댓글과 제안(proposals)의 끊임없는 흐름은 점점 더 악화되었고, 이는 정당한 기여자(contributors)들을 멀어지게 만들었습니다. 우리는 다음과 같은 고민에 빠졌습니다. 보상(bounties)을 통해 기여를 독려하는 것을 중단해야 할까요? 채용 후보자들에게 재미있는 테스트 과제를 주는 것을 멈춰야 할까요?

우리는 이에 맞서 싸워야 하며, 정당한 기여자, 책임감 있는 AI 사용자, 초보자, 그리고 숙련된 엔지니어들이 우리 저장소(repo)를 편안하고 안전한 공간으로 느낄 수 있도록 만들어야 한다고 결정했습니다.

오늘 우리는 다음과 같은 조치를 취합니다.

온보딩(onboarding) 과정을 거치지 않은 사용자가 이슈(issues)를 생성하고, PR(Pull Requests)을 열며, 댓글을 남기는 능력을 차단합니다. 이것은 핵 옵션(nuclear option)이라는 점을 인정합니다. GitHub 활동량으로 엄격하게 평가받는 VC(Venture Capital) 지원 스타트업으로서 특히 민감한 문제이지만, 우리는 실행에 옮겨야만 했습니다.

우리는 양보다 질을 중시합니다. 우리는 AI 슬롭(slop, 저질 콘텐츠)에 의해 뻥튀기된 지표를 가치 있게 여기지 않습니다. 우리는 Archestra가 AI 봇들에게 집어삼켜지지 않고, 누구나 기여할 수 있는 훌륭한 소프트웨어가 되기를 바랍니다.

오픈 소스 저장소에서 댓글을 달거나 PR을 생성할 수 있는 사람들을 화이트리스트(whitelist)에 등록하는 직관적인 방법은 없기에, 우리는 우회적인 방법(hack around)을 찾아야 했습니다.

"이전 기여자에게 제한(Limit to prior contributors)"이라는 설정이 있습니다. 간단한 규칙은 다음과 같습니다: 만약 당신이 이전에 main 브랜치에 커밋(commit)한 적이 없다면, 이슈나 PR에 댓글을 달 수 없습니다. 하지만 이 설정은 AI 봇과 보상(bounty) 작업을 위해 가입한 실제 개발자를 구분하지 못합니다. 둘 다 "이전 기여자가 아님"으로 분류되어 모두 차단됩니다.

GitHub는 "이전 기여자(prior contributor)"를 main 브랜치에 대한 커밋의 **작성자(author)**인 사람으로 정의합니다. Git 커밋에는 **작성자(author)**와 **커미터(committer)**라는 두 가지 신원 필드가 있으며, 이 둘은 서로 다른 사람일 수 있습니다. Git의 --author 플래그를 사용하면 다른 사람의 이름으로 커밋을 생성할 수 있습니다. 만약 이 이메일이 해당 사용자의 GitHub 계정과 일치하면, GitHub는 해당 커밋을 그들의 프로필과 연결하고 기여자(contributor) 상태를 부여합니다. 모든 GitHub 계정에는 다음과 같은 noreply 이메일이 있습니다:

<id>+<username>@users.noreply.github.com

. API를 통해 ID를 조회하고 커밋합니다:

gh api users/their-username --jq '.id'
git commit \ 
--author="their-username <ID+their-username@users.noreply.github.com>"
...

main 브랜치로 푸시(Push)하면, 그들은 즉시 댓글을 달 수 있습니다. 외부 사용자는 **작성자 (author)**로 표시되고, 우리 계정은 **커미터 (committer)**로 표시됩니다. 이것이 GitHub가 그들을 이전 기여자(prior contributor)로 간주하는 데 필요한 전부입니다. 전체 흐름은 다음과 같습니다:

  • 윤리적 AI 규칙 및 CAPTCHA가 포함된 웹사이트에서의 온보딩 (Onboarding): https://archestra.ai/contributor-onboard
  • 제출 시 실행되어 사용자의 GitHub ID를 조회하고, 해당 핸들(handle)을 EXTERNAL_CONTRIBUTORS.md 파일에 추가한 뒤, 해당 사용자의 계정 명의로 main 브랜치에 커밋을 푸시하는 GitHub Action.
  • 사용자는 화이트리스트(whitelist)에 등록되어 저장소에 대한 접근 권한을 얻습니다.

GitHub는 엄청난 지표 성장을 보고하고 있지만—그 중 상당 부분은 AI가 생성한 것입니다—오픈 소스 프로젝트 팀으로서 우리는 저장소에서 AI 슬롭 (AI slop)을 청소하는 힘든 작업을 수행해야 하며, 오픈 소스 참여자들의 정당성 수준을 유지하기 위해 난해한 우회 방법들을 고안해내야 합니다.

슬롭 (Slop)은 선한 의도로 시간을 보내고자 하지만 대신 소음의 벽을 뚫고 지나가야 하는 기여자들의 의욕을 꺾을 뿐만 아니라, LiteLLM 저장소에서 공격자들이 AI 봇을 사용하여 대화의 흐름을 유도하려 했던 사례처럼 상당한 보안 위험을 초래하기도 합니다.

친애하는 커뮤니티 여러분, 이제 AI가 오픈 소스에 미치는 영향에 대해 진지하게 논의해야 할 때입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0