
AI의 치매 예방을 위한 토큰 다이어트와 코스요리식 주입법 (컨텍스트 관리)
AI를 데리고 코딩 작업을 좀 길게 해 본 사람이라면 누구나 겪는 깊은 빡침(?)이 있을 것이다.
방금 전까지 로그인 페이지 에러 고치는 법을 같이 토론해 놓고는, 다음 줄 코드를 짜달라고 하니 "어떤 로그인 페이지를 말씀하시는 건가요?"라며 맑고 투명한 눈동자로 되묻는 현상 말이다. ㅠㅠ
이게 바로 AI의 치매, 기술적으로는 '컨텍스트 포화(Context Saturation)' 현상이다. AI의 머릿속 뇌 용량(Context Window)이 꽉 차서 예전의 중요한 대화 기록이나 초기 기획서 내용들을 스스로 지워버린 것이다.
특히 나처럼 로컬 GPU 자원을 쥐어짜며 로컬 LLM(Ollama 등)을 프로젝트에 투입해 쓰다 보면 VRAM 사정은 늘 눈물겹고, 어떻게든 토큰을 아끼는 다이어트가 생존의 핵심이 된다.
그래서 고안해 낸 실전 토큰 다이어트 셋팅과 AI에게 기획 정보를 '체하지 않게' 떠먹이는 코스요리식 주입법을 공유해 본다.
1. 로컬 AI(Ollama) VRAM 쥐어짜기: keep_alive와 num_ctx
만약 로컬에서 Ollama나 Llama.cpp 같은 엔진을 백그라운드에 띄워두고 코딩 비서를 사용하고 있다면, 제일 먼저 세팅해야 하는 게 VRAM 관리다.
로컬 모델은 한 번 메모리에 올라가면 다른 작업을 하든 말든 VRAM을 꽉 쥐고 안 놔주기 일쑤다. 이럴 때를 위해 API 호출 설정에 keep_alive: 0을 필수로 적용해야 한다.
keep_alive: 0설정:
AI의 응답(Inference)이 끝나자마자 잡고 있던 VRAM을 시스템에 즉시 반환(Unload)하도록 만드는 옵션이다. 이걸 안 해두면 크롬 탭 좀 띄우고 디자이너 툴 돌릴 때 컴퓨터가 커벅거리며 멈추는 비명을 지른다. ㅋnum_ctx다이어트:
대부분 "뇌 용량이 크면 무조건 좋겠지!" 하고num_ctx를 16k, 32k 이상으로 뻥튀기해 둔다. 하지만 로컬 장비의 한계 때문에 컨텍스트 크기가 늘어날수록 응답 속도(Token per Second)는 기하급수적으로 떨어진다. 실제로 코딩할 때는 4k~8k 정도로 필요 최소한의 컨텍스트만 잡고, 자주 방을 폭파하는 게 작업 효율 면에서 훨씬 이득이다.
2. 한꺼번에 주입하면 체한다: 코스요리식 주입 프로토콜
처음에는 마음이 급해서 방을 열자마자 100페이지짜리 기획서 문서 파일과 몇 천 줄짜리 레거시 코드, 룰 파일을 한꺼번에 드래그 앤 드롭으로 채팅창에 쑤셔 넣었다.
결과는 대참사였다. AI는 과부하가 걸려 기획의 핵심 조건은 다 까먹고, 자기가 읽은 코드 조각 중 맘에 드는 엉뚱한 라이브러리 이야기만 주절주절 읊어대거나 뜬구름 잡는 아이디어 아이디어만 뱉어댔다. ㅠㅠ
마치 한 번에 밥 세 공기를 입에 밀어 넣어서 체해 버린 것과 같았다. 그래서 우리는 맛있는 파인다이닝 코스요리처럼 정보를 단계별로 차례대로 학습시키는 '코스요리 프로토콜'을 정착시켰다.
| graph TD A[1. 에피타이저: AGENTS.md 기강 잡기] --> B[2. 메인 디시: Master PRD 핵심 로직] B --> C[3. 디저트: TODO.md & !SD2AG 현재 상황] |
- 에피타이저 (행동 기강 잡기):
방을 파자마자 프로젝트 헌법인AGENTS.md(혹은Golden Rule)를 먼저 먹인다. 이 방에서 AI가 지켜야 할 수정 도구 규칙, 답변 톤앤매너 등을 각인시키는 단계다. 이 첫 입을 먹여 둬야 헛소리를 안 한다. - 메인 디시 (핵심 컨텍스트 입력):
기강이 잡힌 상태에서 전체 기획서(Master PRD)와 상세 기술 명세서 파일 하나를 준다. 이때 중요하지 않은 레거시 코드는 절대 먹이지 않고, 구현해야 할 대상 모듈의 설계서만 딱 골라 먹이는 게 포인트다. - 디저트 (현재 태스크 지정):
마지막으로 오늘 할 일인TODO.md와 이전 세션의 상태 덤프인!SD2AG텍스트를 던져준다. "네가 방금 공부한 법과 기획을 바탕으로, 지금 당장 해결해야 할 타겟은 바로 이 줄이야!" 하고 조준경을 맞춰주는 것이다.
이렇게 단계별로 밥을 떠먹여 줘야 AI가 뇌절(Out of memory / Hallucination)하지 않고, 마치 내 머릿속에 들어와 있는 것처럼 맑고 또렷한 코드를 뱉어낸다.
귀찮아 보여도 이 순서를 지키는 것이 오히려 에러를 디버깅하는 시간을 90% 이상 줄여주는 지름길이다. AI도 사람처럼 섬세하게 다뤄줘야 일 잘하는 비서가 된다는 것, 잊지 마시길! ㅋ