claude code 세션 이어서 하려면 claude -c 한 줄입니다. 직전 대화가 그대로 열립니다.
저희는 그 대화를 믿지 않습니다.
이어 갈 것은 대화가 아니라 문서에 있습니다.
| 새 세션이 읽는 것 | 답하는 질문 | 어디서 |
|---|---|---|
| CLAUDE.md | 이 레포의 규칙은 무엇인가 | 레포 안, 세션마다 자동으로 읽힘 |
| 자동 메모리 | 사용자가 무엇을 정하고 무엇을 고쳤나 | 레포 밖, 세션마다 자동으로 읽힘 |
| plan.md | 어디까지 왔고 다음은 무엇인가 | 레포 안, 첫 명령으로 읽음 |
| research.md | 어떻게 돼 있고 어디서 밟았나 | 레포 안, 그다음 읽음 |
기록이 남은 세션 스무 개에서 대화 압축이 132번 있었습니다. 압축 뒤의 대화는 요약의 요약입니다.
그래서 믿는 쪽은 레포에 적힌 문서입니다. 아래는 그 문서 체계와, 문서가 있어도 안 읽혀서 났던 사고 둘입니다.
환경
- Claude Code 2.1.287, 자동 메모리는 기본값대로 켜 둠
- 레포 둘. 리서치 레포(비공개)와 이 블로그 레포(공개). 둘 다 CLAUDE.md, plan.md, research.md 세 파일 구조
- 세션 기록은
~/.claude/projects/아래 jsonl 파일. 남아 있는 것은 리서치 14개(2026년 8월 25일부터), 블로그 6개(9월 28일부터) - 문서는 2026년 2월부터 쌓였고, 세션 기록 숫자는 10월 5일에 셌습니다
이어서 열린 대화에는 무엇이 남아 있나?
claude -c는 같은 폴더의 가장 최근 대화를 다시 엽니다. 이름이나 ID로 고르려면 --resume입니다. 여기까지가 공식 문서가 답하는 범위입니다.
문제는 그 대화의 상태입니다.
긴 작업은 컨텍스트 창을 채우고, 채워지면 압축됩니다. 압축은 지금까지의 대화를 요약 하나로 바꾸는 일이라 세부가 빠집니다. 저희 세션 기록에서 압축 요약을 세어 보면 이렇습니다.
| 리서치 레포 | 블로그 레포 | |
|---|---|---|
| 기록이 남은 세션 | 14 | 6 |
| 압축 요약 | 107 | 25 |
| 사람이 친 /compact | 105 | 28 |
| 한 세션 최대 압축 | 29 | 7 |
압축 132번 중 사람이 직접 친 것이 거의 전부입니다.
작업 단위가 끝날 때마다 쳤습니다.
한 세션에서 29번 압축된 대화를 claude -c로 다시 열면 열리기는 하죠. 그 안에 있는 것은 요약을 스물아홉 번 거친 문장들입니다. 이어진다는 것은 창이 열린다는 뜻이고, 알고 있다는 뜻이 아닙니다.
이 글을 쓴 세션도 압축을 두 번 지났습니다. 압축 뒤에 Claude가 재료를 다시 찾은 곳은 대화가 아니라 git 로그와 레포의 문서였습니다.
새 세션은 무엇을 어떤 순서로 읽나?
넷을 순서대로 읽습니다.
앞의 둘은 자동이고 뒤의 둘은 규칙입니다.
① CLAUDE.md, 자동 Claude Code가 세션을 열 때 레포의 CLAUDE.md를 읽습니다. 공식 문서는 200줄 이하를 권합니다. 저희 것은 리서치 364줄, 블로그 346줄로 그 권고를 넘습니다. 넘긴 대가가 얼마인지는 재지 않았습니다.
② 자동 메모리, 자동 레포 밖 폴더의 MEMORY.md 색인이 같이 읽힙니다. 처음 200줄 또는 25KB까지입니다. 저희 색인은 76줄과 16줄이라 전부 들어갑니다.
③ plan.md, 첫 명령으로 plan.md 끝에 새 세션이 시작할 때 확인할 것이라는 절이 있습니다. 명령 네 줄입니다. 사이트맵의 URL 수, 감시 잡의 마지막 종료 코드, 레포 상태, 초안과 발행본의 개수. 넷 다 숫자가 나오는 명령이라 읽었다는 증거가 남습니다.
④ research.md, 그다음 그 절의 마지막 줄은 research.md를 그다음 읽으라는 것입니다. 함정 절은 읽지 않으면 반드시 한 번은 밟는다고 적혀 있고, 함정은 지금 31개입니다.
세 문서의 역할은 한 줄씩입니다. 줄 수는 리서치, 블로그 순입니다.
| 문서 | 답하는 질문 | 줄 수 |
|---|---|---|
| plan.md | 어디까지 왔나 | 2,516 / 1,307 |
| research.md | 어떻게 돼 있나 | 2,847 / 1,107 |
| quant-methodology.md | 왜 그렇게 했나 | 602 / 없음 |
| CLAUDE.md | 늘 읽히는 규칙 | 364 / 346 |
| journal.md | 번복의 보존 | 788 / 없음 |
갱신 규칙도 한 줄입니다.
계획이 바뀌면 plan.md, 구현이 바뀌면 research.md, 둘 다면 둘 다. 기준은 외부에서 봤을 때 동작이나 판단이나 구조가 바뀌었는가입니다.
CLAUDE.md는 리서치에서 29번, 블로그에서 22번 고쳐졌습니다.
규칙은 사고 뒤에 늘어났습니다.
문서가 있어도 안 읽히면 어떻게 되나?
리서치 레포의 journal.md는 번복한 판단을 보존하는 파일입니다. 틀린 주장과 그 교정이 날짜와 함께 들어갑니다.
9월 16일에 그 파일의 교정 3건이 다시 틀린 채로 나왔습니다.
교정을 적어 둔 뒤 5일에서 10일 사이에 같은 주장이 그대로 재발했습니다.
이유는 한 줄이었습니다.
journal.md는 새 세션이 읽는 파일이 아니었습니다. 자동으로 읽히는 것은 CLAUDE.md와 메모리뿐이고, plan.md와 research.md는 규칙으로 읽히는데, journal.md는 그 어디에도 없었습니다. 교정이 적혀 있다는 사실과 새 세션이 그것을 안다는 사실은 다른 일이었습니다.
그날 세 교정을 CLAUDE.md로 옮겼습니다.
그 자리에 적힌 문장이 「세션이 끊기면 읽히지 않는다」입니다.
문서는 누가 읽어야 문서입니다. 사람이 나중에 찾아 읽을 기록과 새 세션이 시작할 때 읽어야 할 규칙은 다른 파일에 있어야 하고, 뒤의 것은 자동으로 읽히는 자리에 있어야 합니다.
같은 규칙을 두 도구가 읽으면 어떻게 되나?
저희는 Claude Code와 Codex를 같이 씁니다. 분담은 codex vs claude code 글에 적었습니다.
Claude Code는 CLAUDE.md를 읽고 Codex는 AGENTS.md를 읽습니다.
리서치 레포에서는 AGENTS.md를 CLAUDE.md의 복사본으로 두고 git 추적에서 뺐습니다. 이 글을 쓰면서 둘을 비교해 봤습니다.
| CLAUDE.md | AGENTS.md 복사본 | |
|---|---|---|
| 줄 수 | 364 | 341 |
| 마지막 수정 | 9월 28일 | 9월 16일 |
| 서로 다른 줄 | 51 |
9월 20일에 추가된 코딩 원칙 하나가 복사본에는 없습니다. 10월 5일 기준으로 Codex는 19일 묵은 규칙으로 검토하고 있었습니다.
복사본은 만든 날만 같거든요.
블로그 레포는 다르게 했습니다. CLAUDE.md를 AGENTS.md로 가는 심링크로 두고 그 심링크를 커밋했습니다. 한쪽만 고칠 수 없는 구조라 드리프트가 없습니다.
Claude Code 공식 문서는 CLAUDE.md가 없으면 AGENTS.md를 그대로 읽는다고 합니다. 파일 하나로 두 도구를 먹이는 길이 둘 있는 셈이고, 리서치 레포의 복사본은 이 글을 쓰는 시점에 아직 고치지 않았습니다.
적지 않은 것은 어떻게 되나?
Codex 분담은 5월 말부터 다섯 달 돌았습니다.
정지 시점 리뷰만 1,025회입니다.
그런데 10월 5일 이전의 리서치 레포 문서 어디에도 Codex라는 말이 없었습니다. plan.md, research.md, CLAUDE.md, 설계 문서, 초안 폴더를 다 뒤져도 0건입니다. PR 본문과 커밋 메시지에만 있었습니다.
그날 새 세션이 AI 도구 글감을 평가하면서 “Codex 경험이 얇다”고 적었습니다.
운영자가 바로 고쳐 줬습니다.
“세션 요약본을 우리는 문서로 남겨두지않나? 그래서 새로운 세션으로 진행하더라도 차질없게 진행하는거로 알고있음”
맞는 말이었고, 그래서 더 아팠습니다.
문서 체계는 있었는데 그 일이 문서에 없었습니다. 기록이 없으면 새 세션에게는 없는 일입니다.
지금은 메모리 파일 하나와 백로그 판정 기록에 들어 있습니다.
자동 메모리에는 무엇을 두나?
메모리 파일은 두 레포 합쳐 87개입니다.
공식 문서가 정한 종류는 넷입니다. 사용자가 누구인가, 사용자가 무엇을 고쳐 줬나, 코드와 git에서 알 수 없는 진행 중인 일, 레포 밖 어디에 무엇이 있나.
저희가 쓰면서 지키는 것은 하나입니다.
레포가 이미 기록하는 것은 메모리에 적지 않습니다. 파일 구조, 지난 수정, 명령어는 레포에 있습니다. 메모리에 남는 것은 사용자가 말로 정한 결정과 그 이유, 그리고 날짜입니다.
메모리는 쓴 시점의 사실입니다.
메모리가 가리키는 파일이나 플래그는 쓰기 전에 아직 있는지 확인합니다. 두 레포의 CLAUDE.md가 51번 바뀐 동안 메모리는 그 자리에 그대로 있었습니다.
남는 것
claude -c는 창을 열어 주지, 알게 해 주지는 않습니다. 압축 132번을 지난 대화는 요약의 요약입니다. 이어 갈 것은 대화가 아니라 레포의 문서에 있습니다.
읽히는 자리에 둬야 문서입니다. 교정 3건이 적혀 있었는데 5일에서 10일 만에 재발했습니다. 새 세션이 자동으로 읽는 파일은 CLAUDE.md와 메모리뿐이고, 나머지는 첫 명령으로 읽게 하는 규칙이 있어야 합니다.
두 도구가 읽는 규칙은 한 파일이어야 합니다. 복사본은 19일 만에 51줄이 어긋났습니다. 심링크를 커밋하거나, 한 파일을 둘이 읽게 합니다.
적지 않은 일은 없는 일입니다. 다섯 달 돈 분담이 문서에 0건이라 새 세션이 틀린 판단을 적었습니다. PR 본문은 기록이지만 새 세션이 읽는 자리는 아닙니다.
세션 기록과 메모리는 각자 머신에 있습니다. 같은 자리를 세어 보려면 아래 명령입니다. 문서 줄 수와 미러 드리프트는 저희 레포 값이라 재현되지 않습니다.
# 기록이 남은 세션 수와 압축 요약 수 — <프로젝트> 는 ~/.claude/projects/ 아래 폴더 이름
ls ~/.claude/projects/<프로젝트>/*.jsonl | wc -l
cat ~/.claude/projects/<프로젝트>/*.jsonl | grep -o '"isCompactSummary":true' | wc -l
cat ~/.claude/projects/<프로젝트>/*.jsonl | grep -o '<command-name>/compact</command-name>' | wc -l
# 자동 메모리 파일 수와 색인 줄 수
ls ~/.claude/projects/<프로젝트>/memory/*.md | grep -v MEMORY.md | wc -l
wc -l ~/.claude/projects/<프로젝트>/memory/MEMORY.md
# 두 도구가 읽는 규칙 파일이 어긋났는가 — 복사본으로 두고 있다면
diff AGENTS.md CLAUDE.md | grep -c '^[<>]'
# 규칙 파일이 몇 번 바뀌었나
git log --oneline -- CLAUDE.md | wc -l
자주 묻는 질문
Q. claude code compact 는 언제 치나요?
저희는 작업 단위가 끝날 때 칩니다.
PR을 올린 뒤, 리뷰를 반영한 뒤가 그 자리입니다. 압축 132번 중 사람이 친 것이 거의 전부인 이유입니다. 컨텍스트가 차서 자동으로 압축되기를 기다리면 압축 시점을 고를 수 없습니다. 자동 압축이 걸리는 창 크기는 --autocompact 플래그로 바꿀 수 있습니다.
압축 뒤 첫 일은 레포의 문서를 다시 읽는 것입니다.
요약을 믿고 이어 가지 않습니다.
Q. claude code claude.md 는 몇 줄이 적당한가요?
공식 권고는 200줄 이하입니다. 저희는 364줄과 346줄로 넘고, 넘긴 대가는 재지 않았습니다.
줄이는 대신 쓸 수 있는 길은 공식 문서에 있습니다. 코드의 일부에만 해당하는 규칙은 경로별 규칙 파일로 빼는 방법입니다. 저희는 아직 안 했습니다.
Q. claude code worktree 를 쓰면 메모리는 어떻게 되나요?
공식 문서에 따르면 같은 레포의 워크트리는 자동 메모리 폴더를 공유합니다. 폴더 이름이 git 레포에서 나오기 때문입니다.
저희는 워크트리 안의 작업 진행 원장을 git이 무시하는 폴더에 둡니다. 세션이 바뀌어도 그 원장을 읽으면 어느 작업까지 끝났는지 알 수 있고, 압축 뒤에 같은 작업을 다시 하는 일을 막습니다.
Q. claude code 메모리 초기화는 어떻게 하나요?
메모리는 마크다운 파일이라 지우면 끝입니다. 폴더는 ~/.claude/projects/<프로젝트>/memory/입니다.
끄는 것은 공식 문서에 둘이 있습니다. 세션 안에서 /memory 토글, 또는 환경 변수 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 입니다.
참고 자료
- How Claude remembers your project 는 CLAUDE.md 가 매 세션 읽힌다는 것, 200줄 이하 권고, AGENTS.md 를 그대로 읽는 조건, 그리고 자동 메모리의 네 종류와 200줄/25KB 로드 한도의 근거입니다.
- CLI reference 는
claude -c가 같은 폴더의 가장 최근 대화를 열고--resume이 ID 나 이름으로 고른다는 것,--autocompact플래그의 근거입니다. - 이 블로그 레포의 CLAUDE.md 는 AGENTS.md 로 가는 심링크를 커밋한 실물입니다.
- codex vs claude code 글 은 두 도구의 분담과 Codex 정지 시점 리뷰 1,025회의 기록입니다.
이 사이트의 수치는 주 1회 DB와 다시 대조하고, 판단이 바뀌면 지우지 않고 글 안에 덧붙입니다. 갱신은 RSS로 받을 수 있습니다.