🎹바이브 코딩 마스터
Chapter 04

🧠Context의 개념

AI의 기억력 이해하기

컨텍스트 윈도우, 토큰, 세션의 개념을 음악 비유로 쉽게 이해합니다.

15

Chapter 4: Context의 개념 — AI의 기억력 이해하기

"아무리 뛰어난 연주자도 보면대 위에 올려놓을 수 있는 악보 페이지 수에는 한계가 있습니다."

AI와 대화하다 보면, 분명히 아까 말했던 내용을 AI가 잊어버리는 순간이 옵니다. "아까 그 파일 수정해줘"라고 했는데 "어떤 파일을 말씀하시는 건가요?"라고 되묻는 겁니다. 왜 그럴까요?

이번 챕터에서는 AI의 기억력의 작동 원리를 이해합니다. 이것을 이해하면, AI를 훨씬 더 효과적으로 다룰 수 있습니다.


Context란?

**Context(컨텍스트)**는 AI가 현재 대화에서 기억하고 있는 모든 정보를 의미합니다. 여러분이 입력한 메시지, AI의 응답, 읽어들인 파일 내용, AGENTS.md의 내용 — 이 모든 것이 컨텍스트에 포함됩니다.

🎼 음악으로 비유하면

Context = 보면대(music stand) 위의 악보 페이지

연주 중에 보면대 위에 올려놓을 수 있는 악보 페이지 수가 정해져 있다고 상상하세요. 보면대가 넓으면 더 많은 페이지를 올려놓고 앞뒤를 참조할 수 있습니다. 하지만 보면대가 좁으면, 새 페이지를 올리려면 앞의 페이지를 내려놓아야 합니다.

AI의 컨텍스트도 마찬가지입니다. **보면대 크기(Context Window)**가 정해져 있고, 대화가 길어지면 앞부분의 내용부터 사라집니다.


토큰이란?

AI가 텍스트를 처리할 때, 글자 하나하나를 보는 것이 아닙니다. **토큰(token)**이라는 단위로 텍스트를 쪼개서 처리합니다.

토큰의 크기

  • 영어: 단어 하나가 대략 1~2 토큰
    • "hello" → 1 토큰
    • "programming" → 1~3 토큰
  • 한국어: 한 글자가 대략 1~2 토큰 (영어보다 토큰 소비가 큼)
    • "안녕하세요" → 약 3~5 토큰
    • "프로그래밍" → 약 3~5 토큰
  • 코드: 변수명, 기호 등이 각각 토큰으로 카운트
    • function hello() { return "hi"; } → 약 10~12 토큰
🎼 음악으로 비유하면

토큰 = 음표(note)

악보에서 음악의 기본 단위는 음표입니다. 하나의 음표는 하나의 음을 나타내죠. 마찬가지로, 하나의 토큰은 AI가 처리하는 텍스트의 기본 단위입니다.

재미있는 점은, 음표도 길이가 다양하듯이 (온음표, 2분음표, 8분음표...) 토큰도 길이가 다양합니다. "I"는 1토큰이지만, "counterpoint"도 1~2토큰입니다. 마치 온음표 하나에 4박이 들어가는 것처럼, 하나의 토큰에 여러 글자가 들어갈 수 있습니다.

ℹ️ 한국어는 토큰을 더 많이 소비합니다

같은 의미의 문장이라도 한국어가 영어보다 약 1.5~2배 더 많은 토큰을 사용합니다. 이것은 AI의 학습 데이터에서 영어의 비중이 크기 때문입니다. 한국어 사용자는 이 점을 감안하여 더 간결하게 지시하는 것이 유리합니다.

하지만 자연스러운 한국어로 설명하는 것이 가장 중요합니다. 토큰 절약을 위해 어색한 영어를 쓰는 것보다, 명확한 한국어로 설명하는 것이 더 나은 결과를 가져옵니다.


Context Window — 보면대의 크기

**Context Window(컨텍스트 윈도우)**는 AI가 한 번에 기억할 수 있는 최대 토큰 수입니다. 이것이 바로 "보면대의 크기"입니다.

Context Window가 넘치면?

대화가 길어져서 Context Window를 초과하면, AI는 가장 오래된 대화부터 잊기 시작합니다. 이것을 "컨텍스트 오버플로우"라고 합니다.

🎼 음악으로 비유하면

보면대 위에 악보가 너무 많이 쌓이면, 맨 아래의 페이지가 바닥으로 떨어지는 것과 같습니다. 1악장의 주제 멜로디가 적힌 페이지가 떨어지면, 4악장에서 "아까 그 멜로디를 다시 써줘"라고 해도 AI는 그 멜로디를 기억하지 못합니다.

이것이 바로 여러분이 "아까 그 파일"이라고 했을 때 AI가 "어떤 파일이요?"라고 되묻는 이유입니다. 해당 대화가 이미 보면대에서 떨어져 나갔기 때문입니다.

⚠️ Context 오버플로우의 증상

다음과 같은 현상이 나타나면 컨텍스트가 넘치고 있을 가능성이 높습니다:

  1. AI가 이전에 결정한 사항을 잊어버림
  2. 같은 실수를 반복하기 시작함
  3. 이전에 수정한 부분을 원래대로 되돌림
  4. "어떤 파일을 말씀하시는 건가요?"라고 되물음
  5. 프로젝트의 전체 구조를 이해하지 못하는 듯한 응답

이런 증상이 나타나면, /clear 또는 /compact를 사용할 때입니다.


세션이란?

**세션(Session)**은 하나의 연속된 대화 흐름을 의미합니다. Codex를 실행하고 종료할 때까지가 하나의 세션입니다.

🎼 음악으로 비유하면

세션 = 하나의 리허설

오케스트라 리허설을 생각해보세요. 하나의 리허설 동안 지휘자와 연주자들은 대화하고, 특정 부분을 연습하고, 수정 사항을 기억합니다.

"어제 리허설에서 바이올린이 너무 셌으니 오늘은 줄여주세요" — 이것이 같은 세션 내의 대화입니다.

하지만 리허설이 끝나고 다음 리허설이 시작되면? 어제의 세부 사항을 다시 설명해야 할 수도 있습니다. 특히 지휘자가 바뀌었다면(새 세션이라면) 더더욱.

세션의 생명주기

세션 시작 (codex 실행)
    │
    ├── AGENTS.md 자동 로딩
    ├── 사용자 질문 1 → AI 응답 1
    ├── 사용자 질문 2 → AI 응답 2
    ├── 파일 읽기/수정
    ├── 사용자 질문 3 → AI 응답 3
    │     ... (컨텍스트 누적)
    ├── 사용자 질문 N → AI 응답 N
    │
    └── 세션 종료 (codex 종료 또는 /clear)

세션이 시작되면 AGENTS.md가 자동으로 컨텍스트에 로딩됩니다. 이후 대화가 이어지면서 컨텍스트가 점점 커지고, 결국 Context Window의 한계에 도달하면 오래된 내용부터 사라집니다.


/clear — 새 리허설 시작하기

/clear 명령어는 현재 컨텍스트를 완전히 초기화합니다. 모든 대화 기록이 사라지고, AGENTS.md만 다시 로딩된 깨끗한 상태로 돌아갑니다.

/clear 실행
$ /clear
✓ Context cleared. Starting fresh session. AGENTS.md loaded.
🎼 음악으로 비유하면

/clear = 새로운 리허설 시작

이전 리허설에서 연습한 내용을 모두 백지로 돌리고, 완전히 새롭게 시작합니다. 보면대 위의 모든 악보를 치우고, 총보(AGENTS.md)만 다시 올려놓는 것입니다.

언제 /clear를 사용해야 할까?

주제가 완전히 바뀔 때

제스처 컨트롤러를 작업하다가 포트폴리오 웹사이트로 넘어갈 때. 이전 프로젝트의 컨텍스트가 남아 있으면 혼란을 줄 수 있습니다.

AI가 혼란스러워할 때

AI가 이전 지시와 현재 지시를 헷갈리거나, 엉뚱한 파일을 수정하려 할 때. 깨끗하게 시작하는 것이 낫습니다.

큰 실수를 되돌리고 싶을 때

여러 파일을 잘못된 방향으로 수정한 경우, /clear로 초기화하고 처음부터 다시 지시하는 것이 빠를 수 있습니다. (물론 파일은 이미 수정된 상태이므로, git으로 되돌려야 합니다.)

컨텍스트 오버플로우 증상이 나타날 때

앞서 설명한 증상(AI가 이전 결정을 잊음, 같은 실수 반복 등)이 나타나면, /clear 후 중요한 맥락만 다시 설명하는 것이 효율적입니다.


/compact — 기억을 압축하기

/compact 명령어는 /clear와 다릅니다. 대화를 완전히 지우는 대신, 지금까지의 대화를 요약해서 압축합니다. 핵심 정보는 유지하면서 토큰 사용량을 줄이는 방법입니다.

/compact 실행
$ /compact
Compacting conversation... Before: 45,230 tokens After: 12,100 tokens (73% reduced) Summary retained: - Project: MediaPipe gesture controller - Completed: hand tracking setup, MIDI connection - Current task: adding visual feedback - Pending issues: latency optimization needed
🎼 음악으로 비유하면

/compact = 리허설 노트 정리

3시간짜리 리허설 전체를 녹음하면 파일이 너무 큽니다. 대신, 핵심 사항만 메모로 정리합니다:

  • "1악장 3~5마디: 첼로 보잉 다운에서 업으로 변경"
  • "2악장 도입부: 템포 ♩=72로 확정"
  • "3악장: 아직 미완성, 다음 리허설에서 계속"

이렇게 요약하면, 다음에 이어서 작업할 때 3시간 전체를 다시 들을 필요 없이 메모만 보면 됩니다.

언제 /compact를 사용해야 할까?

같은 주제를 계속 이어갈 때

제스처 컨트롤러를 한참 작업하다가 컨텍스트가 커졌지만, 아직 같은 작업을 계속해야 할 때. 맥락을 유지하면서 공간을 확보합니다.

장시간 작업 중간에

2~3시간 연속 작업하면서 컨텍스트가 점점 커질 때, 중간중간 /compact로 정리하면 AI의 응답 품질을 유지할 수 있습니다.

Context 경고가 뜰 때

일부 도구에서는 컨텍스트가 한계에 가까워지면 경고를 표시합니다. 이때 /compact를 사용하세요.


/clear vs /compact 판단 기준

두 명령어를 언제 써야 할지 헷갈릴 수 있습니다. 간단한 판단 기준을 정리했습니다.

🎼 음악으로 비유하면
  • /clear = 연주회가 끝나고 완전히 새로운 프로그램을 시작하는 것. 이전 곡과 전혀 관계없는 새 곡을 연주합니다.
  • /compact = 같은 곡의 리허설을 이어가되, 쉬는 시간에 지금까지의 메모를 정리하는 것. 같은 곡을 계속 연습합니다.

| 상황 | 사용할 명령어 | 이유 | |------|-------------|------| | 완전히 다른 프로젝트로 전환 | /clear | 이전 맥락이 방해됨 | | 같은 프로젝트, 다른 기능 작업 | /compact | 프로젝트 맥락은 유지 필요 | | AI가 심하게 혼란스러워함 | /clear | 깨끗한 시작이 효율적 | | 컨텍스트 경고가 뜸 | /compact | 맥락 유지하며 공간 확보 | | 장시간 연속 작업 중 | /compact | 주기적 정리로 품질 유지 | | 큰 방향 전환 필요 | /clear | 새로운 방향에서 시작 |


각 도구의 컨텍스트 관리 비교

세 가지 도구 모두 컨텍스트 관리 기능을 제공하지만, 세부 사항이 다릅니다.

GPT Codex CLI

Codex 컨텍스트 관리text

Claude Code

Claude Code 컨텍스트 관리text

Claude Code는 세션 복원 기능이 특히 유용합니다. 어제 작업하던 세션을 오늘 이어서 할 수 있습니다. 마치 어제 리허설 녹음을 오늘 다시 재생하면서 이어가는 것과 같습니다.

Gemini CLI

Gemini CLI 컨텍스트 관리text

실전 팁: 컨텍스트를 효율적으로 사용하는 방법

1. 중요한 정보는 AGENTS.md에 넣어라

AGENTS.md에 적힌 내용은 매 세션 시작마다 자동으로 로딩됩니다. 따라서 프로젝트의 핵심 규칙과 구조는 AGENTS.md에 넣어두면, /clear 후에도 자동으로 복원됩니다.

🎼 음악으로 비유하면

AGENTS.md는 악보에 인쇄된 지시입니다. 보면대를 정리해도(clear), 악보를 다시 올리면(새 세션 시작) 인쇄된 지시는 항상 보입니다. 반면, 리허설 중에 연필로 적은 메모는(대화 내용) 새 악보에는 없습니다.

따라서 "항상 기억해야 하는 것"은 AGENTS.md에, "이번 리허설에서만 필요한 것"은 대화로 전달하세요.

2. 한 세션에서 한 가지 작업에 집중하라

한 세션에서 여러 작업을 동시에 하면 컨텍스트가 빠르게 소진됩니다. "제스처 인식 구현"과 "포트폴리오 스타일링"을 같은 세션에서 하면, 두 작업의 맥락이 섞여서 AI가 혼란스러워할 수 있습니다.

🎼 음악으로 비유하면

하나의 리허설에서 베토벤 교향곡과 스트라빈스키 발레를 동시에 연습하면 연주자들이 혼란스럽겠죠? 하나의 리허설에서는 하나의 곡에 집중하는 것이 효율적입니다.

3. /compact를 전략적으로 사용하라

작업 중 자연스러운 구분점(하나의 기능 완성, 에러 해결 등)에서 /compact를 실행하면 좋습니다.

4. 길게 설명하기보다 파일을 보여줘라

"아까 만든 그 파일에서 3번째 함수를 수정해줘"라고 길게 설명하는 것보다, "hand-tracker.js 파일의 getFingerPosition 함수를 수정해줘"라고 구체적으로 말하는 것이 토큰도 절약되고 정확도도 높아집니다.

5. 실행 결과를 요약해서 전달하라

에러 로그가 500줄이면, 전체를 붙여넣기보다 핵심 에러 메시지만 전달하세요. 컨텍스트를 절약하면서도 AI는 충분히 문제를 파악할 수 있습니다.


컨텍스트 시각화: 한눈에 보기

[ AGENTS.md ][ 대화 1 ][ 응답 1 ][ 대화 2 ][ 응답 2 ] ... [ 대화 N ][ 응답 N ]
|<─────────────────── Context Window (보면대 크기) ──────────────────>|
                                                                     ↑
                                        이 지점을 넘으면 왼쪽부터 사라짐

/compact 실행 후:
[ AGENTS.md ][ 요약 ][ 대화 N-1 ][ 응답 N-1 ][ 대화 N ][ 응답 N ]
|<─── 여유 공간 확보 ───>|<────── 핵심 맥락 유지 ────────>|

/clear 실행 후:
[ AGENTS.md ]
|<─────────────── 전체 공간이 비어 있음 ─────────────────>|
🔥 이 챕터의 핵심 한 줄

컨텍스트는 유한한 자원입니다. 마치 보면대의 크기, 리허설 시간, 악기의 음역처럼 — 한계를 이해하고 그 안에서 최선의 결과를 만들어내는 것이 바이브 코딩의 실력입니다.


다음 챕터 미리보기

여기까지 따라왔다면, 여러분은 바이브 코딩의 기초 체력을 갖추었습니다:

  1. 바이브 코딩이 무엇인지 이해했고 (Chapter 1)
  2. 도구를 설치했고 (Chapter 2)
  3. AI에게 프로젝트를 설명하는 방법을 알았고 (Chapter 3)
  4. AI의 기억력을 관리하는 방법을 배웠습니다 (Chapter 4)

다음 챕터부터는 본격적으로 MediaPipe 프로젝트를 시작합니다. 카메라로 손을 인식하고, 그 데이터를 MIDI 신호로 변환하는 과정을 바이브 코딩으로 만들어갈 겁니다.

💡 축하합니다!

음악을 전공하면서 프로그래밍 도구의 기초를 배웠습니다. 이 네 개의 챕터는 앞으로 모든 작업의 토대가 됩니다. 마치 악전(음악 이론)이 모든 작곡과 연주의 기초인 것처럼요.

여러분은 이미 코드를 쓰지 않고도 웹 페이지를 만들었습니다 (Chapter 2의 Hello World). 다음 단계에서는 정말 쓸모 있는 것을 만들어 봅시다!