
AI 시대의 PR 리뷰에서 '어디를 봐야 할지'를 가시화하는 Attention Diff를 만들었다
요약
AI로 인한 코드 작성량 증가에 대응하여, 인간 리뷰어가 집중해야 할 부분을 시각화하는 'Attention Diff'를 소개합니다. 이 도구는 단순 변경 사항이 아닌 인간의 판단이 필요한 영역을 농담(濃淡)으로 표시하여 리뷰 효율을 높입니다.
핵심 포인트
- AI 코딩 도구 사용으로 인한 PR 급증 및 리뷰 병목 현상 해결 목적
- 단순 버그 탐지가 아닌 인간의 비즈니스 판단이 필요한 영역 강조
- Codex 및 Claude Code용 플러그인 형태로 구현
- 변경의 중요도에 따라 diff의 농도를 조절하여 리뷰 가시성 제공
서론
최근 AI를 사용하여 코드를 작성하는 기회가 상당히 늘어났습니다.
Codex나 Claude Code를 사용하면 구현 속도가 상당히 올라갑니다.
작은 수정뿐만 아니라 어느 정도 규모가 있는 변경도 AI에게 맡길 수 있게 되었습니다.
그에 맞춰 PR(Pull Request) 작성 속도도 올라갑니다.
나아가 AI에 의한 1차 리뷰도 가능해졌습니다.
명백한 버그, typo, 고려가 누락된 듯한 부분을 먼저 확인하게 할 수도 있습니다.
하지만 그럼에도 인간의 리뷰는 여전히 필요하다고 생각합니다.
최종적으로 "이 변경을 수락해도 좋은가"를 판단하기 위해서는 제품의 사양, 업무 규칙, 운용, 권한, 사용자에게 미치는 영향 등 인간이 판단해야 할 영역이 남아 있습니다.
반면, 인간의 리뷰 시간이 늘어난 것은 아닙니다.
AI에 의해 봐야 할 PR의 양은 늘어납니다.
AI는 1차 리뷰를 해줍니다.
하지만 인간의 리뷰는 남아 있습니다.
그렇게 되면 인간이 전부를 동일한 밀도로 보는 것이 아니라, 어디에 주력해야 하는지를 알기 쉽게 만들면 좋지 않을까 생각했습니다.
그를 위해 만든 것이 Attention Diff입니다.
Attention Diff란
Attention Diff는 GitHub Pull Request의 diff를 인간의 확인 필요도에 따른 농담(濃淡)이 있는 뷰로 표시하는 Codex / Claude Code용 플러그인입니다.
일반적인 diff는 "무엇이 변했는가"를 표시합니다.
Attention Diff에서는 거기에 더해 "어디에 인간의 판단이 필요해 보이는가"를 보이게 합니다.

진하게 표시된 행일수록 인간이 확인하는 것이 좋은 부분입니다.
반대로 기계적인 변경이나 기존 패턴의 복사에 가까운 변경은 흐리게 표시합니다.
중요한 것은 이것이 "버그를 찾는 도구"가 아니라는 점입니다.
목적은 인간의 리뷰를 대체하는 것이 아닙니다.
인간 리뷰어가 한정된 시간 속에서 봐야 할 장소에 집중할 수 있도록 하는 것입니다.
왜 만들었는가
AI로 코드를 작성하게 되면 리뷰 경험도 변할 것이라고 생각합니다.
지금까지는 PR 작성 속도가 어느 정도 인간의 구현 속도에 제약되어 있었습니다.
하지만 AI를 사용하면 구현 속도가 올라가고, PR의 수나 크기도 늘어나기 쉽습니다.
반면 리뷰하는 쪽의 시간은 늘어나지 않습니다.
PR이 늘어나면 아무래도 리뷰가 정체됩니다.
AI 리뷰에 전부 맡기고 싶은 마음도 듭니다.
하지만 AI 리뷰만으로는 판단하기 어려운 것들이 있습니다.
예를 들어 다음과 같은 변경입니다.
- 이 조건 변경으로 대상 사용자가 바뀌어도 괜찮은가
- 이 권한 변경으로 할 수 있는 사람이 늘어나도 괜찮은가
- 이 기본값(default value)으로 기존 사용자에게 미치는 영향은 문제가 없는가
- 이 fallback 동작으로 운용상 곤란함이 없는가
- 이 랭킹이나 스코어의 기준 변경은 제품으로서 타당한가
이런 판단은 단순히 코드가 올바른가만으로는 결정하기 어렵습니다.
사양, 업무, 운용, 제품의 의도를 고려하여 판단해야 합니다.
일반적인 diff는 변경 내용을 정확하게 보여줍니다.
하지만 "어디에 인간의 판단이 필요한가"까지는 알려주지 않습니다.
그래서 PR diff에 대해 "인간의 확인 필요도"를 부여하여 리뷰의 입구를 만들 수 없을까 생각했습니다.
중요하게 생각한 관점
Attention Diff에서 가장 중요하게 여기는 것은 일반적인 리스크가 아니라, 인간에게 남겨진 판단을 강조하는 것입니다.
예를 들어 billing이나 auth와 같은 파일은 일반적으로 신중하게 보는 것이 좋은 영역입니다.
하지만 billing 파일에 import가 한 줄 추가되었을 뿐이라면, 그 부분을 진하게 표시해도 큰 의미는 없습니다.
반대로 언뜻 보기에는 작은 조건식의 변경이라도 대상자, 권한, 기본값, 상태 전이, 업무 규칙이 바뀐다면 인간이 확실히 봐야 합니다.
즉, 보고 싶은 것은 "위험해 보이는 파일"이 아니라 "인간의 판단이 필요한 변경"입니다.
Attention Diff에서는 이러한 관점으로 diff를 봅니다.
예를 들어 기존 패턴을 복사하고 있을 뿐인 변경은 흐리게 처리합니다.
다만 그중에서 단 한 줄만 권한 조건이 다르다면 그 부분만 진하게 표시합니다.
모든 것을 진하게 만들어 버리면 결국 어디를 봐야 할지 알 수 없게 됩니다.
진하게 하는 곳과 흐리게 하는 곳 양쪽이 존재해야 비로소 리뷰의 우선순위가 보입니다.
어떻게 보이는가
Attention Diff에서는 행마다 농담이 생깁니다.
추가된 행은 녹색 계열, 삭제된 행은 적색 계열로 표시합니다.
그 위에, 인간의 확인 필요도에 따라 농도가 달라집니다.

또한, 왜 그 행을 봐야 하는지도 표시합니다.
단순히 "여기가 중요합니다"라고만 하면, 이유를 알 수 없어 납득하기 어렵습니다.
따라서 Attention Diff에서는 다음과 같은 정보도 표시합니다.
- 리뷰해야 하는 이유
- 가볍게 봐도 되는 이유
- 리뷰어를 위한 확인 질문
- 행 그룹별 라벨
예를 들어, 어떤 행이 진하게 표시되어 있는 경우에는,
대상 조건이 변경되었으므로 인간에 의한 사양 판단이 필요
와 같은 이유를 표시합니다.
반대로 연하게 표시되어 있는 행에도,
기존 패턴의 반복으로 동작 차분이 작음
과 같이, 가볍게 봐도 되는 이유를 표시합니다.
연한 부분에도 이유가 있으면, 리뷰어는 안심하고 진한 부분에 집중하기 쉬워집니다.
사용법
Codex에서 사용하는 경우, 다음과 같이 설치합니다.
codex plugin marketplace add Basio0916/attention-diff --ref main
codex plugin add attention-diff@attention-diff
Claude Code에서 사용하는 경우, 다음과 같이 설치합니다.
claude plugin marketplace add Basio0916/attention-diff
claude plugin install attention-diff@attention-diff
설치 후, GitHub 리포지토리 내에서 다음과 같이 요청합니다.
/attention-diff 190
190 부분에는 대상 Pull Request 번호를 지정합니다.
Pull Request URL로도 지정할 수 있습니다.
리포지토리는 여기입니다.
마치며
AI에 의해 코드를 쓰는 속도는 빨라졌습니다.
AI에 의한 1차 리뷰도 가능해졌습니다.
그럼에도 인간의 리뷰는 여전히 필요합니다.
다만, 인간이 모든 것을 동일한 밀도로 보는 것은 점점 어려워질 것이라고 생각합니다.
그렇기에 AI에게 리뷰를 통째로 맡기는 것이 아니라, AI를 사용하여 인간이 봐야 할 곳을 찾기 쉽게 만드는 것이 중요하지 않을까 생각합니다.
Attention Diff는 그것을 위한 작은 시도입니다.
혹시 관심이 있다면 꼭 한번 사용해 보세요.
피드백도 주시면 감사하겠습니다.
Discussion

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