들어가며: 계정을 바꾸면 대화가 끊길까?
터미널에서 Claude Code를 쓰다 보면 사용량 한도에 걸리는 순간이 옵니다. 저는 계정을 두 개 쓰고 있어서, A 계정으로 작업하다 한도가 차면 B 계정으로 바꿔서 이어가곤 했습니다.
그런데 문득 궁금해졌습니다. A 계정에서 하던 대화 맥락을 B 계정은 모르는 거 아닐까? 이 질문을 파고들다 보니, LLM이 대화를 주고받는 방식 자체를 제대로 몰랐다는 걸 알게 됐습니다. 결론부터 말하면 계정을 바꿔도 맥락은 끊기지 않습니다. 그 이유와 함께, 알아두면 사용량을 아낄 수 있는 내용들을 정리해봤습니다.
1. LLM은 대화를 기억하지 않는다
가장 놀랐던 사실은 이겁니다. 모델은 이전 대화를 기억하지 못합니다. 그래서 매번 질문할 때마다 지금까지의 대화 전체를 다시 보내야 합니다.
예를 들어 A, B, C 세 번 대화를 나눈 뒤 네 번째 질문 D를 하면, 실제 요청은 이렇게 나갑니다.
[질문A, 답변A, 질문B, 답변B, 질문C, 답변C, 질문D] → 모델 → 답변D
여기서 포인트는 두 가지입니다.
- 이전 질문뿐 아니라 답변도 입력으로 같이 들어갑니다.
- 모델은 A, B, C에 다시 답하지 않습니다. 대화 전체를 읽은 상태에서 D에 대한 답만 새로 생성합니다.
화면에는 기존 대화 아래에 새 답변 D가 붙을 뿐이라, 사용자 입장에서는 이런 과정이 보이지 않습니다.
대화 기록은 어디에 있을까?
Claude Code의 대화 기록은 서버가 아니라 내 PC의 로컬 파일(~/.claude/projects/ 아래)에 저장됩니다. 그래서 터미널을 껐다 켜도 claude --resume으로 이어갈 수 있습니다.
재미있는 실험: 답변을 바꾸면?
모델은 대화 기록에 적힌 내용을 그대로 믿습니다. 자기가 실제로 그렇게 답했는지 확인할 방법이 없기 때문입니다. 그래서 이전 답변을 수정해서 보내면, 모델은 수정된 내용을 "내가 했던 말"로 받아들이고 다음 질문을 처리합니다. API를 직접 다룰 때는 실제로 흔히 쓰는 방법이기도 합니다.
2. 요청에 실제로 들어가는 것 vs 화면에만 보이는 것
화면에 보이는 것과 모델에게 전달되는 내용은 1:1로 같지 않습니다.
구분예시
| 화면에만 있음 | 진행 스피너, 경과 시간, 색상, 상태 안내 문구 |
| 요청에만 있거나 줄여서 보임 | 시스템 프롬프트, CLAUDE.md, 도구 실행 결과 전체 |
| 양쪽 다 있음 | 사용자 질문, 모델 답변, 도구 호출 내역 |
특히 주의할 건 도구 실행 결과입니다. 화면에서는 파일 읽기 결과가 몇 줄로 접혀 보여도, 모델에게는 전체 내용이 전달됩니다. 큰 파일을 읽거나 출력이 긴 명령을 실행하면 사용량이 확 늘어나는 이유입니다.
생각하는 과정(thinking)은?
화면에 보이는 "생각하는 과정"은 단순한 UI 연출이 아니라 모델이 실제로 생성한 출력입니다. 그리고 최신 모델(Claude Opus 4.5, 4.6 이상)은 이전 턴의 thinking도 다음 요청에 맥락으로 유지하고 입력으로 과금합니다. 그 이전 모델들은 이전 thinking을 제거했습니다. 출처
[질문A, 생각A, 답변A, 질문B, 생각B, 답변B, ..., 질문D] → 생각D, 답변D
몇 가지 덧붙이면 이렇습니다.
- 화면에 보이는 thinking은 전체 원문이 아니라 요약본인 경우가 많습니다.
- 답변 텍스트와 달리 thinking은 임의로 수정할 수 없습니다. 검증용 서명이 붙어 있어서 바꾸면 오류가 납니다.
3. 매번 전체를 보내면 비효율적이지 않나? 프롬프트 캐싱
매번 전체를 보낸다니 낭비처럼 느껴지지만, 이를 줄여주는 장치가 프롬프트 캐싱입니다.
캐시는 "답변"이 아니라 "읽은 결과"를 저장한다
모델이 긴 입력을 읽을 때 내부적으로 많은 계산을 합니다. 캐싱은 A, B, C를 읽으며 했던 중간 계산 결과(KV 캐시)를 저장해 두는 것입니다. 다음 요청에서는 그 부분을 건너뛰고 새로 추가된 D만 읽으면 됩니다.
캐시 있음: [A, B, C] 읽기 생략 + D만 읽기 → 답변D (빠르고 저렴)
캐시 없음: [A, B, C, D] 전부 다시 읽기 → 답변D (느리고 비쌈)
결과는 같습니다. 캐시는 비용과 속도에만 영향을 주고 맥락이나 품질에는 영향이 없습니다.
캐시가 재사용되는 조건
- 앞에서부터 완전히 같은 부분까지만 재사용됩니다. 중간의 답변B를 수정하면 A까지만 캐시를 쓰고 B부터는 새로 읽습니다.
- 미리 저장되는 게 아니라, 실제 요청을 보낼 때 그 내용이 캐시에 저장됩니다.
캐시는 오래 가지 않는다
캐시는 GPU 메모리처럼 비싼 자원에 올려두기 때문에 기본 5분 정도만 유지됩니다. 사용될 때마다 유지 시간이 다시 연장되고, API에는 1시간짜리 옵션도 있습니다.
4. 캐시 유지 시간이 5분이면, 긴 작업은?
수십 분짜리 작업도 캐시는 유지된다
Claude Code의 긴 작업은 내부적으로 짧은 요청이 계속 이어지는 구조입니다.
요청 → "파일 읽을게" → 실행 → 결과 담아 다시 요청
→ "수정할게" → 실행 → 결과 담아 다시 요청
→ "테스트 돌릴게" → 실행 → 결과 담아 다시 요청 ...
도구를 쓸 때마다 대화 전체를 담은 새 요청이 몇 초~몇십 초 간격으로 나가고, 그때마다 캐시 유지 시간이 연장됩니다. 그래서 작업이 30분 걸려도 앞부분 대화는 계속 캐시에 살아 있습니다.
캐시가 끊기는 건 이런 경우입니다.
- 빌드나 설치처럼 한 번의 명령이 5분 넘게 걸릴 때
- 작업이 끝난 뒤 한참 있다가 다음 질문을 할 때
2시간 뒤에 돌아왔다면?
캐시는 이미 사라졌습니다. 복귀 후 첫 질문 한 번만 대화 전체를 다시 읽어 무겁고, 그 다음부터는 다시 캐시가 적용됩니다. 맥락은 로컬에 그대로 있으니 대화가 끊기지는 않습니다.
캐시를 살려두려고 5분마다 의미 없는 질문을 하면?
계산해보면 손해입니다. API 기준 입력 비용 비율은 대략 캐시 읽기 0.1배, 캐시 새로 만들기 1.25배입니다. 대화 크기를 1로 두고 2시간을 비교하면 이렇습니다.
방식계산비용
| 5분마다 유지용 요청 | 약 24회 × 0.1 | 약 2.4 |
| 2시간 뒤 그냥 질문 | 1회 × 1.25 | 약 1.25 |
손익분기는 약 12~13회, 즉 1시간 정도입니다. 여기에 유지용 요청마다 생기는 답변 출력 비용, 의미 없는 대화가 기록에 쌓여 이후 모든 요청이 커지는 문제까지 생각하면 굳이 할 이유가 없습니다.
참고로 구독 요금제는 달러가 아니라 사용량 한도로 차감되고, 정확한 산정 방식은 공개되어 있지 않습니다. 다만 큰 방향은 같다고 보면 됩니다.
5. 다시 처음 질문으로: 계정을 바꾸면?
이제 처음 궁금증에 답할 수 있습니다. 계정을 바꿔도 맥락은 끊기지 않습니다. 대화 기록은 로컬에 있고, 매 요청마다 전체를 보내기 때문에 B 계정도 이전 맥락을 그대로 받습니다.
다만 이런 차이는 있습니다.
- 캐시가 초기화됩니다. 캐시는 계정 단위라서 전환 직후 첫 요청은 대화 전체를 새로 처리합니다. 대화가 길수록 B 계정 사용량이 한 번에 크게 빠집니다.
- 계정에 묶인 기능은 따로 설정해야 합니다. claude.ai에서 연결한 커넥터 등이 해당합니다. 로컬에 등록한 MCP 서버나 CLAUDE.md는 그대로 쓸 수 있습니다.
전환 전에 /compact로 대화를 줄여두면 전환 직후의 부담을 줄일 수 있습니다.
6. /compact와 /clear, 언제 쓰면 좋을까?
대화가 길수록 매 요청이 커지고, 답변 한 글자를 만들 때마다 참고해야 할 내용도 늘어납니다. 그래서 세션을 적절히 정리하는 게 사용량 관리의 핵심입니다.
- /compact: 지금까지의 대화를 요약해서 압축합니다. 맥락의 큰 줄기는 유지하되 세부 내용은 일부 사라집니다. 요약 작업 자체도 비용이 듭니다.
- /clear: 대화를 완전히 비우고 새로 시작합니다. 가장 가볍습니다.
/compact를 쓰면 좋은 타이밍
- 긴 작업을 마치고 같은 주제로 이어갈 때: 도구 실행 결과(파일 내용, 로그 등)가 잔뜩 쌓여 있으니 요약해서 정리합니다.
- 자리를 오래 비웠다가 돌아왔을 때: 어차피 캐시가 사라져 첫 요청이 무거우니, 줄이고 시작하기 좋은 타이밍입니다.
- 계정을 전환하기 직전: 새 계정에서 처음부터 읽어야 할 양을 줄여줍니다.
- 응답이 느려지거나 컨텍스트 한도에 가까워질 때: 자동 압축을 기다리지 말고 원하는 시점에 직접 정리합니다.
/clear를 쓰면 좋은 타이밍
- 주제가 완전히 바뀔 때: 이전 맥락이 필요 없는데 계속 같이 보내는 건 낭비입니다.
- 결과만 확인하고 다른 일을 할 때: 필요한 맥락은 "어떤 파일을 이렇게 수정했다" 정도로 짧게 다시 알려주면 됩니다.
그냥 이어가도 되는 경우
- 대화가 아직 짧을 때
- 5분 이내 간격으로 계속 주고받고 있을 때 (캐시가 살아 있음)
- 이전 작업의 세부 내용이 바로 다음 작업에 꼭 필요할 때
마치며
- LLM은 대화를 기억하지 않고, 매 요청마다 **대화 전체(질문, 답변, 도구 결과, thinking)**를 다시 보낸다.
- 대화 기록은 로컬에 있어서 계정을 바꿔도 맥락은 유지된다.
- 프롬프트 캐싱이 반복 읽기 비용을 줄여주지만 5분 정도면 만료된다.
- 캐시를 살리려는 의미 없는 요청은 손해다. 돌아와서 그냥 이어가거나 정리하자.
- 세션은 작업 단위로 끊어 쓰고, 길어지면 /compact, 주제가 바뀌면 /clear.
원리를 알고 나니 사용량이 왜 빨리 차는지, 언제 세션을 정리해야 하는지 감이 잡혔습니다. Claude Code를 오래 쓰시는 분들께 도움이 되면 좋겠습니다.
'Programmer > AI' 카테고리의 다른 글
| 나는 아직 백엔드 개발자인가 — AI가 무너뜨리는 직업의 경계 (0) | 2026.10.01 |
|---|---|
| Jev - 프로그램과 연동하는 기술 (0) | 2026.09.23 |
| 왜 페르소나는 단순한 '말투' 이상의 기술인가? (0) | 2026.03.02 |
| Claude Code의 한계를 넘다: claude-context-mode (0) | 2026.02.25 |
| Superpowers: AI 코딩 에이전트의 잠재력을 극대화하는 스킬 프레임워크 (0) | 2026.01.26 |