1. Claude Code 소개 및 작동 방식 [1]

thumbnail Claude Code는 터미널 기반의 코딩 에이전트로, 강력한 도구와 반복적인 작업을 통해 개발자의 코딩 작업을 돕는다.

1.1. Claude Code 개발 배경 및 개인적인 경험 [1]

  1. Claude Code 개발 참여 계기 [5]
    1. 발표자 Cal은 Anthropic의 Applied AI 팀에서 Claude 모델의 최적 출력을 얻기 위한 프롬프트 엔지니어링을 담당한다. [6]
    2. 개인적으로 코딩을 좋아하며, 새로운 프로젝트를 시작하지만 끝내지 못하는 경우가 많았다. [9]
    3. 2023년 말, Claude Code의 전신인 도구를 사용해보고 깊은 인상을 받았다. [12]
      1. 이 도구를 사용해 새로운 노트 필기 앱을 만들었는데, 주말 내내 몰입하여 혼자서는 불가능했을 정도로 프로젝트를 진척시켰다. [16]
      2. 이 경험은 코딩 방식과 소프트웨어 엔지니어링에 대한 생각을 완전히 바꾸어 놓았다. [16]
    4. Claude Code 사용량이 내부 리더보드에서 1위를 차지하며 개발팀과 교류하게 되었고, 프롬프트 엔지니어링 전문성을 바탕으로 핵심 기여자로 합류했다. [26]
    5. 현재는 프롬프트, 시스템 프롬프트, 도구 작동 방식, 평가 방법 등 Claude Code의 핵심 부분에 기여하고 있다. [32]

1.2. Claude Code의 작동 원리 [34]

  1. Claude Code의 비유적 설명 [34]
    1. Claude Code는 터미널에서 모든 작업을 처리하는 동료와 같다. [35]
    2. 발표자는 주니어 엔지니어 시절, 터미널에서 복잡한 명령어를 능숙하게 다루던 멘토 'Tony'에 비유하며, Claude Code가 항상 옆에 있는 'Tony'와 같다고 설명한다. [37]
  2. Claude Code의 내부 작동 방식: 순수한 에이전트 [41]
    1. Anthropic은 '작동하는 단순한 것'을 추구하며, Claude Code는 순수한 에이전트(pure agent)로 설계되었다. [41]
    2. 에이전트는 명령(instructions), 강력한 도구(powerful tools), 그리고 모델이 완료를 결정할 때까지 반복되는 루프(run in a loop)로 구성된다. [43]
    3. Claude Code는 파일을 생성하고 편집하며, 터미널을 사용하는 등 터미널 전문가가 사용하는 도구들을 활용한다. [45]
  3. 코드베이스 이해 방식: 유전적 탐색(Genetic Search) [48]
    1. Claude Code는 코드베이스를 색인화하거나 임베딩하는 복잡한 RAG(Retrieval Augmented Generation) 방식 대신, 사람이 새로운 코드베이스를 탐색하는 방식과 유사하게 작동한다. [49]
    2. glob, grep, find와 같은 검색 도구를 사용하여 코드베이스를 탐색하고 이해한다. [53]
    3. 유전적 탐색은 모델이 검색을 수행하고, 결과를 분석한 후, 추가 정보가 필요하다고 판단되면 다시 검색을 수행하는 반복적인 과정이다. [56]
  4. 추가 기능 및 보안 [59]
    1. 경량 UI 레이어: Claude Code의 작업 과정을 시각적으로 확인할 수 있다. [59]
    2. 권한 시스템: 에이전트가 잠재적으로 위험한 작업을 수행할 때 사용자 개입을 유도하여 안전을 확보한다. [60]
    3. 보안: Claude Code는 모델 위에 가벼운 레이어 형태로 존재하며, AWS 및 GCP와 같은 클라우드 제공업체를 통해 Claude를 사용할 수 있어 보안에 대한 우려를 줄일 수 있다. [62]

2. Claude Code 활용 사례 및 모범 사례 [63]

thumbnail Claude Code는 코드베이스 탐색부터 코드 작성, 배포, 디버깅에 이르기까지 다양한 개발 과정에서 활용될 수 있으며, `claude.md` 파일 활용, 권한 관리, 효율적인 워크플로우 구축 등의 모범 사례를 통해 그 효과를 극대화할 수 있다.

2.1. Claude Code의 다양한 활용 사례 [63]

  1. 코드베이스 탐색 및 온보딩 [64]
    1. 새로운 코드베이스에 투입될 때, Claude Code는 기능 구현 위치나 팀의 패턴 등을 빠르게 파악하여 온보딩 과정을 가속화한다. [64]
    2. 특정 기능의 구현 위치를 묻거나, 파일의 Git 기록을 분석하여 코드 변경 이력을 파악하는 데 활용할 수 있다. [68]
  2. 사고 파트너(Thought Partner)로서의 활용 [69]
    1. 코드 작성 전에 Claude Code에게 기능 구현 방안을 탐색하고 2~3가지 옵션을 제안해달라고 요청하여 아이디어를 검증하는 데 사용할 수 있다. [69]
    2. Claude Code가 제안한 아이디어를 바탕으로 함께 검증한 후 프로젝트를 시작할 수 있다. [72]
  3. 코드 작성 및 빌드 [74]
    1. 초기 개발(Zero to One): 빈 디렉토리에서 앱이나 게임을 빌드하는 데 활용할 수 있다. [74]
    2. 기존 코드베이스 작업: 기존 코드베이스에서 유닛 테스트를 쉽게 추가하여 코드 커버리지를 높이는 데 유용하다. [76]
    3. 커밋 및 PR 메시지 작성: 작업 완료 후 커밋 메시지나 PR 메시지 작성을 Claude Code에 맡길 수 있다. [80]
  4. 배포 및 라이프사이클 관리 [82]
    1. Claude Code SDK를 사용하여 CI/CD 파이프라인에 통합하거나 GitHub에서 프로그래밍 방식으로 활용할 수 있다. [82]
  5. 지원 및 확장성 [85]
    1. 디버깅: 오류를 더 빠르게 디버깅하는 데 도움을 준다. [85]
    2. 코드베이스 마이그레이션: 오래된 Java 버전을 새 버전으로 업그레이드하거나 PHP를 React/Angular로 전환하는 등 대규모 코드베이스 마이그레이션 프로젝트를 더 쉽게 만든다. [86]
    3. CLI 도구 활용: Git, Docker, BigQuery 등 다양한 CLI 도구에 능숙하여 복잡한 Git 리베이스 문제 해결 등 터미널 작업을 효율적으로 처리한다. [90]

2.2. Claude Code 모범 사례 [92]

  1. claude.md 파일 활용 [92]
    1. Claude Code는 에이전트이며 기억력이 없으므로, claude.md 파일은 세션 간 또는 팀원 간 상태를 공유하는 주요 방법이다. [93]
    2. Claude Code를 시작할 때, 작업 디렉토리에 있는 claude.md 파일의 내용이 프롬프트에 자동으로 포함되어 Claude에게 중요한 지침을 전달한다. [95]
    3. claude.md 파일의 활용 예시: [97]
      1. 프로젝트 내에 두어 팀원들과 공유한다. [98]
      2. 홈 디렉토리에 두어 어떤 작업에서든 Claude가 항상 알아야 할 내용을 포함시킨다. [99]
      3. 유닛 테스트 실행 방법, 프로젝트 구조 개요, 테스트 위치, 모듈 정보, 스타일 가이드 등을 명시하여 Claude의 작업을 돕는다. [100]
  2. 권한 관리(Permission Management) [102]
    1. Claude Code는 읽기 작업은 자유롭게 수행하지만, 쓰기나 Bash 명령 실행 등 시스템 변경 가능성이 있는 작업에는 사용자 승인을 요구한다. [103]
    2. Shift + Tab을 눌러 자동 승인 모드(auto-accept mode)를 활성화하거나, 설정에서 특정 Bash 명령(예: npm run test)을 항상 승인하도록 구성하여 워크플로우 속도를 높일 수 있다. [106]
  3. 통합 설정(Integration Setup) [110]
    1. Claude Code는 터미널에 능숙하므로, CLI(Command Line Interface)를 통해 접근 가능한 애플리케이션과 통합하면 더 많은 작업을 수행할 수 있다. [110]
    2. GitHub의 GH와 같은 CLI 도구를 설치하거나, MCP(Multi-Context Programming) 서버를 연결하여 기능을 확장할 수 있다. [111]
    3. 잘 알려지고 문서화된 CLI 도구를 사용하는 것이 MCP 서버를 사용하는 것보다 권장된다. [113]
    4. 내부적으로 사용하는 도구(예: Anthropic의 coup)도 claude.md 파일에 명시하여 Claude Code가 활용하도록 할 수 있다. [115]
  4. 컨텍스트 관리(Context Management) [116]
    1. Claude Code는 에이전트로서 도구를 호출하며 컨텍스트가 계속 쌓인다. [116]
    2. Anthropic 모델은 20만 토큰의 컨텍스트 창을 가지며, 이 한계에 도달할 수 있다. [117]
    3. 컨텍스트 창이 가득 찰 때 두 가지 옵션이 있다. [119]
      1. /clear: claude.md 파일을 제외한 모든 컨텍스트를 지우고 처음부터 다시 시작한다. [121]
      2. /compact: 현재까지의 대화를 요약하여 새로운 세션의 시작점으로 사용한다. [122]
      3. /compact 기능은 컨텍스트 창이 가득 찼을 때 효율적인 워크플로우를 유지하기 위해 많은 노력을 기울여 튜닝되었다. [125]
  5. 효율적인 워크플로우(Efficient Workflows) [126]
    1. 계획 및 할 일 목록 활용: 버그 수정 시, Claude Code에게 버그 원인을 탐색하고 수정 계획을 세워달라고 요청하여 시간을 절약하고 계획을 검증할 수 있다. [127]
    2. 할 일 목록 기능: Claude Code가 큰 작업을 수행할 때 할 일 목록을 생성하는데, 이를 주시하며 잘못된 방향으로 가는 경우 Escape 키를 눌러 개입할 수 있다. [130]
    3. 스마트 코딩(Smart Vibe Coding): Claude Code가 작업을 수행하도록 두는 것도 좋지만, 다음과 같은 방법을 통해 효율성을 높일 수 있다. [132]
      1. 테스트 주도 개발(TDD): 작은 변경 사항을 적용하고 테스트를 실행하여 통과 여부를 확인한다. [134]
      2. 정기적인 검사: TypeScript 및 린팅 검사를 항상 수행하도록 한다. [134]
      3. 정기적인 커밋: 잘못된 방향으로 진행될 경우 되돌릴 수 있도록 정기적으로 커밋한다. [134]
  6. 스크린샷을 통한 가이드 및 디버깅 [135]
    1. Claude Code는 멀티모달 모델을 기반으로 하므로, 스크린샷이나 이미지 파일을 제공하여 웹사이트 구축 등 시각적 정보를 활용한 작업을 지시할 수 있다. [135]
  7. 고급 기술(Advanced Techniques) [137]
    1. 여러 개의 Claude Code 동시 사용: 여러 개의 Claude Code 인스턴스를 동시에 실행하여 작업을 오케스트레이션할 수 있다. [137]
    2. Escape 키 활용: Claude Code가 작업하는 동안 Escape 키를 눌러 작업을 중단하고 개입하여 방향을 수정할 수 있다. [144]
      1. Escape 키를 두 번 누르면 대화 기록으로 돌아가 대화 흐름을 재설정할 수 있는 숨겨진 기능이 있다. [148]
    3. MCP(Multi-Context Programming) 서버 활용: Bash 및 기본 도구만으로는 해결할 수 없는 작업이 있을 때 MCP 서버를 고려할 수 있다. [150]
    4. 헤드리스 자동화(Headless Automation): Claude Code를 프로그래밍 방식으로 활용하는 것으로, GitHub Actions에 통합하는 등 다양한 창의적인 활용 가능성이 있다. [152]

2.3. Claude Code의 최신 기능 및 업데이트 [157]

  1. 모델 전환 기능 [157]
    1. Claude Code 내에서 /model 명령어를 사용하여 현재 실행 중인 모델을 확인하고, /config 명령어를 통해 Sonnet에서 Opus와 같은 다른 모델로 전환할 수 있다. [160]
    2. 사용자에게 적합한 모델을 선택하여 사용할 수 있다. [167]
  2. 도구 호출 간 사고(Thinking between tool calls) [168]
    1. Claude 4부터는 모델이 도구 호출 사이에 '생각'할 수 있게 되어, 문제 해결 능력이 향상되었다. [168]
    2. think hard 명령어를 사용하면 Claude Code가 프로젝트 내용을 파악하기 위해 도구 호출 사이에 사고 과정을 거치는 것을 확인할 수 있다. [171]
    3. 버그 해결 등 복잡한 작업 시 think hard를 활용하는 것이 권장된다. [176]
  3. VS Code 및 JetBrains 통합 [177]
    1. VS Code 및 JetBrains와 같은 IDE(통합 개발 환경)와의 통합 기능이 개선되어, Claude Code가 현재 작업 중인 파일을 인식하고 관련 작업을 수행할 수 있다. [177]
  4. 업데이트 확인 방법 [182]
    1. Anthropic의 GitHub 프로젝트에 있는 Claude Code 저장소에서 변경 로그를 확인하여 최신 업데이트를 파악할 수 있다. [182]
    2. 발표자 자신도 매주 변경 로그를 확인하며 최신 정보를 놓치지 않으려 노력한다. [185]
  5. claude.md 파일 관련 질문 및 답변 [192]
    1. 여러 개의 claude.md 파일: 같은 디렉토리에는 여러 개를 둘 수 없지만, 하위 디렉토리나 홈 디렉토리에 둘 수 있다. [192]
      1. 기본적으로는 현재 작업 디렉토리의 claude.md 파일만 읽지만, claude.md 파일 내에서 @ 기호를 사용하여 다른 파일을 참조할 수 있다. [198]
    2. claude.md 지시 불이행 문제: Claude 3 모델에서는 claude.md에 "인라인 주석을 남기지 말라"는 지시를 해도 모델이 주석을 남기는 문제가 있었다. [204]
      1. 이는 모델 자체의 문제였으며, Claude 4 모델에서는 지시를 더 잘 따르도록 개선되었다. [214]
      2. Claude 4로 전환하면서 claude.md 파일을 다시 검토하여 필요한 내용을 추가하거나 불필요한 내용을 제거하는 것이 좋다. [217]
  6. 멀티 에이전트 실행 및 병렬화 [221]
    1. Anthropic은 현재 '작동하는 단순한 것'을 추구하며 단일 에이전트 방식에 집중하고 있다. [221]
    2. 여러 에이전트 간 컨텍스트 공유가 필요하다면, 공유 마크다운 파일에 상태를 기록하고 다른 에이전트가 이를 읽도록 하는 방식을 사용할 수 있다. [227]
    3. 예를 들어, 한 Claude Code가 ticket.md 파일에 작업을 기록하면, 다른 Claude Code가 이 파일을 읽고 작업을 이어받는 방식이다. [228]
    4. 향후 제품 내에서 더 네이티브한 방식으로 멀티 에이전트 간 컨텍스트 공유를 지원할 가능성도 있다. [232]