요약
Nietzschian Debugger는 답 대신 질문만 던져 개발자가 스스로 버그 원인을 찾게 하는 디버깅 도구입니다.
개발자 딜라와르 샤피크가 만든 명령줄(CLI) 도구로, 스스로를 "반(反)AI 디버거"라고 소개합니다. AI가 해결책을 바로 내주면 의존만 커지고 배우는 것은 적다는 문제의식에서 출발했습니다.
왜 중요한가
- AI를 답을 주는 도구가 아니라 질문하는 상대로 바꿔 써서 개발자의 실력을 키우자는 제안입니다.
- 빠르지만 얕은 해결 대신 고통스럽지만 오래 남는 학습을 택한 설계라서, 주니어부터 시니어까지 연습 상대로 쓸 수 있습니다.
핵심 내용
- 모든 응답이 질문이며, 개발자의 가정을 따지고 외면한 증거를 보게 하고 약한 추론을 시험합니다.
- 강도는 차근차근 이끄는
socrates, 기본값인 직설적인nietzsche, 적대적인zarathustra의 3단계입니다. - README 예시에서는 일부 사용자만 겪는 로그인 403 오류의 원인을 질문 4개 만에 사용자가 스스로 찾아냅니다.
- 파일 경로를 주면 실제 코드를 읽어 질문에 반영하고, 세션 기록은 로컬에 저장합니다.
- 질문은 Claude API로 만들며, 사용자가 자신의 앤트로픽 API 키를 직접 넣어야 합니다.
HN 반응
- 이용자들은 "반AI"를 내걸고도 설치 첫 단계가 앤트로픽 API 키 설정이라는 모순을 꼬집었고, AI 의존을 줄이려는 시도라는 옹호도 있었습니다.
- 실제 LLM은 힌트를 바로 주거나 말꼬투리를 잡아 이런 역할에 서툴다는 경험담과, 니체는 소크라테스식 문답을 비판했다며 이름이 어울리지 않는다는 지적이 나왔습니다.
러버덕 디버깅 도구이고, 광고대로만 동작한다면 쓸 만할 수 있습니다. 하지만 이름은 완전한 실패작입니다. 제작자 본인의 생각에게만 말을 걸 뿐, 바깥 세상에는 쓸모 있는 정보를 하나도 주지 않으니까요. 게다가 인터넷의 심오한 철학자들이 죄다 몰려와 관련도 없는 이야기로 잘난 척하며 도배하게 만들고요(여기서 보신 그대로입니다). 거기다 철자까지 틀려서 제가 다 거슬립니다!
이 도구 이름을 Nietszche's Debugger라고 지은 건 아이러니네요. 정작 니체는 『우상의 황혼』에서 소크라테스식 문답법을 정면으로 공격했거든요.
저는 아도르노의 부정변증법이 우울하긴 해도 더 잘 어울린다고 생각했어요. 디버깅은 끝나지 않으니까요.
기분이 긍정적이고 희망적이거나 아직 주니어 개발자라면, 헤겔의 규정된 부정(determinate negation)이 화해와 끝을 약속해 줘요. 이건 한 시기일 뿐이에요. 주니어 개발자 여러분, 여러분도 결국 아도르노식 체념을 함께하게 될 거예요.
흥미로운 점은 니체가 소크라테스의 문답법을 비판한 이유가 권력과 권위의 이동과 관련 있다는 것입니다.
니체에 따르면 주권적 권력과 권위는 정당화 없이 명령합니다. 소크라테스는 주권적 권력이 없었고, 그래서 전통적인 권력 투쟁에서는 이길 수 없었습니다. 그래서 소크라테스는 논의의 틀을 이성적 담론을 통한 정당화로 바꿨고, 그렇게 권위를 옛 귀족에게서 새로운 진리의 사제 계급으로 넘겼습니다. 이것은 덕이 곧 이성(진리 탐구)이라는, 소크라테스가 내세우고 결국 그리스인(그리고 서유럽)이 받아들인 도덕적 주장에 기대고 있었습니다.
그러니 니체의 이런 해석을 받아들인다면, 우리에게 정당화를 요구하는 AI를 만드는 일은 AI에게 권력과 권위를 넘겨주는 일로 볼 수 있습니다.
헤겔이라면 AI에게 정당화를 요구하는 것을 일종의 소외로 보되, 그로 인해 우리가 선택을 더 신중하게 하게 될 수 있다고 볼지도 모릅니다. 특히 지금처럼 제대로 따져 보지도 않고 더 많은 통제권을 내주는 시대에는 그렇습니다. 제약 없는 선택지가 곧 자유는 아니며, 때로는 스스로 제약을 두는 것이 자기 결정권을 줄이기는커녕 오히려 키워 주기도 합니다. 특히 그 한계를 자각하고 있을 때는 더 그렇습니다.
그뿐만이 아닙니다. 이런 맥락에서 "What doesn't kill you make me stronger"를 인용하는 것도 아주 아이러니합니다. 니체는 자기 이야기를 한 것이었으니까요. 그는 그 말을 랠프 월도 에머슨에게서 가져오면서 도덕적인 면을 걷어 냈습니다.
좀 더 가슴에 와닿는 다른 철학자가 말했듯이, "죽지 않을 만큼의 일은 당신을 아주아주 약하게 만든다"죠.
죽이지 못하는 건 피할 수 없는 일을 미뤄 줄 뿐이죠.
그러게요, 기획 설명을 보고 제일 먼저 든 생각이 "나라면 다른 철학자를 골랐겠다"였어요.
"anti-ai"
설치 첫 단계가 "Anthropic API 키를 설정하세요"라니...
찐들은 맨 위에 뜨는 "차단한 사용자가 이전에 기여한 적이 있습니다..." 배너를 보고 알게 되죠.
언어 모델한테 이런 식으로 말하라고 시키다니요.
저는 욕설을 쓰고 나면 모델이 "비꼬는" 투가 되면서 이런 응답 패턴이 저절로 나오는 걸 본 것 같은데, 이건 상상할 수 있는 최악의 디버깅 동료일 겁니다.
예를 들어 이 인용문에서 "서버 로그에는 뭐라고 나와 있죠?"가 아마 유일하게 맞는 대답일 거예요.
농담이에요.
펀치라인을 빼먹은 모양이네요.
README.md에는 이렇게 쓰여 있습니다.
그런데 니체 그림은 AI가 만든 것이고[1], README도 AI가 쓴 것이고, 코드도 AI가 만들었고(Claude가 공저자입니다), 샘플 대화 기록(nietzschian-debugger/tests/fixtures/sample-sessions/sample-v1.json)을 읽어 보면 이 앱도 출력을 만들 때 LLM을 쓰는 게 분명합니다...
그럼 "anti-AI"는 무슨 뜻입니까?
[1]: AI 생성 이미지를 둘러싼 문제는 접어 두더라도, 실존했던 사람의 얼굴을 AI로 만들어 내는 건 이런 일을 하는 방식 중 가장 무례해 보입니다... 하다못해 실제 사진이나 그림이라도 쓰세요...
계속 읽어 보세요.
"당신을 "아하!"의 순간으로 이끕니다. AI의 순간이 아니라 당신의 순간으로"
결국 AI에 의존하지 않으면서 AI를 계속 쓰라고 권하는 또 하나의 시도로 보입니다.
니체는 불평하지 않았을 것 같아요. 다만 살아 있는 사람을 상대로 이러면 정말 웃길 것 같긴 하네요(예를 들면 홍보 포스터를 만들 때요).
"인간은 극복되어야 할 무엇이다. 그대들은 그를 극복하기 위해 무엇을 했는가? 아, 잠깐, 그런 식은 아니고"
그 사람 GitHub 소개글을 읽으면 정말 웃겨요. 솔직히 한참 웃었어요.
재미있게 보셨다니 기쁩니다!
마르코프적인 프로이센 러버덕이라고요?
순전히 개발자 점성술이긴 한데, 코파일럿에서 Sonnet 3.5를 보조금으로 싸게 쓰던 시절에 저도 재미 삼아 '너는 엉클 밥이야, 이 레거시 자바 서비스를 위에서부터 읽어 내려가면 책처럼 읽히도록 가장 깨끗한 코드로 만들어 줘' 같은 프롬프트를 넣어 본 죄가 있거든요. 뭔가 배운 것 같기도 하고 재미도 있었으니 저는 뭐라 안 하겠습니다.
안티 AI 기술조차 이제 AI를 쓰네요. 우리가 참 멀리도 왔네요!
이걸 보니 궁금해지네요. 니체는 AI와 LLM 전반을 어떻게 생각했을까요? 우상으로 봤을까요, 아니면 인간이 이룬 성취의 기념비로 봤을까요?
제 생각에 니체는 LLM으로 남의 생각을 빌려 쓰는 것을 다소 퇴폐적이고 의지가 약하다는 증거로, 권위라는 환상에 쉽게 휘둘린다고 봤을 것 같습니다.
제가 이해하기로 힘에의 의지는 저항(또는 마찰)이 장애물을 극복할 의지의 힘을 만들어 낸다는 이야기입니다. AI는 사실상 그 반대로 작동하면서 인지 능력까지 상품화합니다.
다른 댓글 작성자분 말씀처럼, 니체라면 이것도 플라톤의 이데아로 되돌아가는 또 하나의 퇴행으로 봤을 것 같습니다. LLM은 본질적으로 인지의 중앙값에 해당하는 출력입니다. 최소공배수 같은 평균 속에서 초인을 찾을 수는 없고, 요즘 애들 말대로 점점 더 "스무스 브레인(smooth-brained)", 곧 뇌에 주름이 없는 상태가 되어 가는 마약 같은 매력만 있을 뿐입니다.
『차라투스트라』 첫머리에 나오는 마지막 인간 대목을 읽어 보세요.
말 그대로 니체가 걱정했던 그 마지막 인간입니다. AI는 초인의 정반대예요.
니체든 아니든 멋진 아이디어네요. 이식성을 높이려면 이걸 스킬이나 프롬프트로 간추릴 수 있을지 궁금합니다. 한번 써 보겠습니다.
물론이죠
시니어 엔지니어로서 오랜만에 처음으로 즐거움이 느껴졌습니다. 프롬프트/스킬로, 더 이식하기 쉽게 만들어 주세요.
ㅋㅋㅋㅋㅋㅋ 아주 좋네요!
제가 최소한 최첨단 모델들을 관찰한 바로는, LLM에게 이런 역할을 시킬 때 가장 큰 문제는 모델이 학습되고 강제된 방식 때문에 둘 중 하나로 흘러간다는 점입니다. 둘 다 교육적이지도 도움이 되지도 않습니다.
"어려운 질문"을 던져 놓고는 곧바로 "힌트"를 줘서 "정답"이 뭔지 뻔히 드러내 버립니다(더 심하면 그냥 정답을 알려 줍니다).
지나치게 깐깐하게 굽니다("지나치게"에 최대한 강조를 줘서 하는 말입니다). 맥락상 무슨 뜻인지 너무나 분명한데도 쓴 표현을 하나하나 트집 잡을 정도입니다. 이 부분에서는 현재 GPT가 가장 심합니다(시킨 적도 없는데 터무니없이 깐깐합니다).
그리고 혹시 궁금해하실까 봐 말씀드리면, 저는 Claude 같은 도구의 출력을 실제로 읽어 보고 있고, 이런 식으로 동작하게 만들려고 여러 번 시도했습니다. 그런데 어째서인지 늘 위의 두 가지 중 하나가 벌어집니다. 학습 방식의 문제인지, 시스템 지침의 문제인지, 다른 무엇인지는 모르겠습니다.