로컬 LLM 코딩 실패기: 9B 모델에 블로그 자동화 프로그램을 통째로 맡겼더니

로컬 LLM 코딩 실패기를 표현한 오류 화면과 작은 로봇 일러스트


로컬 LLM 코딩으로 블로그 자동화 프로그램 전체를 만들게 했더니 실행할 수 없는 결과물이 나왔어요. 제 맥에서 돌린 Qwen3.5 9B 4bit 모델에 설계 문서를 통째로 넣었는데, 폴더 구조부터 원래 설계와 달랐고 import 오류와 빠진 메서드가 여럿 있었어요.


핵심 요약

  • 설계 문서 한 편을 로컬 모델에 통째로 넣어 프로그램을 만들게 했지만 실행이 불가능했어요.
  • 그래서 로컬 모델은 앱 안의 원고 생성 엔진으로 한정하고, 코드는 Claude와 설계부터 다시 짰어요.
  • 새 설계는 한 번에 다 만들지 않고 단계별로(Phase) 쌓는 방식으로 정했어요.

블로그 수익화 자동화를 만들기로 하고 제일 먼저 한 일은 설계 문서를 쓰는 거였어요. 이름은 “마스터 개발 프롬프트”예요. 정책과 안전 원칙, DB 스키마, 기능 명세 A부터 I까지, Phase 1~5 개발 순서까지 한 문서에 다 넣었어요. 목표는 대량으로 복제한 AI 글이 아니라, 읽는 사람에게 도움이 되는 글을 구글 블로거와 네이버 블로그에 올리는 시스템이었어요.

로컬 LLM 코딩에 넣은 마스터 개발 프롬프트의 목차 화면

왜 설계 문서를 로컬 모델에 통째로 넣어봤나요?

클로드를 어떻게 사용하는지도 잘 몰랐고, AI한테 이것 해줘! 저것 해줘! 지시하면 다 알아서 만들어주는 줄 알고 이 문서를 그대로 로컬 모델에 넣었어요. 맥(M4 Pro, 메모리 24GB)에서 MLX로 돌린 Qwen3.5 9B 4bit 모델이었고, 요청은 이 문서대로 프로그램을 만들어 달라는 것이었어요. 그 결과로 받은 게 project.zip이에요.

결과는 어땠나요?

압축을 풀고 확인해 보니 실행 자체가 안 되는 상태였어요. 문제는 크게 세 가지였어요.

문제어떤 상태였나요
구조 불일치설계 문서의 폴더·파일 구조와 결과물이 서로 달랐어요
import 오류파일끼리 서로를 불러오지 못했어요
메서드 누락다른 파일에서 부르는 함수가 정의돼 있지 않았어요

원래 설계와 구조가 완전히 달라서, 고쳐 쓰기보다 새로 설계하는 쪽이 낫다고 판단했어요.

로컬 LLM 코딩 결과물과 원래 설계의 폴더 구조가 다른 비교 화면을 그린 일러스트


로컬 LLM 코딩 결과물을 실행했을 때 나온 import 오류 화면을 그린 일러스트

왜 안 됐다고 판단했나요?

원인을 하나로 짚기는 어려워요. 제가 내린 결론은 이 모델이 코딩 에이전트 역할을 하기엔 맞지 않는다는 거예요. 여러 파일이 서로 맞물려야 하는 프로그램을 한 번에 만들게 한 방식 자체가 무리였을 수도 있고요.

다른 모델이나 다른 방식이었다면 결과가 달랐을 수 있어요. 그래서 이 판단은 “제 환경에서 이 방식으로는 안 됐다”는 뜻이고, 로컬 LLM 코딩 전체를 평가하는 말은 아니에요.

그래서 역할을 어떻게 다시 나눴나요?

로컬 모델은 코딩이 아니라 완성된 앱 안에서 원고를 만드는 엔진(llm_client.py 역할)으로 쓰기로 했어요. 시스템 코드는 Claude와 설계부터 구현까지 함께 짜기로 했고요.

구분이전이후
프로그램 코드로컬 모델이 통째로 생성Claude가 설계·구현
로컬 모델 역할코딩 에이전트앱 안 원고 생성 엔진

이전

로컬 모델Qwen3.5 9B 4bit
통째로 생성
프로그램 전체 코드실행 불가

이후

Claude설계·구현
코드 작성
앱 (Claude가 만든 코드)
로컬 모델 = 원고 생성 엔진

로컬 LLM 코딩 대신 Claude가 코드를 맡고, 로컬 모델은 앱 안의 원고 생성만 맡도록 바꿨어요.

새로 설계할 때 정한 원칙은 뭔가요?

  • 한 번에 다 만들지 않아요. 마스터 프롬프트의 단계별 개발 원칙을 따라, Phase 1은 키워드를 직접 입력하는 방식으로 시작했어요. 트렌드 자동 수집은 Phase 4로 미뤘어요.
  • 설계를 먼저 승인해요. 폴더 구조, DB 테이블, 설치 패키지, 파일별 역할을 먼저 정리하고 확인한 뒤에 만들었어요.
  • 이미지 생성은 잠시 보류했어요. 대신 원고 안에 이미지 생성 프롬프트, 이미지 설명, ALT 텍스트를 넣는 방식으로 갔어요.

이 프로젝트는 이후 “업그레이드 프로젝트”로 새로 진행됐어요. 그 과정은 본편 2에서 이어져요.

로컬 LLM에 코딩을 맡기며 배운 점은 뭔가요?

첫째, 통째로 맡기지 않는 게 좋아요. 단계를 나누면 어디서 틀어졌는지 바로 보여요. 둘째, 결과는 돌려 보기 전에는 완성이라고 부르지 않아요. 이 원칙은 이후 개발 지침으로 이어졌어요(지침 15가지). 셋째, 모델마다 잘하는 일이 달라서 역할을 나눠야 해요. 로컬 모델은 이후 올라마로 옮겨 가벼운 작업만 맡겼어요(본편 3).

자주 묻는 질문

Q. 로컬 LLM으로 프로그램 전체를 만들 수 있나요?

제 경우엔 안 됐어요. 기능 명세 A부터 I, 5단계 개발 순서까지 담은 큰 문서를 9B 4bit 모델에 한 번에 넣은 방식이었어요. 모델과 방식에 따라 다를 수 있어서 일반화하기는 어려워요.

Q. 로컬 LLM 사양은 어느 정도로 돌렸나요?

맥 M4 Pro에 메모리 24GB였고, MLX로 실행했어요. MLX는 애플 실리콘용 머신러닝 프레임워크예요. 자세한 내용은 애플 MLX 공식 저장소(github.com/ml-explore/mlx)에서 확인하실 수 있어요.

Q. 실패한 로컬 모델은 그럼 어디에 쓰나요?

완성된 앱 안의 원고 생성 엔진으로 썼어요. 이후 올라마로 gemma4 12b를 돌려 가벼운 작업만 맡겼어요. 자세한 내용은 본편 3에 있어요.

Q. 마스터 개발 프롬프트가 뭔가요?

정책, DB 스키마, 기능 명세, 개발 순서까지 시스템 전체 설계를 담은 문서예요. 이 글에서는 AI에게 넘기는 설계 스펙을 그렇게 불렀어요.

Q. 실패한 project.zip은 다시 쓰지 않았나요?

거의 못 썼어요. 원래 설계와 구조가 완전히 달라서 새로 설계했어요.

낯선 용어는 AI 용어사전에 모아 뒀어요. 로컬 모델을 안 쓰기로 한 게 아니라 역할을 바꿨을 뿐이라, 다음 글에서 전체 구조를 이어서 보여드릴게요.

작성·검수: 지원포유최종 업데이트: 2026년 10월 19일

Next Post Previous Post
No Comment
Add Comment
comment url