AI 코딩 에이전트에게 사용 중단(deprecated)된 함수를 그만 쓰라고 말한다. 에이전트는 사과하고 코드를 다시 작성하지만 — 또다시 같은 사용 중단 함수를 쓴다. 세 번째로 고쳐준다. 결과는 똑같다. 이것이 바로 "둠 루프(doom loop)"이며, 모든 빌더가 언젠가는 마주친다. 다행인 것은, 왜 이런 일이 벌어지는지 이해하고 나면 해결책은 빠르고 반복 가능하다는 점이다.
에이전트가 막히는 이유
AI 코딩 에이전트는 사람처럼 당신의 마지막 지적을 기억하지 않는다. 에이전트는 자신의 컨텍스트 — 즉 대화의 진행 중인 기록과 읽어 들인 파일들 — 를 바탕으로 작동한다. 긴 세션에서는 두 가지가 잘못된다.
- 실수가 누적된다. 잘못된 가정이 컨텍스트 초반에 들어오면, 이후의 모든 응답이 그 위에 쌓여 올라간다. 당신의 지적은 여전히 틀린 내용을 말하고 있는 앞선 모든 텍스트와 경쟁하는 하나의 메시지에 불과하다.
- 컨텍스트 부패(context rot). 긴 세션 동안 윈도우가 가득 차면서 출력 품질이 점진적으로 저하된다. 에이전트는 스무 개의 메시지 전에 당신이 준 지시를 놓치기 시작한다.
그래서 에이전트가 실수를 반복할 때, 그것은 대개 고집을 부리는 것이 아니라 — 오염된 컨텍스트에 빠져 허우적대고 있는 것이다. 에이전트의 태도가 아니라 컨텍스트를 고쳐라.
1단계: 다시 설명하지 말고 초기화하라
당신의 본능은 지적을 더 강하게 설명하려는 것이다. 참아라. 메시지를 하나 더 추가할 때마다 오염된 컨텍스트가 늘어난다. 대신, 나쁜 컨텍스트를 잘라내라.
- Claude Code에서는
/rewind가 대화 와 파일 변경 사항을 이전 체크포인트로 되돌린다 — 최근 몇 단계는 잘못됐지만 이전 작업은 지킬 만한 가치가 있을 때 사용하라(Esc를 두 번 눌러도 같은 메뉴가 나온다)./clear는 대화를 통째로 지우고 코드는 그대로 둔 채 새로 시작한다 — 세션 전체가 탈선했을 때 사용하라./compact는 더 가벼운 상태로 계속 진행하고 싶을 때 히스토리를 더 짧은 형태로 요약해준다. (Claude Code 모범 사례를 참고하라.) - Cursor나 채팅 기반 도구에서는, 오염된 대화를 이어가는 대신 막힌 작업을 위한 새 채팅을 시작하라.
하나의 명확한 지시가 담긴 깨끗한 컨텍스트가, 점점 짜증이 배어드는 다섯 개의 지시가 담긴 긴 컨텍스트를 이긴다.
2단계: 지적에 영구적인 거처를 마련하라
채팅에 입력한 지적은 세션이 끝나면 사라진다. 다음 세션에서 에이전트는 같은 실수를 저지른다 — 창을 닫으면서 당신이 그 해결책을 에이전트의 기억에서 지워버렸기 때문이다. 에이전트가 매번 읽는 곳에 지속적인 규칙을 넣어라.
- Claude Code: 리포지토리 루트에 있는
CLAUDE.md파일. - Cursor: 규칙 파일(예:
.cursor/rules/). - 모든 에이전트: 이제 널리 지원되는
AGENTS.md파일.
규칙은 단순하고 검증 가능한 문장으로 작성하라. "깨끗한 코드를 작성하려고 노력하라"가 아니라 "fetch를 사용하고 axios는 절대 쓰지 마라. 이 프로젝트에는 axios 의존성이 없다"처럼.
3단계: 제약을 놓칠 수 없게 만들어라
구체적인 예를 들어보자. 에이전트가 당신이 제거한 날짜 라이브러리를 계속 임포트한다고 하자.
// Agent keeps writing this:
import moment from 'moment'
const now = moment().format('YYYY-MM-DD')
대신 내장 Intl API를 쓰라고 세 번이나 말했다. 네 번째 지적 대신, CLAUDE.md에 한 줄을 추가하라.
## Dates
Never import `moment` or `dayjs` — they are not installed.
Format dates with the built-in `Intl.DateTimeFormat`. Example:
`new Intl.DateTimeFormat('en-CA').format(new Date())` → "2026-07-04"
차이는 이것이다. 당신은 규칙과 함께 작동하는 예제를 주었다. 에이전트는 추상적인 지시보다 복사해 쓸 수 있는 예제를 훨씬 안정적으로 따르며, 이제 그 규칙은 매 세션 시작 시 자동으로 로드된다.
4단계: 에이전트가 스스로 점검할 방법을 주어라
에이전트는 자신이 볼 수 없는 실수를 반복한다. 에이전트가 읽을 수 있는 신호를 주어 루프를 닫아라.
- 바로 그 실수에서 실패하는 린터 규칙이나 테스트.
moment가 린터에 의해 금지되어 있다면, 에이전트는 린터를 실행하고 오류를 확인한 뒤 — 당신이 개입하지 않아도 — 스스로 고친다. - 프롬프트에 넣는 간단한 "완료의 정의(definition of done)" 체크리스트: "끝내기 전에
npm run lint와npm test를 실행하고 둘 다 통과하는지 확인하라."
이것이 가장 큰 업그레이드다. 에이전트가 스스로 감지할 수 있는 실수는, 당신이 잡아내야 하는 실수이기를 그만둔다.
5단계: 작업을 잘게 쪼개라
에이전트가 크고 모호한 요청("인증 시스템을 리팩터링하라")에서 루프에 빠진다면, 그것은 대개 세부 사항이 아니라 범위에서 길을 잃은 것이다. 작업을 한 번에 하나의 작고 검증 가능한 단계로 나누고 — "토큰 갱신 로직을 별도 함수로 추출하되 동작은 바꾸지 마라" — 다음으로 넘어가기 전에 각 단계를 확인하라. 작은 작업은 헤맬 여지를 덜 남긴다.
패턴
에이전트가 실수 반복을 멈추지 않을 때, 목록을 하나씩 짚어가라. 컨텍스트를 초기화하고, 규칙이 지속되는 곳에 규칙을 적어두고, 예제를 보여주고, 에이전트가 스스로 실행할 수 있는 점검을 주고, 작업을 좁혀라. 한 가지 주제가 눈에 들어올 것이다 — 당신은 에이전트와 언쟁하는 것이 아니라, 에이전트가 볼 수 있는 것을 고치고 있다는 것이다. 그렇게 하면 둠 루프는 오후를 통째로 날리는 대신 2분짜리 우회로로 바뀐다.
SOURCES
Auto-generated by Vibe Coding Academy on July 4, 2026, grounded in the real sources linked above. We review for accuracy, but please verify time-sensitive details against the primary sources.
Build Blueprint · Creator
아이디어가 있으신가요? AI 에이전트가 바로 빌드할 수 있는 사양서를 받아보세요.
어떤 제품이든 설명하면 완전한 빌드 블루프린트를 받아보세요 — 기술 스택, 데이터 모델, 화면, API, 그리고 Claude Code나 Cursor에 바로 붙여넣을 수 있는 프롬프트까지. PDF로 내보내기 가능.
블루프린트 열기 ▸