소스코드 51만 줄을 읽고(본인 말로는 “내가 읽었다기보다 Claude Code한테 읽혔다”) 일반 사용자가 모르고 지나치는 것들을 9가지로 정리

대부분의 사람이 Claude Code를 “프롬프트 치고, 기다리고, 다시 치는” 방식으로 쓰고 있는데, 소스코드를 보면 이건 페라리를 1단 기어로만 모는 거라는 겁니다.

**1. CLAUDE.md는 매 턴마다 읽힙니다.

세션 시작할 때 한 번 읽는 게 아니에요. 메시지를 보낼 때마다 다시 읽습니다. 소스 코드에서 확인된 거예요.

4단계 계층이 있어요. 글로벌(~/.claude/CLAUDE.md), 프로젝트(./CLAUDE.md), 모듈별 규칙(.claude/rules/*.md), 로컬 메모(CLAUDE.local.md). 최대 4만 자까지 쓸 수 있는데, 대부분 200자도 안 쓰고 있다고.

아키텍처 결정, 파일 규칙, 테스트 패턴, “이건 절대 하지 마” 규칙을 넣어두면 매번 반영됩니다. 소스코드를 읽고 난 뒤 딱 하나만 바꾸겠다면 이거라는 게 원 글 작성자의 결론이에요. 

**2. 서브에이전트 5개를 돌려도 비용은 1개와 거의 같습니다.

소스코드에서 확인된 구조예요. 서브에이전트를 fork하면 부모 컨텍스트의 바이트 단위 복사본을 만들어요. API가 이걸 캐시합니다. 그래서 5개를 동시에 돌려도 프롬프트 캐시를 공유하기 때문에 비용이 거의 안 늘어요.

실행 모델이 세 가지입니다. fork(부모 컨텍스트 상속, 캐시 최적화), teammate(tmux나 iTerm에서 별도 패널, 파일 기반 메일박스로 통신), worktree(독립 git 워크트리, 에이전트별 브랜치 격리).

보안 감사, 리팩토링, 테스트 작성, 문서 업데이트, 버그 수정을 동시에 돌릴 수 있는 구조가 이미 들어가 있는데, 대부분 한 번에 하나씩 시키고 있는 거죠

3. 권한 팝업을 매번 클릭하고 있다면 설정을 안 한 겁니다.

“이 작업을 허용할까요?”가 뜰 때마다 클릭하는 건 기능이 아니라 설정 실패라는 거예요.

settings.json에 glob 패턴으로 허용 범위를 정해둘 수 있습니다. Bash(npm *), Bash(git *), Edit(src/**) 같은 식으로요. 권한 모드도 세 가지가 있는데, auto 모드가 새로 생겼어요. LLM 분류기가 각 동작을 판단하는 방식입니다. 한 번 설정하면 클릭할 일이 없어지죠.

4. 컨텍스트 압축 전략이 5가지나 있어요.

이게 말해주는 건, Anthropic 엔지니어들이 컨텍스트 넘침 문제에 시간을 엄청 많이 쏟았다는 거예요.

microcompact(오래된 도구 결과를 시간 기준으로 지움), context collapse(대화 구간을 요약), session memory(핵심 맥락을 파일로 추출), full compact(전체 히스토리 요약), PTL truncation(가장 오래된 메시지 그룹을 버림).

/compact를 게임의 수동 세이브처럼 쓰라는 조언이에요. 중요한 건 보존하고, 필요 없는 건 날리고, 계속 진행하는 거죠. 자동 압축을 기다리면 중요한 맥락이 먼저 날아갈 수 있거든요.

5. Hook 시스템이 진짜 확장 API입니다.

라이프사이클 이벤트가 25개 이상이에요. PreToolUse(도구 실행 전), PostToolUse(실행 후), UserPromptSubmit(메시지 전송 시), SessionStart/SessionEnd 등.

Hook 종류도 5가지. command(쉘 명령), prompt(LLM에 맥락 주입), agent(에이전트 검증 루프), HTTP(웹훅 호출), function(JS 실행).

UserPromptSubmit이 특히 강력해요. 메시지를 보낼 때마다 자동으로 테스트 출력이나 최근 git diff를 붙일 수 있거든요. 매번 타이핑할 필요 없이요.

6. 세션을 매번 새로 시작하지 마세요.

모든 대화가 JSONL 파일로 저장됩니다. —continue로 마지막 세션을 이어가고, —resume으로 특정 세션을 골라서 열고, —fork-session으로 과거 대화에서 분기할 수 있어요.

세션을 이어가면 session memory가 쌓입니다. 작업 내역, 파일 목록, 오류, 학습한 것들이 축적돼요. 매번 새 세션을 여는 건 IDE를 매시간 껐다 켜는 것과 같다는 거죠.

7. 도구가 60개 넘고, 읽기는 병렬, 쓰기는 순차입니다.

파일 10개를 읽어야 하면 동시에 읽어요. 파일 3개를 수정해야 하면 하나씩 해요. 충돌 방지 때문이죠. MCP 서버는 지연 로딩이라 연결해놔도 안 쓰면 비용이 0이에요.

8. 중간에 끊어도 손해가 없습니다.

전체 파이프라인이 비동기 제너레이터 방식이에요. Escape를 누르면 현재 스트림만 깔끔하게 중단되고, 이전 맥락은 그대로 남아요. 잘못된 방향으로 가고 있으면 기다리지 말고 바로 끊으세요. 페어 프로그래밍에서 “아, 그 방향 말고 이쪽으로”라고 말하는 것과 같은 거예요.

9. 결론은 이겁니다.

Claude Code를 잘 쓰는 사람들은 프롬프트를 잘 쓰는 게 아니에요. 설정을 했고, 병렬로 돌렸고, Hook을 걸었고, 세션을 이어갔습니다. 소스코드를 보면 이게 터미널 채팅이 아니라 에이전트 오케스트레이션 플랫폼이라는 게 분명해지는 거죠.

유출된 레포지토리 https://github.com/instructkr/claw-code