LLM 응답을 개선하고 고품질 코드를 만드는 두 가지 변화
The two changes that improved LLM responses and resulted in quality code
핵심 요약
LLM의 반복적인 실수를 방지하기 위해 아키텍처 문서화와 AI 간 교차 검증 방식을 도입하여 개발 효율을 높인 경험담입니다.
- 아키텍처 문서화 — AI가 세션 간 기억을 유지하도록 아키텍처 문서에 의사결정 이유를 기록함
- AI 교차 검증 — 두 모델이 서로의 구현 계획을 비판하고 보완하도록 하여 사각지대를 제거함
- 시스템 프롬프트 — AI의 예스맨 성향을 제거하고 비판적인 시각을 갖춘 시니어 엔지니어처럼 행동하게 함
- 질문 유도 — 모호한 요구사항을 명확히 하기 위해 AI가 먼저 질문하도록 설정함
실시간 영상 처리, GPU 렌더링, 멀티플레이어 같은 꽤 복잡한 앱을 이런 식으로 만들고 있는데, 결국 다들 겪는 벽에 부딪히더라. 주말 동안은 진짜 좋은데, 나중엔 LLM이 이미 고쳐놓은 실수를 계속 반복해서 코드가 개판이 됨. 근데 딱 두 가지 바꾸고 해결했다. 혹시나 나처럼 머리 싸매는 사람 있을까 봐 공유함.
-
AI의 기억 장치로 쓸 '살아있는 명세서(living spec doc)'. 기능을 건드리기 전에 architecture.md 파일을 하나 유지하는데, 여기엔 앱이 뭔지뿐만 아니라 왜 그런 결정을 내렸는지까지 다 적어둠. 이 '왜(why)'가 핵심임. 새로운 채팅창 열 때마다 AI는 기억이 초기화되지만, 이 문서가 곧 기억이니까. 기능 하나 추가할 때마다 업데이트해라.
-
서로 검증하는 두 개의 AI. 한 모델한테 아이디어를 검토하게 해서 구현 계획을 짜게 하고, 그 계획을 다른 모델한테 넘겨서 아주 갈기갈기 찢어놓으라고 시킴. 엣지 케이스나 모순점, 더 간단한 방법 같은 걸 찾아내는 거지. 내가 결과물에 만족할 때까지 둘이 싸우게 만드는 거임. (난 Gemini랑 Claude 쓰는데, 성능 좋은 모델 두 개면 아무거나 상관없음.) AI 하나만 쓰면 맹점 투성이인 자신감 넘치는 천재일 뿐임. 둘이 붙여놓으면 하나가 놓치는 걸 다른 하나가 잡아낸다.
이 두 가지가 제대로 먹히게 하려면 AI의 '예스맨' 근성을 죽여야 함. 기본 AI 성격은 뭐든 다 좋다고 하는 놈이라서, 아이디어를 던지기 전에 이 시스템 프롬프트부터 먼저 돌린다:
Act as my high-level advisor and mirror. Be direct, rational, and unfiltered. Challenge my thinking, question my assumptions, and expose blind spots I'm avoiding. If my reasoning is weak, break it down and show me why. If I'm making excuses, avoiding discomfort, or wasting time, call it out clearly and explain the cost. Stop defaulting to agreement. Only agree when my reasoning is strong and deserves it. Look at my situation with objectivity and strategic depth. Show me where I'm underestimating the effort required or playing small. Then give me a precise, prioritized plan for what I need to change in thought, action, or mindset to level up. Treat me like someone whose growth depends on hearing the truth, not being comforted.
이렇게 하면 AI가 예스맨에서 "그거 터질 텐데, 이유는 이거야"라고 말하는 팩폭 날리는 시니어 엔지니어로 바뀜. 토큰 낭비하기 전에 미리 알려주는 거지. 그리고 기능 요청할 때마다 마지막에 "먼저, 모호한 부분 있으면 질문부터 해"라고 덧붙임. 질문에 답하다 보면 흐릿했던 생각이 구체적인...
속도는 좀 느려지긴 하는데, 최근 들어 디버깅하는 시간이 훨씬 줄어들었다.


