
AI가 작성한 코드를 추적하는 OSS를 만든 이야기 ── git blame의 AI 버전 「aidiff」
요약
AI 생성 코드가 급증함에 따라 코드 내 AI 작성 여부를 추적할 수 있는 오픈소스 도구 'aidiff'를 소개합니다. git blame처럼 코드의 AI 기여도를 라인 단위로 분석하고 통계를 제공합니다.
핵심 포인트
- AI 생성 코드의 비율과 트렌드를 시각화하여 제공
- 명시적 태그, 커밋 메시지, 휴리스틱 분석을 통한 3단계 탐지 방식
- 파일별 히트맵 및 컨트리뷰터별 AI 사용률 리포트 생성 가능
- pip 설치를 통해 기존 리포지토리에 즉시 적용 가능
AI가 작성한 코드를 추적하는 OSS를 만든 이야기
과제: 아무도 AI 코드를 추적하지 않고 있다
Claude Code, Cursor, GitHub Copilot — 이제 코드 작성 방식이 근본적으로 바뀌고 있다.
GitHub Octoverse 2025에 따르면, 상용 리포지토리(Repository)의 약 41%가 AI 생성 코드를 포함하고 있다고 한다. 게다가 또 다른 조사에서는 AI가 생성한 코드를 포함하는 PR(Pull Request)은 변경 실패율이 약 30% 높다는 데이터도 나오고 있다.
그럼에도 불구하고, 대부분의 팀은 "어떤 코드가 AI에 의해 작성되었는지"를 전혀 파악하지 못하고 있다.
구체적으로 다음과 같은 문제가 있다:
어떤 파일이 거의 AI 생성인지 알 수 없음 - AI 생성 코드가
제대로 리뷰되고 있는지 추적할 수 없음 - 팀 전체의
AI 의존도 트렌드가 보이지 않음
git blame으로는 "누가 작성했는지"는 알 수 있다. 하지만 "AI가 작성했는지"는 알 수 없다.
이 공백을 메우기 위한 OSS를 만들었다.
aidiff란
git blame의 AI 버전
aidiff scan # AI 코드 비율을 계산하여 표시
aidiff status # 상세한 통계 정보
aidiff report # HTML 리포트 생성
pip 한 번으로 설치 가능하다. 기존 리포지토리에 바로 적용할 수 있다.
설치 및 사용법
pip install aidiff
cd your-repo
maidiff scan
출력 이미지:
╭─────────────── aidiff status ───────────────╮
│ AI Code Ratio: 34.7% │
│ │
...
특정 파일의 라인 레벨(Line level) 추적도 가능하다:
aidiff track src/auth/middleware.py
Line Score Reasons Code
12 0.82 explicit AI tag # ai-generated: Claude
34 0.71 placeholder comment # TODO: Add error handling
...
HTML 리포트도 생성할 수 있다:
aidiff report
# → .aidiff/report.html 이 생성되어 브라우저에서 열림
Chart.js를 통해 AI 코드 비율의 트렌드 그래프, 파일별 히트맵(Heatmap), 컨트리뷰터(Contributor)별 AI 사용률을 확인할 수 있다.
어떻게 작동하는가 — 휴리스틱(Heuristic) 탐지의 메커니즘
aidiff는 3층 탐지 접근 방식을 조합하고 있다.
1. 명시적 태그 (고확도)
# ai-generated
# @ai
# Generated by Claude
...
이러한 태그가 포함된 행은 스코어 1.0 (AI 확정)으로 취급한다.
2. 커밋 메시지 분석
Co-authored-by: Claude, feat(ai): 등의 패턴을 git 로그에서 탐지하여 커밋 단위로 플래그를 세운다.
3. 휴리스틱 분석 (특징량 기반)
AI가 작성하는 코드에는 일정한 습관이 있다. 다음 패턴들을 스코어링한다:
| 패턴 | 스코어 | 예 |
|---|---|---|
| 장황한 변수명 | +0.4 | user_authentication_token_validation |
| ... |
여기에 추가로 **클러스터 부스트(Cluster Boost)**가 있다. AI 같은 행이 5행 연속으로 이어지는 경우, 그 주변의 스코어도 함께 높아진다. AI는 한 번에 덩어리로 코드를 작성하기 때문에, 고립된 1행보다 연속된 블록의 신뢰도가 더 높다.
스코어 해석
- 0.0〜0.4: 거의 사람이 작성한 코드
- 0.4〜0.7: AI의 관여가 의심됨
- 0.7〜1.0: AI가 작성했을 가능성이 높음
CI/CD 및 git hook에의 통합
pre-commit hook으로 자동 기록
aidiff install
# → .git/hooks/pre-commit に 훅을 설치
# 커밋할 때마다 .aidiff/data.json 이 업데이트됨
GitHub Actions에서 임계값 체크
aidiff init-action
# → .github/workflows/aigate.yml 을 생성
PR의 AI 코드 비율이 70%를 초과하면 자동으로 코멘트가 달립니다. 코드 리뷰 관점에서 "이 PR은 거의 AI 생성물임"이라는 정보가 리뷰어에게 전달됩니다.
CI용 클린 출력도 지원:
aidiff check --ci --threshold 70
# AI ratio: 34.7%
# Files: 42
...
왜 만들었는가
저 자신이 Claude Code를 헤비하게 사용하게 되면서, "이거 나중에 다시 봤을 때 내가 작성한 코드인지 전혀 모르겠는데?"라고 느낀 것이 계기였습니다.
AI 코드를 배제하고 싶은 것이 아닙니다. 오히려 그 반대로, AI 생성 코드를 가시화함으로써 어디에 인간의 리뷰가 필요한지를 명확히 할 수 있다고 생각합니다.
"AI가 작성했으니 신뢰할 수 없다"가 아니라 "AI가 작성했으니 중점적으로 리뷰한다"라는 문화를 만들고 싶습니다.
리포지토리 · 스폰서
- GitHub: https://github.com/techino35/aidiff
- PyPI:
pip install aidiff
💚 GitHub Sponsors (Insiders 모델)
aidiff는 MIT 라이선스로 무료로 사용할 수 있지만, 스폰서에게는 우선적으로 기능을 제공하고 있습니다.
현재 Insiders를 위해 계획 중인 기능:
- 커스텀 탐지 규칙 (프로젝트 고유의 AI 패턴 정의)
- 팀 대시보드 (여러 리포지토리의 횡단 집계)
- Slack / Discord 알림
- 우선 지원
작은 OSS이지만, AI 시대의 코드 품질 관리에 기여할 수 있다고 믿으며 개발을 계속하고 있습니다. 피드백과 Star도 환영합니다.
Discussion

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