Vibe Coding 방법론 · 제5절

디버깅 철칙:먼저 Log, 그 다음 수정

AI가 오류를 만나면 첫 번째 반응은 원인을 추측하고 고쳐보는 것이고, 안 되면 다른 추측을 합니다. 이 절은 가장 핵심적인 규칙을 세웁니다:추측성 수정 금지. 아래 두 가지 데모로 두 가지 버그 수정 경로를 직접 비교해 보세요.

핵심 규칙

추측성 수정 금지.근본 원인을 확인할 수 없을 때는 먼저 Log, 브레이크포인트, 또는 테스트 스크립트로 가설을 검증해야 합니다. 「한번 고쳐보고 어떻게 되나 보자」는 금지입니다. 백엔드는 터미널에, 프론트엔드는 브라우저 Console에 상세 로그를 남기세요. 어떤 문제든 첫 번째 단계는 항상 Log를 추가하는 것입니다.

인터랙티브 데모 1 · 같은 Bug, 두 가지 방법
Bug 현장:채팅 입력창에서 중국어 IME 사용 시, 사용자가 Enter를 눌러 후보 글자를 확인할 때 절반만 입력된 병음이 메시지로 바로 전송됩니다.

경로를 클릭하여 수정 과정을 관찰하세요. 오른쪽 카운터가 라운드 수와 누적 변경 행 수를 기록합니다.

0
수정 라운드
0
누적 변경 행 수
대기 중
Bug 상태
위에서 경로를 선택하여 시작하세요

추측성 수정 · 결과

아직 시연 안 됨

Log 먼저, 그 다음 수정 · 결과

아직 시연 안 됨
인터랙티브 데모 2 · 수정 전 세 가지 질문 체크리스트
새 Bug 도착:사용자가 채팅 메시지를 삭제한 후 대화 목록의 읽지 않은 메시지 수가 업데이트되지 않습니다.

규칙에 따라 버그를 수정하기 전에 반드시 세 가지 질문에 답해야 합니다. 순서대로 세 가지 질문을 열어보면 모두 확인한 후에야 「수정 시작」 버튼이 잠금 해제됩니다.

체인은 메시지 삭제 → 대화 요약 업데이트 → 읽지 않은 수 재계산 → 목록 새로 고침 전송입니다. 조사 결과 「읽지 않은 수 재계산」은 새 메시지를 받을 때만 트리거되며, 삭제 경로는 그 단계에 전혀 도달하지 않습니다. 오류 지점만 보면 이 체인을 볼 수 없습니다.
재계산 타이밍을 변경하면 대화 목록, 앱 배지, 다중 기기 메시지 동기화 세 곳에 영향을 줍니다. 작업 전에 업스트림/다운스트림 의존성을 이해하여 하나를 고치고 다른 것을 망가뜨리는 일을 방지하세요. 규칙은 또한 SubAgent를 실행하여 영향 범위를 병렬로 조사한 후 안전을 확인하고 수정할 것을 권장합니다.
있습니다. 「읽음 표시」와 「메시지 취소」는 동일한 업데이트 체인을 따르며, 마찬가지로 재계산 트리거가 누락되었습니다. 같은 함정은 한 곳에만 있지 않은 경우가 많습니다 — 이번에 모두 깔끔하게 수정하세요.

사전 조사 완료 — 진행하세요.수정 완료 후 마지막 단계가 있습니다:영향 범위를 선언하여 회귀 테스트해야 할 곳을 모두가 알 수 있도록 합니다.

⚡ 영향 범위:대화 목록 읽지 않은 수, 앱 배지, 읽음 표시, 메시지 취소
납품 기준 · 두 가지 필수 검사

Mock으로 실제 AI 인터페이스 우회 금지

AI 모델 호출이 포함된 기능은 납품 전에 인터페이스가 실제로 접근 가능한지 확인해야 합니다. 사용자가 API Key를 제공하지 않았으면 멈추고 요청해야 합니다 — 가짜 응답을 하드코딩하거나 로컬 Mock으로 실제 호출을 우회하는 것은 금지입니다. Key를 받으면 먼저 테스트 요청을 보내 사용 가능한지 확인한 후 개발을 계속하세요.

단위 테스트 통과 없이 납품 불가

핵심 비즈니스 로직, API 인터페이스, 데이터 처리 함수, 경계 조건을 모두 커버하세요. 테스트 파일은 tests/에 통합하고 test_{모듈명}.py로 명명하며, Python 프로젝트는 pytest를 사용합니다. 디버깅용 임시 스크립트는 사용 후 삭제하세요.

이 절의 핵심 포인트

증거 먼저.Log를 추가하는 2분이 세 라운드의 추측성 재작업과 숨겨진 근본 원인을 방지합니다. 수정 후 ⚡ 영향 범위:XXX, YYY, ZZZ 형식으로 영향 범위를 선언하고, 납품 전에 실제 인터페이스와 단위 테스트 두 가지 기준을 통과하세요.

출처:이 절의 내용은 오픈소스 저장소 itshen/xs_vibe_rules의 rule-opensource.mdc 제8장 「디버깅 및 로깅 표준」에서 정리했습니다.