답을 주지 않는 디버거? 질문만으로 버그 원인을 찾게 만드는 'Nietzschian Debugger'

한 줄 요약
Nietzschian Debugger는 버그를 대신 고쳐주지 않는 독특한 CLI 디버깅 도구입니다. 정답 대신 질문을 던져 개발자가 자신의 가정과 증거, 추론을 되돌아보게 하고, 결국 버그의 원인을 스스로 찾도록 이끕니다.
AI가 코드를 순식간에 고쳐주는 시대에 일부러 답을 알려주지 않는 도구라니, 조금 역설적으로 들리시죠? 하지만 바로 그 점이 이 도구의 핵심입니다.
왜 '답을 주지 않는' 디버거일까?
요즘 개발자들은 에러 메시지를 AI에 붙여 넣고, 돌아온 답변을 복사해 배포하는 흐름에 익숙합니다. 빠르긴 하지만 왜 그 버그가 생겼는지는 모른 채 넘어가는 경우가 많죠.
Nietzschian Debugger는 이런 방식에 정면으로 반대합니다.
- 모든 응답은 질문으로만 이루어지며, 수정 방법은 알려주지 않습니다.
- 개발자가 당연하게 여긴 가정을 의심하게 합니다.
- 확인하지 않고 넘어갔던 증거를 들여다보게 합니다.
- 허술한 추론을 다시 검토하게 합니다.
목표는 도구가 답을 맞히는 것이 아니라, 개발자 본인이 "아, 이거였구나!" 하고 깨닫는 순간을 만드는 것입니다. 빠르지만 피상적인 해결과 AI 의존 대신, 스스로 생각하는 힘과 꾸준한 성장을 지향합니다.
이런 분들께 추천합니다
- 답을 복사하기보다 제대로 배우고 싶은 주니어 개발자
- 실력을 키워 주던 치열한 고민의 시간을 다시 원하는 시니어 개발자
- 팀의 사고력과 문제 해결 역량을 중요하게 여기는 엔지니어링 매니저
- 디버깅 직관을 길러야 하는 부트캠프 수강생
- 자립적인 개발 습관을 만들고 싶은 모든 분
세 가지 질문 강도: 소크라테스부터 차라투스트라까지
질문의 '매운 맛'을 경험과 취향에 따라 고를 수 있다는 점도 재미있습니다.
| 모드 | 스타일 | 추천 대상 |
|---|---|---|
| socrates | 따뜻하고 단계적으로 안내하는 질문 | 주니어, 기초 학습 |
| nietzsche (기본값) | 직설적이고 대립적이며, 세세하게 이끌어주지 않음 | 일상적인 디버깅 |
| zarathustra | 약한 추론을 가차 없이 파고듦 | 강한 도전을 원하는 시니어 |
실제 세션은 어떻게 흘러갈까?
원문에 소개된 예시가 이 도구의 성격을 잘 보여줍니다. 상황은 **"일부 사용자의 로그인 요청에만 403 에러가 발생한다"**는 것이었는데요, 단 네 번의 질문으로 원인을 좁혀 갑니다.
- 실패하는 사용자와 성공하는 사용자는 무엇이 다른가? 라는 질문으로 시작합니다.
- "그냥 무작위로 발생하는 것 같다"는 추측 대신 서버 로그를 확인하도록 유도합니다.
- 로그에서 만료된 JWT 토큰을 발견하게 됩니다.
- 최근 인증 시스템 변경 사항을 되짚어 보게 하고, 결국 토큰 TTL을 변경한 뒤 기존 세션을 무효화하지 않았다는 근본 원인에 도달합니다.
세션이 끝나면 가정 점검, 증거 수집, 근본 원인 발견 속도를 시각적인 막대 그래프로 보여 줘서, 내가 어떤 부분에서 강하고 약한지 한눈에 확인할 수 있습니다.
세션 종료 명령어
solved또는found it: 원인을 찾았을 때 세션 종료I give up: 마지막 힌트 질문을 하나 받은 뒤 종료 (끝까지 답은 안 알려줍니다!)exit또는quit: 즉시 중단Ctrl+C/Ctrl+D: 강제 종료
실제 코드를 읽고, 성장을 기록한다
질문만 던지는 단순한 챗봇은 아닙니다. 실무에서 쓸 수 있도록 다음 기능을 갖췄습니다.
- 실제 코드 읽기: 파일 경로를 언급하면 일반적인 예제가 아니라 내 프로젝트의 실제 코드를 읽고 질문합니다.
- 상황별 철학 인용: 문제를 회피할 때는 니체, 압도당했을 때는 세네카, 전략이 필요할 때는 손자의 문장을 꺼내 듭니다. 디버깅에 은근한 재미를 더해 주는 요소예요.
- Growth Score: 여러 세션에 걸친 디버깅 역량의 변화를 막대 차트로 추적합니다.
- 로컬 세션 저장: 모든 대화는
.nietzschian/sessions/경로에 로컬로 저장됩니다. - 슬라이딩 문맥 관리: 대화가 길어지면 오래된 내용을 자동으로 요약해 긴 세션도 매끄럽게 이어갑니다.
설치 및 실행 조건
사용 전에 확인해야 할 몇 가지 사항이 있습니다.
- BYOK(Bring Your Own Key) 방식: 개인 Anthropic API 키가 필요하며,
ANTHROPIC_API_KEY환경 변수로 설정합니다. - 배포판과 소스의 실행 환경이 다릅니다 ⚠️
- npm에 배포된 v0.1.0은 Node.js 20 이상이 필요합니다.
- 현재 소스 코드는 Python 3.10 이상에서 동작합니다.
- 기술 스택: Anthropic SDK(Claude API), CLI는 Click, 터미널 UI는 Rich 기반입니다.
- 테스트: pytest를 사용하며, 개발 문서에 따르면 테스트가 121개 있습니다.
- 라이선스: MIT
에디터의 한마디
디버깅 실력은 결국 **"무엇을 의심하고, 무엇을 확인할 것인가"**를 판단하는 능력입니다. AI가 답을 바로 주는 환경에서는 이 근육이 약해지기 쉽죠. Nietzschian Debugger는 AI를 정답 자판기가 아니라 생각을 단련하는 스파링 파트너로 쓰자는 흥미로운 시도입니다.
당장 급한 장애 대응에는 맞지 않을 수 있습니다. 하지만 시간 여유가 있을 때 한 번쯤 nietzsche 모드로 스스로를 시험해 보는 건 어떨까요? "신은 죽었다"는 니체의 말처럼, 이번엔 복붙의 시대가 끝났다고 선언해 볼 차례일지도 모릅니다. 😉