뉴스레터 목록
프롬프트바이브코딩

컨텍스트 오염을 막는 3가지 원칙

컨텍스트 오염을 막는 3가지 원칙

컨텍스트 오염을 막아야 합니다

바이브코딩 작업의 신뢰도를 높이는 가장 좋은 방법은 무엇일까요?

바로 LLM 컨텍스트 내의 정보를 깨끗하게 유지하는 것입니다.

컨텍스트 사이즈가 아무리 크더라도 무관하거나 잘못된 정보가 포함되면 LLM의 코드 작성 정확도가 급격히 떨어지게 되는데요, 이를 컨텍스트 오염이라고 합니다.

코딩에이전트는 보통 사용자의 요구사항을 이해한 뒤, 관련 파일과 지침을 탐색하고나서, 구현을 시작하게 됩니다.

이때 관련 파일과 지침을 탐색하던 중 무관한 파일이나 잘못 구현된 파일을 참조하게되면, 이 정보가 컨텍스트를 오염시켜 결과물 품질을 하락시키게 됩니다.


출처: https://research.trychroma.com/context-rot

위에 보이는 데이터는 컨텍스트 오염에 따른 정확도 하락을 보여주는 그래프입니다.

각각 무관한 정보가 포함됐을 때, 잘못된 정보가 포함됐을 때를 의미하는데요, 이 데이터에 따르면 무관한 정보 포함 시 결과 정확도가 약 10% 하락하고, 잘못된 정보 포함 시 30% 이상 하락합니다. 토큰을 많이 소모하는 복잡한 작업일수록 더 심각해지며 최대 70%까지 하락할 수 있습니다.


결론적으로 요구사항을 아무리 잘 쓰더라도, AI가 참조하는 파일에 쓰레기가 섞여 있으면 결과도 오염됩니다. 작업과 직접 관련된 파일만 정확하게 참조되도록 관리하는 것이 핵심입니다.

이를 위해 바로 적용할 수 있는 실천 방법 세 가지를 소개합니다.


1. 폴더 구조 룰 문서화

AI 에이전트는 코드베이스를 탐색할 때 모든 파일을 다 읽지 않습니다. 관련 있어 보이는 파일을 검색해서 찾아갑니다.

문제는 이 탐색이 정확하지 않다는 것입니다. 엉뚱한 파일을 참조하거나, 필요한 파일을 못 찾는 경우가 많습니다.

이때 폴더 구조 AGENTS.md가 지도 역할을 합니다. "이 폴더엔 이런 파일이 있다"는 정보를 미리 정리해두면, AI가 불필요한 파일을 참조할 확률이 크게 줄어듭니다.

프로젝트 루트경로에 AGENTS.md 파일을 생성하고, 이 저장소에 포함된 주요 폴더 구조와 역할을 정리해줘라고 명령하세요. 자동으로 모든 요청에서 참조됩니다.

핵심은 단순히 폴더 목록을 나열하는 게 아니라, 각 폴더의 역할과 파일 간의 관계를 명시하는 것입니다. components 폴더에는 재사용 UI 컴포넌트가 있고, pages에서 이를 import해서 사용한다 같은 수준이면 충분합니다.


2. 코드 상의 정확한 용어 사용

AI 에이전트는 내부적으로 문자열 검색으로 파일을 탐색합니다. 프롬프트에 적힌 단어를 기반으로 관련 파일을 찾아가는 거죠.

그래서 프롬프트에 실제 코드에서 사용하는 용어를 그대로 써야 합니다.

예를 들어 "버튼 클릭 시 동작을 변경해줘"라고 쓰면, AI는 "버튼", "클릭", "동작" 같은 일반적인 단어로 검색합니다. 관련 없는 파일까지 잔뜩 참조하게 됩니다.

대신 "SubmitButton 컴포넌트의 onClick 핸들러를 수정해줘"라고 쓰면, AI는 SubmitButtononClick이라는 정확한 식별자로 파일을 찾아갑니다. 탐색 정확도가 완전히 달라지고, 실행 속도도 훨씬 빠릅니다.

되도록 변수명, 클래스명, 함수명, 파일명을 프롬프트에 직접 명시하세요. 이것만으로도 AI가 엉뚱한 파일을 참조하는 빈도가 눈에 띄게 줄어듭니다.


3. 미사용 코드 및 구버전 코드 삭제

실무 프로젝트의 대부분이 이 원칙이 잘 지키지 않고 있습니다.

사용하지 않는 파일, 주석 처리된 옛날 코드, 라이브러리 구버전 기준으로 작성된 코드가 프로젝트에 남아 있으면 어떻게 될까요?

AI는 이런 코드도 유효한 참고 자료로 인식합니다. 구버전 API 패턴을 따라하거나, 더 이상 존재하지 않는 함수를 호출하는 코드를 생성하는 거죠. 결과적으로 빌드가 깨지거나 런타임 에러가 나고, 그걸 수정하느라 시간을 쓰게 됩니다.

특히 라이브러리 메이저 업데이트 직후가 위험합니다. Next.js 14에서 15로 올렸는데 14 방식의 코드가 남아 있다면, AI는 높은 확률로 14 방식을 따라합니다.

**"나중에 쓸 수 있으니까 남겨두자"**라고 생각하면 절대 안 됩니다. Git에 이력이 남아 있으니, 지금 사용하지 않는 코드는 과감하게 삭제하세요.


마치며

세 가지 원칙을 정리하면 이렇습니다.

  1. 폴더 구조 룰 문서화 — AI에게 지도를 제공한다.
  2. 정확한 코드 용어 사용 — AI의 검색 정확도를 높인다.
  3. 미사용 코드 삭제 — AI가 참조할 쓰레기를 없앤다.

결국 핵심은 AI가 길을 잃지않고, 잘못된 정보를 밟지 않도록 하는 것입니다.

이 과정이 선행되지 않으면 아무리 AI에 프롬프트를 입력하더라도 좋은 결과를 기대하기 어렵습니다. 결국 사람이 개발하기 좋은 코드가 AI에게도 좋은 것입니다.

AI를 잘 쓰고싶다면, 에이전트 최적화 세팅을 고민하기보단 먼저 코드베이스를 깔끔하게 정돈해보세요!