전체 글/이해

Claude Code는 왜 처음에 말한 조건을 놓칠까?

대화가 짧아 보여도 Claude가 읽은 자료는 많을 수 있다. 지금 참고하는 정보와 그 한도를 구분하면, 앞서 말한 조건을 놓치는 이유를 이해할 수 있다.

2026-10-07 / 9분 / 이해


Claude Code로 강의 안내 페이지를 만든다고 해보자. 처음 요청에 “신청 버튼을 누르면 결제 페이지가 아니라 신청서로 이동하게 해줘”라는 조건을 넣었다. 그런데 여러 번 수정한 뒤 버튼이 결제 페이지로 연결된다면, Claude는 왜 처음에 말한 조건을 놓친 걸까?

처음부터 복잡한 요구를 한 것은 아니다. 강의를 소개하고, 관심 있는 사람이 신청서를 작성하게 하려는 일이다. 작업 도중에는 제목을 고치거나 휴대전화에서 글자가 잘 보이도록 다듬었을 뿐이다. 신청서를 결제 페이지로 바꿔 달라고 한 적은 없다고 가정하자.

이 상황은 원리를 설명하기 위한 가상의 예다. 실제로 이런 실수가 생겼을 때 원인을 하나로 단정할 수는 없다. 다만 “한 번 말했으니 작업이 끝날 때까지 똑같이 참고하겠지”라는 기대를 살펴볼 필요가 있다. 우리가 대화창에서 보는 내용과 Claude가 다음 작업을 할 때 참고하는 정보부터 구분해 보자.

Claude의 단기기억에는 대화만 들어가지 않는다

Claude Code에 페이지 제작을 부탁하면, Claude는 설명만 작성하는 데서 멈추지 않는다. 파일을 읽고 고치거나, 컴퓨터에 명령을 내려 결과를 확인하는 도구를 사용할 수 있다. Claude라는 AI 모델이 다음 행동을 판단하고, Claude Code가 그 행동에 필요한 도구와 정보를 제공하는 구조다.[1]

강의 안내 페이지라면 먼저 기존 페이지를 만드는 파일을 읽을 수 있다. 거기에는 화면에 표시할 제목과 본문, 버튼을 눌렀을 때 이동할 주소가 들어 있다고 해보자. Claude는 읽어 온 내용을 보고 어느 부분을 고칠지 정한다. 파일 읽기는 단순히 파일이 어디 있는지 확인하는 일이 아니다. 파일에서 가져온 내용이 다음 판단의 자료가 된다.

파일을 고친 다음에는 페이지를 만드는 과정에 오류가 없는지 확인하는 명령을 실행할 수 있다. 여기서 명령이란 컴퓨터에 특정 일을 시키는 짧은 지시다. 실행 뒤에 “완료했다”는 결과가 돌아올 수도 있고, 어느 파일에서 문제가 생겼는지 긴 설명이 돌아올 수도 있다. Claude가 그 결과를 받아 다시 수정한다면, 사람이 새 메시지를 보내지 않아도 작업에 쓰는 정보는 늘어난다.[2]

이처럼 Claude가 지금 답하거나 행동하기 위해 참고하는 정보를 컨텍스트(context)라고 한다. 우리가 주고받은 대화만을 뜻하지 않는다. 파일을 읽어서 돌아온 내용, 명령의 실행 결과, Claude가 따라야 할 지침도 포함된다.[1] 앞의 예에서는 “결제 페이지가 아니라 신청서”라는 요청과 페이지 파일에서 읽은 버튼 주소가 함께 컨텍스트에 들어가는 셈이다.

컨텍스트는 사람의 단기기억, 좀 더 정확히는 지금 일을 하며 사용하는 작업기억에 비유할 수 있다. 지금 참고할 수 있는 정보라는 뜻이다. Claude가 배울 때 접한 모든 지식이나, 앞으로 계속 보관할 자료 전체를 가리키지는 않는다.[3] 사람의 뇌와 같은 방식으로 기억한다는 설명이 아니라, 저장된 자료와 당장 사용하는 정보를 구분하기 위한 비유다.

가령 신청 조건을 적은 문서가 컴퓨터에 저장되어 있어도, 그 문서 전체가 늘 컨텍스트에 들어 있는 것은 아니다. 필요한 파일을 찾아 읽으면 그때 가져온 내용을 참고할 수 있다.[4] 따라서 “파일에 조건이 남아 있다”와 “지금 Claude에게 그 조건이 주어져 있다”는 서로 다른 말이다.

컨텍스트에 담을 수 있는 양에는 한도가 있다. 이를 컨텍스트 윈도우(context window)라고 한다. 컨텍스트가 지금 참고하는 내용이라면, 컨텍스트 윈도우는 한 번에 다룰 수 있는 그 내용의 범위다. 읽는 정보뿐 아니라 새로 만드는 답변도 이 한도에 들어간다. 무한히 늘어나는 저장 공간은 아니다.[3]

이 크기를 셀 때는 보통 글자 수나 대화 횟수 대신 토큰(token)을 쓴다. 토큰은 AI가 글을 처리하기 위해 나누는 작은 단위다. 단어 하나가 될 수도 있고, 단어의 일부가 될 수도 있다. 한 글자나 한 단어가 언제나 한 토큰인 것은 아니다.[6] 여기서는 정확한 계산법보다, 사람이 보낸 짧은 요청도 길게 읽어 온 파일과 같은 한도를 나누어 쓴다는 점을 기억하면 된다.

결국 “나는 몇 마디 하지 않았는데”라는 느낌만으로 컨텍스트가 짧다고 판단하기는 어렵다. Claude Code가 그 사이에 여러 파일을 읽고 명령을 반복해서 실행했다면, 대화 밖에서 들어온 자료가 상당할 수 있다.[2]

자리가 남아 있어도 조건을 놓칠 수 있다

강의 안내 페이지의 작업이 이어진다고 해보자. Claude는 휴대전화 화면에서 버튼이 잘 보이도록 고쳤고, 글자 크기도 조정했다. 그 사이에 읽은 파일 내용과 오류를 고친 기록이 쌓였다. 이제 다시 버튼을 수정하려 한다.

이때 처음의 “신청서로 연결한다”는 문장이 여전히 컨텍스트에 있다고 가정하자. 그렇더라도 이번 수정에서 그 조건을 반드시 적용한다고 보장할 수는 없다. 넣어 둘 자리가 충분하다는 것과, 그 안에서 필요한 조건을 찾아 현재 작업에 제대로 사용하는 능력은 다르다.[3]

Anthropic은 컨텍스트가 길어질수록 그 안의 정보를 정확하게 찾아내는 능력이 떨어질 수 있는 현상을 컨텍스트 로트(context rot)라는 이름으로 설명한다.[4] 여기서 문제는 정보가 반드시 사라졌다는 데 있지 않다. 다른 자료와 함께 주어진 조건을 지금의 판단에 충분히 반영하지 못할 수 있다는 데 있다.

앞의 예에 대입하면, Claude에게는 버튼의 모양을 고친 내용과 실행 오류를 해결한 내용도 주어져 있다. 그 많은 자료 가운데 버튼의 목적지를 정하는 기준은 처음의 신청 조건이다. 그 조건을 놓친 채 버튼을 수정하는 상황을 생각할 수 있다. 이것은 컨텍스트 로트를 이해하기 위한 예이지, 버튼을 잘못 연결하면 반드시 컨텍스트 로트가 원인이라는 뜻은 아니다.

로트(rot)라는 말 때문에 정보가 시간이 지나면 저절로 썩거나 지워진다고 생각하기 쉽다. 하지만 여기서 다루는 것은 기다린 시간에 따른 자동 소멸이 아니다. 함께 다루는 정보가 많아질 때의 성능 저하다. 어떤 모델을 쓰는지, 어떤 자료와 과제를 주는지에 따라 정도가 다르며, 긴 컨텍스트에서도 작업을 잘 수행할 수 있다.[4]

컨텍스트 윈도우에 여유가 있다는 이유만으로, 앞서 준 모든 조건을 똑같이 잘 사용할 것이라고 기대해서는 안 된다.[3]

한도에 가까워지면 내용을 압축해 이어 간다

파일을 더 읽고 수정 결과도 계속 쌓이면, 정보의 양 자체를 줄여야 하는 때가 온다. Claude Code 공식 문서에 따르면 한도에 가까워질 때 먼저 오래된 도구 실행 결과를 정리한다. 그것으로 부족하면 대화를 요약한다. 중요한 요청과 코드 일부는 보존하지만, 초반에 말한 세세한 지시는 빠질 수 있다.[1]

여기서 오래된 도구 결과를 정리한다는 말은, 예전에 읽어 온 파일 내용이나 명령 결과를 현재 컨텍스트에서 덜어 낸다는 뜻이다. 컴퓨터에 저장된 원본 파일까지 삭제한다는 뜻은 아니다. 원본이 남아 있다면 필요할 때 다시 읽어 올 수 있다.[4]

대화를 줄여 이어 가는 과정은 컴팩션(compaction)이라고 부른다. 앞서 주고받은 내용을 모두 그대로 들고 가는 대신, 계속 작업하는 데 필요한 내용을 요약해 다음 판단에 사용한다. 이때의 압축은 문장을 하나도 잃지 않고 작은 파일에 넣었다가 완전히 복원하는 방식과 다르다. 무엇을 남길지 고르는 요약이다.[4]

강의 안내 페이지의 작업을 요약한다면 “강의 소개와 신청 버튼을 만들었고, 휴대전화 화면에 맞춰 수정 중”이라는 문장이 남을 수 있다. 이 문장은 작업의 큰 방향을 알려 준다. 하지만 이것만으로는 신청 버튼이 어디로 연결되어야 하는지 알 수 없다. “결제 페이지가 아니라 신청서”라는 조건까지 남아 있어야 그 선택을 할 수 있다.

실제로 요약이 늘 이렇게 부실해진다는 뜻은 아니다. 조건을 정확히 남기면 다음 작업에서도 참고할 수 있다. 컴팩션은 작업을 이어 가기 위한 기능이지만, 모든 세부 조건을 그대로 보존한다는 보장은 없다.[1] 긴 대화가 계속 이어진다고 해서 처음의 모든 문장도 변함없이 전달된다고 볼 수 없는 이유다.

앞 절과는 문제가 다르다. 컨텍스트 로트는 정보가 아직 포함되어 있어도 잘 활용하지 못할 수 있다는 이야기다.[3] 컴팩션에서는 다음 작업에 넘기는 내용 자체를 줄이고 요약한다.[1] 겉으로는 둘 다 “처음에 한 말을 잊었다”처럼 보일 수 있지만, 하나는 정보를 사용하는 능력의 문제이고 다른 하나는 전달되는 정보가 바뀌는 과정이다.

같은 일은 다시 읽고, 다른 일은 새 대화에서 시작한다

아직 강의 안내 페이지를 만드는 중이라면, 조건 하나를 놓쳤다는 이유만으로 곧바로 새 대화를 시작할 필요는 없다. 우선 지금 고치는 부분에 필요한 조건을 다시 확인하는 편이 낫다. 조건을 적은 문서가 있다면 어느 문서의 어느 부분을 읽어야 하는지 알려 준다. 대화에만 남겼다면 처음 요청에서 해당 문장을 가져와 다시 제시할 수 있다.

이 예에서는 “신청 버튼은 결제 페이지가 아니라 신청서로 연결한다”는 원래 조건을 다시 보여 주면 된다. 그리고 현재 버튼이 가리키는 주소를 확인해 그 조건과 비교하도록 요청한다. “앞에서 말한 것 기억하지?”라고 묻는 데서 끝내지 않고, 무엇을 근거로 무엇을 확인할지 정하는 것이다.

Claude가 조건을 맞게 되풀이했다고 해서 페이지까지 맞게 고쳐졌다고 볼 수는 없다. 최종 확인은 만든 결과를 대상으로 한다.[2] 이 경우에는 페이지에서 버튼을 눌러 실제로 신청서가 열리는지 확인하면 된다.

같은 작업이 길어져 대화를 줄이면서 계속하고 싶을 때는 Claude Code의 /compact를 사용할 수 있다. 지금까지의 대화를 요약해 공간을 확보하는 명령이며, 요약에서 무엇을 중점적으로 남길지도 덧붙일 수 있다.[7]

반대로 강의 안내 페이지를 마친 뒤, 그 작업과 관계없는 다른 일을 부탁하려 한다면 새 대화에서 시작하는 편이 낫다.[2] 이전 페이지의 파일 내용과 오류 기록을 다음 일에 계속 가져갈 이유가 없다.

Claude의 일반 채팅 화면에서는 새 채팅을 연다. Claude Code에서는 대화 입력창에 /clear를 입력해 새 대화를 시작할 수 있다. /clear는 앞선 대화 내용을 비우고 시작하는 명령이다. 현재 대화를 요약해 이어 가는 /compact와는 다르다.[7] 아직 같은 페이지를 고치는 중인지, 이전 작업의 설명이 필요 없는 다른 일을 시작하는지에 따라 선택하면 된다.

다만 새 대화를 시작하는 것과 모든 기억을 지우는 것은 다르다. Claude Code의 /clear는 프로젝트 메모리까지 없애는 명령이 아니다.[7] 프로젝트 지침을 담은 CLAUDE.md는 새 대화에서도 다시 읽을 수 있다.[5] 별도로 저장된 메모리 중 자동으로 읽도록 설정된 부분도 대화를 시작할 때 다시 들어올 수 있다.[5] 이전 대화의 긴 작업 기록을 이어받지 않는다는 뜻이지, 아무 정보도 없는 상태가 된다는 뜻은 아니다.

Claude의 일반 채팅도 이 구분이 필요하다. 프로젝트에 올려 둔 공통 자료와 지침은 그 프로젝트 안의 새 채팅에서도 사용할 수 있다.[8] 계정의 메모리 기능이 켜져 있다면, 이전 대화에서 기억한 내용도 새 채팅에 반영될 수 있다.[9] 새 채팅을 연다고 프로젝트 자료나 계정 메모리까지 초기화되지는 않는다.

처음 질문으로 돌아오면, Claude Code가 앞서 말한 조건을 놓치는 이유를 단순히 “기억할 공간이 다 찼기 때문”이라고 설명할 수는 없다. 조건이 컨텍스트에 남아 있어도 많은 정보 속에서 제대로 활용하지 못할 수 있다.[3] 한도에 가까워져 대화를 정리하는 과정에서는 그 조건의 세부 내용이 다음 작업에 그대로 전달되지 않을 수도 있다.[1]

버튼이 잘못 연결되었다는 결과만으로 두 원인 중 어느 쪽인지 알 수는 없다. 그래도 다음에 할 일은 정할 수 있다. 같은 페이지를 계속 고친다면 원래 신청 조건을 다시 읽게 하고, 버튼이 실제로 어디로 이동하는지 대조한다. 관계없는 새 일을 시작한다면 지난 작업의 긴 기록을 그대로 이어 가기보다 새 대화에서 시작한다.

출처

제품 동작과 명령은 2026년 10월 5일에 확인한 공식 문서를 기준으로 설명했다. 강의 안내 페이지와 요약 문장은 실제 실행 기록이 아닌 가상의 예다.

  1. Anthropic, How Claude Code works
  2. Anthropic, Best practices for Claude Code
  3. Anthropic, Context windows
  4. Anthropic, Effective context engineering for AI agents
  5. Anthropic, How Claude remembers your project
  6. Anthropic, Glossary — Tokens
  7. Anthropic, Commands
  8. Anthropic, How can I create and manage projects?
  9. Anthropic, Use Claude’s chat search and memory to build on previous context

구독하기

새 글을 메일로 받아보세요.

대략 일주일에 한 편, AI 에이전트를 이해하거나 도구를 사용하고 운영하며 얻은 내용을 보냅니다. 그 외의 메일은 보내지 않습니다.