외부 AI 리뷰를 7번 거치니, 같은 오류가 4번 반복되었다 — 답변의 개수가 증거의 양이 아니다
요약
외부 AI 리뷰를 여러 번 거치며 사이트를 개선하는 과정에서, 같은 오류가 반복되는 현상을 경험했다. 이 글은 답변의 횟수 자체가 증거의 양이 될 수 없으며, 판단은 '새로운 증거' 추가 여부와 '전제의 무너짐'을 기준으로 해야 함을 강조한다.
핵심 포인트
- 같은 리뷰어의 반복된 지적은 독립적인 증거로 합산 불가
- 판단 기준은 횟수가 아닌 새로운 증거의 유무여야 한다
- 반대되는 주장은 전제가 무너졌는지로 판단해야 한다
자사 사이트 개선을 외부 AI 리뷰어(같은 리뷰어)에게 하루에 7번 진행했습니다. 채택된 지적 사항은 많았고 (첫 번째만으로도 채택 22개, 수정 채택 12개). 하지만 'Hero의 H1이 DOM에서 마지막에 있다'는 잘못된 지적이 4번 연속되었습니다. 실제 HTML을 3가지 버전으로 측정하여 이를 반박했고, 6번째부터는 작업을 중단했습니다.
여기서 알게 된 것은 두 가지입니다. 첫째, 같은 리뷰어가 H1의 위치라는 같은 관측 대상에 대해 반복한 4번의 지적은 독립된 4건의 증거로 합산할 수 없다 (답변의 개수가 증거의 양이 되지 않는다). 둘째, 7번의 요청은 대상 문서가 매번 다르기 때문에, 7가지 답변을 모아서 '같은 상태를 보여주었다'고 말할 수는 없습니다. 판단은 '횟수'가 아니라 '새로운 증거가 추가되었는지'로 해야 합니다. 그리고 이전과 반대되는 말을 들었을 때는, 리뷰어들끼리 싸우게 하지 말고 이미 결정된 문서의 전제가 무너졌는지로 판단해야 합니다.
이 글의 위치 (2026-09-26 추가)
- 이 글에서 새롭게 제시하는 것: 같은 리뷰어에게 7번 요청한 것 중, H1의 위치라는 같은 관측 대상에 대해 같은 오류가 4번 연속된 것 = 답변의 개수가 증거의 양이 되지 않는다.
- 적용 범위: 동일 외부 AI 리뷰・하루・당사의 사이트입니다.
숫자의 원본 데이터와 재현 절차는 검증 기록(Lab)에 정리했습니다.
대상은 Astro 기반의 정적 사이트 1개입니다. 제가 지적 사항을 실제 HTML로 측정하여 채택 여부를 결정하고 커밋했습니다.
| 회 | 대상 | 처리 내용 | commit |
|---|---|---|---|
| 1 | 사이트 개선 제안 49절 | 채택 22・수정 채택 12・기각 6・본인 재량 6 | 개선서 V2 |
| ... | 반박 1 (DOM 순)・이미 완료 3~4 (기록 방식에 따라 변동)・채택 8 / 진실 4・절반 오류 1・기각 동의 2 | 580bf03 7ea860b | |
| 4 | 공개판 검토 | ||
| 반박 2 (DOM 순 S×3・진입점이 제목보다 앞)・채택 5・유지 3 | d82ffa2 | ||
| 5 | 동일 | 반박 1 (DOM 순)・채택 4・이미 완료 5・유지 2. ⚠ 4번째와 반대되는 권고 1 세트 | bd0ba4d |
| 6 | 동일 | 반박 1 (DOM 순・3가지 버전으로 측정)・남은 9개 항목은 반영됨 | 없음 |
| 7 | 통합판 | 즉시 5・Lab 측 5・유지 3 (동의) | da3168e |
⚠ 계산 방식: '사이트(또는 메인)' 전체에 대한 평가를 1회로 계산했습니다. 같은 날 '움직임 체계'만을 주제로 한 별도의 평가가 1회 있었고 (채택 8・기각 동의 4・미채택 3. DOM 순 지적 없음), 이를 포함하면 총 8회입니다.
'DOM 순' 오류는 3, 4, 5, 6번째의 4번입니다. 4번 모두 본문은 조금씩 다르지만, 주장은 같습니다 (Hero의 제목이 문서의 끝에 있다 / 진입점 목록이 제목보다 앞에 있다).
리뷰어가 말하는 'H1이 DOM에서 마지막'을 실제 HTML로 측정했습니다.
① 생(生) HTML의 문자 위치 (curl로 가져온 본문의 indexOf) : 4페이지 모두 header < h1 < 첫 번째 h2
(메인은 56 < 1,449 < 2,435・4번째 시점. 4페이지 분량의 숫자는 Lab 버전에 있음)。'진입점 목록이 제목보다 앞'도 진입점의 h2는 ul보다 앞이었습니다. ⚠ 도중에 사이트를 수정했기 때문에, 회차별 위치 숫자는 조금씩 다릅니다 (5~6번째 시점은 h1 1,449 < h2 2,428). 결론은 변하지 않습니다.
② innerText로 얻을 수 있는 텍스트 순서: 소구 → h1 → 본문 → CTA → 증거 → '무엇을 할 것인가'…… 순. H1은 2번째입니다. (innerText는 렌더링 순의 텍스트이며, 스크린 리더가 읽어주는 순 그 자체는 아닙니다. 여기서는 '보이는 순서' 확인용으로 사용했습니다) ③ compareDocumentPosition: h1이 첫 번째 h2보다 앞.
main은 display: block이고, order
가지고 있는 요소는 0(CSS로 순서를 바꾼 요소도 없음).```
const h1 = document.querySelector('h1'), h2 = document.querySelector('main h2');
(h1.compareDocumentPosition(h2) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0; // true = h2는 h1의 후
[...document.querySelectorAll('*')].filter(e => getComputedStyle(e).order !== '0').length // 0
세 가지 모두 같은 결론이었습니다. 리뷰어가 무엇을 보고 '마지막'이라고 했는지는 알 수 없습니다(추측하지 않음). 말할 수 있는 것은 '실제 DOM은 아니다'까지만입니다.
4번째에는 '상단의 <span style="color: #999">확인한 결과</span>와 Lab의 2개를 한 섹션에 통합'을 권장했고, 5번째에는 '성공 1 + 기각 1로 제한하여 Lab은 별도 섹션'을 권장했습니다. 반대 방향이었습니다.
당시에는 **사내 개선서에 적힌 순서(확인한 결과 → Lab)와 일치하는 쪽**(분리)을 채택했습니다. 작동했지만, 이는 '일치하는 쪽을 채택한다'는 점에서 확인 편향으로 보입니다.
지금이라면 이렇게 쓸 것입니다. **결정된 문서의 목적・제약・수용 조건에 비추어, 새로운 증거가 결정된 전제를 훼손하지 않는 한 결정된 것을 유지한다.** 5번째 권장은 새로운 증거를 가지고 있지 않았기(같은 상태에 대한 재해석) 결정된 것을 유지 = 분리. 결과는 같지만, 이유가 '일치'에서 '전제가 훼손되지 않음'으로 바뀝니다.
DOM 순서 지적이 반복적으로 돌아온 것은 같은 읽기를 다른 말로 다시 쓰고 있는 것처럼 보입니다(리뷰어 내부에서 무엇이 일어났는지는 확인하지 않았습니다). 회차마다 대상 문서는 다르고, 도중에 사이트도 고쳤기 때문에 7가지 답변을 '같은 상태에 대한 답변'이라고 할 수는 없습니다. 말할 수 있는 것은, **H1의 위치라는 같은 관측 대상에 대해, 도중에 사이트를 고쳐도 실제 HTML 측정 결과(h1이 먼저)가 변하지 않았다면, 지적이 4번 나왔더라도 증거는 늘어나지 않았다는 것**입니다. 다수결처럼 보여도, 같은 관측을 4번 세고 있을 뿐이며, 4건의 증거로 합산할 수 없습니다(통계적 독립성을 실험으로 보여준 것은 아닙니다. 여기서 말할 수 있는 것은 '새로운 근거가 없는 같은 관측 대상에 대한 지적은, 같은 관측의 다시 쓰기로 취급했다'까지만입니다).
판단의 축을 '몇 번 들었는가'에서 '**새로운 증거가 늘어났는가**'로 바꾸면, 6번째에 작업을 중단한 것에 대한 설명이 됩니다. DOM 순서 지적은 4번째 이후로 새로운 증거를 하나도 가져오지 않았습니다.
6번째에 저희가 세운 규칙은 'DOM 순서 지적은 측정한 값을 첨부하여 부정만 하고 작업하지 않는다'였습니다. 이는 너무 강합니다. 코드가 바뀌었거나, 측정 방식이 잘못되었거나, 새로운 근거가 나왔다면 재검토해야 하기 때문입니다.
**대상 상태・근거・측정 조건이 변하지 않은 동일 지적은 재작업하지 않는다. 새로운 증거 또는 상태 변경이 있었을 때만 재개한다.**
재개하는 조건은 3가지뿐입니다: ①**대상 상태**가 바뀌었거나(코드나 문구를 고침) ②**새로운 증거**가 나왔거나(측정값・1차 자료) ③**측정 조건**이 바뀌었을 때(측정 방식・환경). 이 중 아무것도 없으면 종료합니다.
이는 'AI를 무시하는 규칙'이 아니라, 재감사의 한계 효용을 관리하는 규칙입니다. 구현은 기록표 1장으로 충분합니다.
| 회 | 지적 | 현물로 측정한 값 | 채택 여부 및 이유 |
|---|---|---|---|
| 3 | H1이 DOM에서 마지막 | h1 777 < 체제 2227(V2-1 본방) | 부정・측정값을 첨부함 |
| ... || 6 | 동상 | 3가지 (생 HTML・innerText・compareDocumentPosition) | 부정・상태도 근거도 변하지 않음→이후는 재작업하지 않음
|
- 'AI 리뷰는 신뢰할 수 없다'고 말하는 것은 아닙니다. 7번을 거쳐 채택한 지적은 진짜였고, 사이트는 그것으로 좋아졌습니다.
- 'n번에서 멈춰라'라고도 말하지 않습니다. 멈출 조건은 횟수가 아니라 '새로운 증거가 없음'입니다.
- 리뷰어가 내부적으로 무엇을 봤는지는 알 수 없습니다. 실제 DOM이 아니라는 것만 측정할 수 있었습니다.
- 같은 리뷰어・같은 날・1 사이트의 1 시리즈(n=7). 다른 리뷰어나 다른 날에 동일한지 여부는 측정하지 않았습니다.
4페이지 분량의 위치 숫자・전 채택/기각 이력・검증 기록(형식)은 본가 Sumitsuke Lab → 같은 AI 리뷰를 하루에 7번 거치니, 같은 오류가 4번 연속되었다—답변의 개수는 증거의 양이 아니다. 판단은 '새로운 증거'로 합니다.
사이트 개선안은 외부 AI 리뷰가 제시했고, 실제 HTML의 측정 및 채택 여부(採否)와 커밋(commit)은 사람과 Claude Code가 진행했습니다. 리뷰어의 제품명은 언급하지 않았습니다. 대상은 자사 웹사이트이며, 고객 프로젝트는 포함되지 않습니다.
외부 AI 리뷰를 실물에 대입하여 대조하는 운영 방식은 'AI 리뷰를 실물로 대조하는 운영'입니다. 3회, 17건이 모두 정확했더라도, 지적되지 않은 구멍(결함)이 2건 있었습니다. 본 기사는 그 '반복' 버전입니다.
*본 기사는 Zenn에도 동일한 내용이 게재되어 있습니다.*
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기