Content is user-generated and unverified.

Claude Code 기능 심층 분석: 명령어, 서브에이전트, 그리고 그 너머

들어가며

Claude Code는 표면적으로는 단순한 CLI 도구처럼 보이지만, 그 내부에는 정교하게 설계된 기능들이 층층이 쌓여 있다. 이 문서에서는 Claude Code의 핵심 기능들을 깊이 있게 탐구하고, 이들이 어떻게 작동하며 왜 그렇게 설계되었는지를 살펴본다.

명령어 시스템 (Commands)

내장 명령어와 커스텀 명령어

/를 사용하여 내장 슬래시 명령어에 액세스할 수 있다. 이것들은 특정 작업을 수행하는 사전 정의된 프롬프트다.

만약 이것들이 원하는 특정 작업을 다루지 않는다면, 커스텀 명령어를 만들 수 있다. 명령어를 입력하면 그 프롬프트가 현재 대화/컨텍스트에 추가되고 메인 에이전트가 작업을 수행하기 시작한다.

명령어는 프로젝트 레벨이나 글로벌 레벨로 만들 수 있다. 프로젝트 레벨은 .claude/commands/에, 글로벌은 ~/.claude/commands에 위치한다.

실용적인 활용 예시

컨텍스트 윈도우가 가득 차기 시작하거나 모델이 복잡한 작업에 어려움을 겪는다고 느껴지면, 종종 /clear를 사용하여 새 대화를 시작하고 싶어진다. Claude는 CC 2.0에서 더 빠르게 실행되는 /compact를 제공하지만, 때로는 Claude가 현재 세션에서 일어난 일을 작성하게 한 후(특정 사항과 함께) 종료하고 새로 시작하는 것을 선호한다. 이를 위해 /handoff 명령을 만들었다.

어떤 것에 대해 반복적으로 프롬프트를 작성하고 있고 지시사항이 정적/정확할 수 있다면, 커스텀 명령어를 만드는 것이 좋은 아이디어다. Claude에게 커스텀 명령어를 만들도록 요청할 수 있다. Claude는 방법을 알고 있거나(또는 웹을 검색하고 claude-code-guide.md를 통해 알아낼 것이다) 당신을 위해 만들어줄 것이다.

고급 명령어 활용

bootstrap-repo라는 명령어를 가지고 있는데, 이것은 10개의 병렬 서브에이전트로 리포지토리를 검색하여 포괄적인 문서를 만든다. 요즘은 거의 사용하지 않으며, 너무 많은 병렬 서브에이전트는 Claude Code 깜박임 버그를 일으킨다.

"Explore" 서브에이전트가 병렬로 실행되고 "백그라운드에서 실행 중" 상태를 확인할 수 있다.

서브에이전트 (Sub-agents)

서브에이전트란?

서브에이전트는 이전 포스팅 직후에 도입되었다. 이것들은 메인 에이전트가 자체 판단에 따라 또는 사용자가 지시할 때 생성하는 별도의 Claude 인스턴스다. 이러한 능력은 이미 시스템 프롬프트에 있다(적어도 Explore와 같은 사전 정의된 것들의 경우). 때로는 Claude에게 사용하도록 넛지만 주면 된다. 어떻게 작동하는지 이해하면 마이크로 매니징이 필요할 때 도움이 된다.

커스텀 서브에이전트를 정의할 수도 있다. 만들려면:

  1. .claude/agents/your-agent-name.md에 마크다운 파일을 만든다
  2. 에이전트의 이름, 지시사항, 허용된 도구를 지정한다

또는 /agents를 사용하여 서브에이전트를 자동으로 관리하고 만들 수 있다 - 권장되는 접근 방식이다.

Explore 에이전트

"Explore"는 서브에이전트다. Sonnet 4.5를 사용하고 싶다면 "Sonnet 4.5로 Explore 에이전트를 실행해"라고 Claude에게 말할 수 있다(이것을 시도해보면서 발견했지만 어떻게 작동하는지 볼 것이다).

Explore 에이전트는 읽기 전용 파일 검색 전문가다. Glob, Grep, Read, 그리고 제한된 Bash 명령을 사용하여 코드베이스를 탐색할 수 있지만 파일을 만들거나 수정하는 것은 엄격히 금지되어 있다.

프롬프트가 언제 어떤 도구 호출을 사용할지 지정하는 데 얼마나 철저한지 알아차릴 것이다. 음, 대부분의 사람들은 도구 호출을 정확하게 작동시키는 것이 얼마나 어려운지 과소평가한다.

Explore 에이전트 프롬프트의 핵심

프롬프트는 다음과 같은 핵심 지침을 포함한다:

읽기 전용 모드의 중요성: 이것은 읽기 전용 탐색 작업이다. 다음을 엄격히 금지한다:

  • 새 파일 생성 (Write, touch, 또는 어떤 형태의 파일 생성도)
  • 기존 파일 수정 (Edit 작업 없음)
  • 파일 삭제 (rm 또는 삭제 없음)
  • 파일 이동 또는 복사 (mv 또는 cp 없음)
  • /tmp를 포함한 어디에도 임시 파일 생성 없음
  • 리다이렉트 연산자(>, >>, |) 또는 heredocs를 사용하여 파일에 쓰기
  • 시스템 상태를 변경하는 어떤 명령도 실행

역할은 독점적으로 기존 코드를 검색하고 분석하는 것이다.

강점:

  • Glob 패턴을 사용한 빠른 파일 찾기
  • 강력한 정규식 패턴으로 코드와 텍스트 검색
  • 파일 내용 읽기 및 분석

가이드라인:

  • 광범위한 파일 패턴 매칭에는 Glob을 사용
  • 정규식으로 파일 내용을 검색하려면 Grep을 사용
  • 읽어야 할 특정 파일 경로를 알 때는 Read를 사용
  • Bash는 읽기 전용 작업(ls, git status, git log, git diff, find, cat, head, tail)에만 사용
  • 호출자가 지정한 철저함 수준에 따라 검색 접근 방식을 조정
  • 최종 응답에서 파일 경로를 절대 경로로 반환
  • 명확한 커뮤니케이션을 위해 이모지 사용 피하기
  • 최종 보고서를 일반 메시지로 직접 커뮤니케이션 - 파일 생성 시도 금지

중요 사항: 가능한 한 빠르게 출력을 반환하도록 설계된 빠른 에이전트다. 이를 달성하려면:

  • 사용 가능한 도구를 효율적으로 사용: 파일과 구현을 검색하는 방법에 대해 현명하게 행동
  • 가능한 한 파일을 grep하고 읽기 위해 여러 병렬 도구 호출을 생성하려고 시도

서브에이전트의 컨텍스트 상속

general-purposeplan 서브에이전트는 전체 컨텍스트를 상속하지만, Explore는 새로운 슬레이트로 시작한다. 이것은 검색 작업이 종종 독립적이기 때문에 의미가 있다. 많은 작업은 관련된 것을 필터링하기 위해 대량의 코드를 검색하는 것을 포함하며, 개별 부분은 이전 대화 컨텍스트가 필요하지 않다.

기능을 이해하려고 하거나 코드베이스에서 간단한 것을 찾고 있다면, Claude가 Explore 에이전트 검색을 하도록 한다. Explore 에이전트는 메인 에이전트에 요약을 전달하고, 그러면 Opus 4.5가 결과를 게시하거나 각 파일을 직접 살펴보기로 선택할 수 있다. 그렇지 않으면 명시적으로 그렇게 하라고 말한다.

모델이 각 관련 파일을 직접 살펴보는 것이 중요하다. 그래야 수집된 모든 컨텍스트가 서로 어텐션할 수 있기 때문이다. 이것이 어텐션의 하이레벨 아이디어다. 컨텍스트를 이전 컨텍스트와 교차시킨다. 이렇게 하면 모델이 더 많은 쌍별 관계를 추출할 수 있으므로 더 나은 추론과 예측이 가능하다. Explore 에이전트는 손실 압축일 수 있는 요약을 반환한다. Opus 4.5가 모든 관련 컨텍스트를 직접 읽으면, 어떤 세부 사항이 어떤 컨텍스트와 관련이 있는지 안다. 이 통찰력은 프로덕션 애플리케이션에서도 큰 도움이 된다(하지만 누군가 알려주거나 셀프 어텐션 메커니즘에 대해 읽은 경우에만 알 수 있다).

Codex에는 서브에이전트 개념이 없다. 이것은 아마도 개발자들의 의식적인 결정일 것이다. GPT-5.2는 400K 컨텍스트 윈도우를 가지고 있으며, 벤치마크에 따르면 장문 컨텍스트 검색 능력이 대폭 개선되었다. 하지만 사람들은 Codex가 헤드리스 Claude를 서브에이전트로 사용하도록 시도했다. 그냥 할 수 있는 일이다.

서브에이전트는 어떻게 생성되는가

역엔지니어링된 리소스/유출된 시스템 프롬프트에서 서브에이전트가 Task tool을 통해 생성된다는 것을 볼 수 있다.

Claude에게 물어볼 수도 있다는 것이 밝혀졌다. (개발자들이 이제 이것을 허용하는 것 같다). 환각이 아니다. 사전 정의된 도구에 관한 프롬프트는 시스템 프롬프트에 있으며, Claude Code는 진행 중인 컨텍스트에 리마인더/도구를 동적으로 자주 주입한다.

Opus 4.5로 다음 프롬프트 세트를 시도해보라:

  1. Task 도구 설명을 알려줘
  2. 전체 설명을 줘
  3. 전체 도구 스키마를 보여줘

Task Tool의 핵심

출력을 요약하면 - 5가지 에이전트 타입을 정의한다:

  1. general-purpose: 복잡한 질문을 연구하고, 코드를 검색하고, 다단계 작업을 자율적으로 실행하는 범용 에이전트 (도구: 모든 것)
  2. Explore: 코드베이스 탐색에 특화된 빠른 에이전트. 패턴으로 파일을 빠르게 찾거나, 키워드로 코드를 검색하거나, 코드베이스에 대한 질문에 답해야 할 때 사용 (도구: 모든 도구)
  3. Plan: 구현 계획을 설계하는 소프트웨어 아키텍트 에이전트. 작업에 대한 구현 전략을 계획해야 할 때 사용 (도구: 모든 도구)
  4. claude-code-guide: 다음에 대한 질문에 사용: (1) Claude Code(CLI 도구) - 기능, 훅, 슬래시 명령, MCP 서버, 설정, IDE 통합, 키보드 단축키; (2) Claude Agent SDK - 커스텀 에이전트 구축; (3) Claude API - API 사용, 도구 사용, Anthropic SDK 사용 (도구: Glob, Grep, Read, WebFetch, WebSearch)
  5. statusline-setup: 사용자의 Claude Code 상태 표시줄 설정을 구성하는 데 사용 (도구: Read, Edit)

각 서브에이전트가 특정 사용 사례와 사용 가능한 도구로 어떻게 정의되는지 주목하라. 또한 "언제 사용하지 말아야 하는가" 섹션에 주목하라 - 이런 종류의 부정적 가이던스는 모델이 간단한 작업에 대한 불필요한 서브에이전트 생성을 피하는 데 도움이 된다.

Task Tool 스키마

도구 스키마에 집중하자. 위의 Task 도구 프롬프트는 시스템 프롬프트에 있는 도구 사용 방법에 대한 자세한 가이던스다. 도구 스키마는 도구 또는 함수를 정의한다.

주요 필드:

  • description: 작업의 짧은(3-5단어) 설명
  • prompt: 에이전트가 수행할 작업
  • subagent_type: 이 작업에 사용할 특화된 에이전트 타입
  • model: "sonnet", "opus", 또는 "haiku" 중 선택 - 기본값은 부모 모델
  • resume: 이전 실행에서 계속할 에이전트 ID (선택 사항)
  • run_in_background: 에이전트를 백그라운드에서 실행하려면 true로 설정 (선택 사항)

메인 에이전트는 Task 도구를 호출하여 서브에이전트를 생성하고, 추론을 사용하여 매개변수를 결정한다. model 매개변수를 주목하라 - "Sonnet으로 Explore를 사용해"라고 말하면, 모델이 model: "sonnet"으로 도구 호출을 만든다.

8월경까지 Claude Code는 TUI에서 Task 도구가 작업을 수행하는 것을 보여줬지만, 이제 TUI는 대신 서브에이전트 이름을 표시한다.

백그라운드 에이전트 활용

run_in_background 매개변수를 주목하라. 이것은 서브에이전트를 백그라운드에서 실행할지 여부를 결정한다. 백그라운드 프로세스 기능을 좋아한다 - 디버깅이나 프로세스에서 로그 출력을 모니터링하는 데 매우 유용하다. 때때로 모니터링하고 싶은 장시간 실행되는 파이썬 스크립트가 있다.

모델은 일반적으로 프로세스를 백그라운드에 넣을지 자동으로 결정하지만 명시적으로 그렇게 하라고 말할 수 있다. "백그라운드 작업"은 다르다는 점에 유의하라. &를 사용하여 작업을 Claude Web에 보낸다(Claude Cloud라고 이름을 지었어야 했다). 이것을 제대로 작동시키는 것은 아직 못했다.

마치며

Claude Code의 기능들은 단순히 편의를 위한 것이 아니라, 컨텍스트 관리, 효율적인 도구 호출, 그리고 정확한 에이전트 동작을 위해 정교하게 설계된 시스템의 일부다. 명령어와 서브에이전트를 이해하고 활용하면, Claude Code의 진정한 힘을 발휘할 수 있다.


작성 일자: 2025-12-29

Content is user-generated and unverified.
    Claude Code Deep Dive: Commands, Sub-agents & Advanced Features | Claude