01-개념
01. 개념 — Claude Code는 “REPL” 이다
섹션 제목: “01. 개념 — Claude Code는 “REPL” 이다”채팅이 아니라 루프
섹션 제목: “채팅이 아니라 루프”많은 신규 사용자는 Claude Code를 “터미널 안의 ChatGPT”라고 생각한다. 그래서 매번 한 줄을 길게 적고 결과를 받는 식으로 쓴다. 하지만 Claude Code는 실제로는 도구 호출 루프(Tool-use Loop) 위에서 돌아가는 REPL(Read-Eval-Print Loop) 이다. 한 번의 입력은 다음 단계를 트리거할 뿐이고, 모델은 파일을 읽고, 명령을 돌리고, 다시 사용자에게 묻는 사이클을 반복한다.
이 차이가 중요한 이유는 비용과 정확도가 모두 세션 단위로 누적되기 때문이다. 한 줄을 잘 쓰는 것보다 한 세션의 흐름을 잘 설계하는 것이 훨씬 큰 레버리지를 만든다.
모드(Mode)라는 숨겨진 스위치
섹션 제목: “모드(Mode)라는 숨겨진 스위치”Claude Code 안에는 사용자가 의식하지 않으면 안 보이는 세 가지 입력 모드가 있다:
- 기본 모드 — 자연어를 모델에게 보낸다.
- Bang 모드(
!) — 첫 글자가!이면 그 줄은 모델을 거치지 않고 셸로 직행한다. 모델은 결과만 본다. - Plan 모드(
shift+tab) — 도구 호출이 읽기 전용으로 묶이고, 모델은 “플랜 파일(Plan file)“만 쓰도록 유도된다. (자세한 내용은 Part5/08).
@ 접두는 모드는 아니지만 **파일 멘션(File Mention)**으로 동작해, 입력 안에서 특정 파일을 컨텍스트에 강제로 끌어온다.
세션·상태·레퓸
섹션 제목: “세션·상태·레퓸”claude 명령은 매번 새 컨텍스트로 시작한다. claude --resume(또는 /resume)으로 직전 세션을 이어 받을 수 있고, --continue 플래그는 가장 최근 세션을 자동으로 골라준다. 2026년 4월의 v2.1.91 릴리스 노트는 --resume 시 발생하던 트랜스크립트 체인 단절 버그를 수정했다고 명시했다 — 즉, 이 기능은 이전엔 신뢰성 이슈가 있었고 지금은 기본 워크플로우의 일부로 다뤄도 된다는 신호다.
“Fixed transcript chain breaks on
--resumefrom async write failures.”
의역: “비동기 쓰기 실패로 인한--resume시 트랜스크립트 체인 단절 버그를 수정했다.”
— Claude Code v2.1.91 릴리스 노트, 2026-04-02
인터랙티브 vs 비인터랙티브
섹션 제목: “인터랙티브 vs 비인터랙티브”Claude Code는 두 가지 호출 방식이 있다:
- 인터랙티브(Interactive):
claude만 입력 → REPL 진입. 사람이 곁에서 본다. - 비인터랙티브(Headless) :
claude -p "프롬프트"→ 한 번 실행하고 stdout으로 결과를 뿌리고 종료. 스크립트, hook, CI에서 쓴다.
이 둘은 같은 바이너리이지만 인격이 다르다. Headless 모드에서는 사람이 승인할 수 없으므로 권한을 미리 풀어두거나(--permission-mode), 스킬·서브에이전트를 최소 권한으로 격리해야 한다. Part 5의 03(권한)·07(hooks) 챕터가 이 분리를 자세히 다룬다.