4장 §2-A

4장 §2-A · Claude-Focused Multi-Agent Team Practice

빈 실습 폴더에서 시작해 Claude Desktop App/Claude Code 위주로 시나리오를 따라해보는 실습 가이드 — Desktop 앱을 기준으로 안내하고 CLI 대응을 이어서 소개한다  |  ← 4장 §1 레퍼런스 문서로 돌아가기  |  4장 §2-B Antigravity 중심 →

대상 버전/범위Claude Code/App 2026-07 릴리스 — Claude를 중심으로 안내하며, Antigravity 대응은 4장 §2-B를 참조
이 파일의 목적서브에이전트 정의·호출, 순차 파이프라인, 동적 팀 구성·워크플로우 조합, 병렬 실행, 모델 티어 비교를 Claude Desktop App/Code에서 손으로 따라해보는 5단계 실습 제공
레퍼런스 문서4장 §1 공통 · 4장 §1-A Claude 상세 · 4장 §1-B Antigravity 상세 — 각 시나리오에서 링크로 연결됩니다
작성일2026년 7월 14일
이 과정 전체가 따르는 원칙 — 아래 모든 시나리오는 먼저 서브에이전트의 역할을 도구 중립적인 AGENTS.md 명세로 적고, 그 명세를 Claude 계열에서는 사전 정의 서브에이전트 파일로 "구현"하는 순서를 따른다(2장 §5 AGENTS.md 참고). 정의는 하나, 실행 방식만 도구별로 다르다는 원칙을 손으로 확인하는 것이 이 실습의 핵심 목표다. Antigravity에서의 대응 방법은 4장 §2-B를 참조한다.

준비: 필요한 프로그램 설치

아래 실습은 Claude Desktop App과 Claude Code(CLI) 위주로 진행된다. 로컬 환경에 이 도구들이 아직 없다면, 이 핸드북에 함께 담아 둔 환경 설정 자동화 도구인 setup 가이드가 이 장의 실습에 정확히 필요한 구성을 자동으로 설치해준다. 안내에 따라 스크립트를 내려받아 로컬에서 실행하면 된다.

📦 설치 전 확인 사항

스크립트를 실행하기 전에 사전 설치 체크리스트를 먼저 읽어본다. 이 문서에는 다음 전제 조건이 정리되어 있다.

  • 활성 상태의 Claude Pro/Max 구독 그리고 Antigravity 사용을 위한 Google 계정 (개별 API 키가 아니라 구독제/계정 기반 플랜이어야 한다)
  • gh auth login을 진행할 수 있는 GitHub 계정
  • 최소 5GB의 여유 디스크 공간
  • 관리자(admin) 또는 sudo 권한
GitHub 계정이 아직 없다면
① 브라우저에서 github.com/signup에 접속한다.
② 이메일 주소, 비밀번호, 사용자 이름(username)을 입력한다 — username은 나중에 저장소 URL(github.com/<username>/...)에 그대로 쓰이므로 신중히 정한다.
③ 자동 가입 방지를 위한 퍼즐/코드 인증을 통과한다.
④ 가입 시 입력한 이메일로 온 인증 메일을 열어 이메일 인증을 완료한다 — 이 단계를 건너뛰면 이후 gh auth login이나 저장소 생성이 막힐 수 있다.
⑤ 무료(Free) 플랜으로 가입하면 충분하다 — 이 핸드북의 실습·PR 연습에는 유료 플랜이 필요 없다.
가입이 끝나면 GitHub CLI(gh)가 위 설치 스크립트에 포함돼 함께 설치되고, 아래 gh auth login 명령으로 터미널을 그 계정과 연결한다.
gh auth login
# 안내에 따라: GitHub.com 선택 → HTTPS 선택 → 브라우저로 로그인(권장) 선택
# 브라우저가 열리면 방금 만든 계정으로 로그인하고 인증 코드를 확인한다

Windows에서 설치하기

이 핸드북의 경로 표기가 Windows 기준이므로, Windows 사용자는 아래 명령으로 5throck/setup 저장소를 클론한 뒤, PowerShell을 관리자 권한으로 실행해서 이어지는 명령을 돌린다.

PowerShell을 관리자 권한으로 여는 법
① 시작 메뉴를 열고 PowerShell을 검색한다.
② 검색 결과의 "Windows PowerShell"을 마우스 우클릭한다.
③ 나오는 메뉴에서 "관리자 권한으로 실행"을 선택한다.
④ 사용자 계정 컨트롤(UAC) 창이 뜨면 "예"를 눌러 승인한다.
창 제목 표시줄에 관리자: Windows PowerShell처럼 "관리자"가 붙어 있으면 제대로 연 것이다. winget 설치 등 일부 단계는 관리자 권한 없이 실행하면 오류가 나거나 조용히 건너뛰어질 수 있다.
git clone https://github.com/5throck/setup.git
cd ./setup
powershell -ExecutionPolicy Bypass -File .\setup-windows.ps1
# 선택 옵션: -WSL2, -WezTerm, -Docker, -Force (이미 설치된 도구도 재설치)

스크립트가 끝나면 터미널을 완전히 닫았다가 다시 열어야 PATH 변경 사항이 적용된다.

macOS / Linux에서 설치하기

아래 명령으로 5throck/setup 저장소를 클론해서 사용한다. macOS는 setup-mac.sh, Linux는 setup-linux.sh를 실행하며, 둘 다 --wezterm, --docker 선택 플래그를 지원한다.

git clone https://github.com/5throck/setup.git

# macOS
cd ./setup && bash setup-mac.sh

# Linux
cd ./setup && bash setup-linux.sh

설치 검증하기

운영체제와 무관하게 setup-common.ts를 bun으로 실행하면 설치 상태를 점검하는 체크리스트 표가 출력된다. 모든 항목이 ✅로 표시되면 아래 실습을 진행할 준비가 된 것이다.

cd ./setup && bun setup-common.ts

이 프로젝트가 설치하는 도구 중 이 장의 4도구 실습과 직접 관련된 것은 다음과 같다. Claude Desktop App, claude(Claude Code CLI), Antigravity(Desktop), agy(Antigravity CLI), 그리고 .claude/agents/*.md 기반 서브에이전트 실행에 필요한 bun, 이후 장에서 쓰이는 gh(GitHub CLI)까지 함께 설치된다.

Antigravity CLI(agy)는 별도 런타임 설치가 필요 없는 단일 컴파일 바이너리다 — 압축 해제 후 PATH에 넣기만 하면 바로 실행된다. 옛 자료에 남아 있는 "Gemini 명령줄 인터페이스(CLI)를 npm으로 전역 설치" 같은 안내는 더 이상 유효하지 않다. 최신 설치 방법은 antigravity.google/docs/cli/getting-started에서 확인한다.
설치 중 문제가 생기면 Windows 기준 %USERPROFILE%\workshop-setup-logs\ 폴더에 로그가 남는다. 문제를 해결할 때 이 로그부터 확인한다.
● 초급 Getting Started 커스텀 서브에이전트를 하나 만들고 Claude Desktop App에서 호출을 관찰하는 첫 단계
G-1 초급 첫 커스텀 서브에이전트 만들고 호출하기
하네스를 처음 써보는 개발자가 실습 전용 빈 폴더 harness-lab/를 새로 만들고, reviewer 역할을 도구 중립적인 AGENTS.md 명세로 먼저 적어 둔 뒤, Claude Desktop App에서 사전 정의 서브에이전트로 "구현"해 호출해본다. 이 폴더는 실습 전용이므로 다른 프로젝트 파일과 섞이지 않는다.
단계별 실행
  1. ① 실습 폴더 생성 및 진입

    현재 폴더 아래 harness-lab 폴더를 새로 만들고 그 안으로 이동한다. 이후 모든 명령은 이 폴더 안에서 실행한다.

    mkdir -p harness-lab
    cd harness-lab
  2. ② 공통 역할 명세 작성 — AGENTS.md

    Claude나 Antigravity, 그 외 AGENTS.md 표준을 지원하는 어떤 도구로 열어도 같은 의미로 읽히도록, reviewer 역할을 도구 종속적인 표현 없이 순수 텍스트로 적는다. 이 파일 하나가 "무엇을 하는 역할인가"의 유일한 원본이 되고, 아래 두 도구는 각자의 방식으로 이 원본을 구현할 뿐이다. macOS/Linux/Git Bash에서는 아래 명령을 그대로 쓴다.

    cat > AGENTS.md << 'EOF'
    ## Agent: reviewer
    
    역할: 텍스트 파일의 오탈자, 논리적 허점, 개선점을 검토한다.
    입력: 검토 대상 텍스트 파일 경로
    출력: 오탈자 · 논리적 허점 · 개선점 목록
    권한: 읽기 전용 — 파일을 직접 수정하지 않는다.
    EOF

    Windows PowerShell에서는 cat 명령 자체는 Get-Content의 별칭으로 파일 읽기에 그대로 쓸 수 있다. 다만 << 'EOF'처럼 여러 줄을 직접 넣는 heredoc 문법은 지원하지 않으므로, 같은 내용은 따옴표 있는 here-string(@'...'@)으로 만들어 Set-Content로 파일에 쓴다.

    @'
    ## Agent: reviewer
    
    역할: 텍스트 파일의 오탈자, 논리적 허점, 개선점을 검토한다.
    입력: 검토 대상 텍스트 파일 경로
    출력: 오탈자 · 논리적 허점 · 개선점 목록
    권한: 읽기 전용 — 파일을 직접 수정하지 않는다.
    '@ | Set-Content AGENTS.md
Claude Desktop App — AGENTS.md 명세를 사전 정의 서브에이전트로 구현

터미널이나 별도 에디터에서 미리 파일을 만들지 않는다. 아래 세 단계를 그대로 따라간다 — 회색 코드 상자는 전부 "복사" 버튼으로 그대로 복사해서 붙여넣으면 되는 내용이다.

  1. ① Claude Desktop App에서 프로젝트 열기

    Claude Desktop App을 실행하고, 방금 만든 harness-lab/ 폴더를 프로젝트로 연다.

  2. ② 서브에이전트 생성 요청 — 채팅창에 아래 문장을 그대로 붙여넣고 전송
    AGENTS.md에 적힌 reviewer 역할 명세를 그대로 따라서, .claude/agents/reviewer.md에 reviewer 서브에이전트를 만들어줘. tools는 Read, Grep만 허용하고 model은 sonnet으로 설정해줘.
    Claude Desktop App이 AGENTS.md의 "역할/입력/출력/권한" 명세를 읽고, 그 내용을 .claude/agents/reviewer.md의 YAML frontmatter(description, tools)와 시스템 프롬프트로 옮겨 Write 도구로 직접 생성한다. 명세는 그대로고 표현 형식만 도구에 맞게 바뀐 것이다 — 생성이 끝나면 채팅에 표시된 파일 내용을 AGENTS.md와 비교해본다.
  3. ③ 검토 대상 파일 생성 + 서브에이전트 호출 — 같은 채팅창에 이어서 붙여넣고 전송
    notes.txt 파일을 만들고 "이 프로젝트는 매우 좋다. 이것은 아주 좋다."라고 써넣은 뒤, reviewer 서브에이전트로 notes.txt를 검토해줘.
    Claude Desktop App이 Agent(Task) 툴을 description="notes.txt 검토", subagent_type="reviewer"로 호출한다. 화면에는 서브에이전트가 스폰되는 과정과, 작업을 마친 뒤 메인 세션으로 돌아오는 요약 결과가 순서대로 표시된다.

Claude Code(CLI)에서도 동일하게 — 터미널에서 claude를 실행한 뒤 ②③의 문장을 그대로 채팅으로 붙여넣으면, 명령줄 인터페이스(CLI)가 똑같이 AGENTS.md 명세를 읽고 .claude/agents/reviewer.md를 직접 생성·호출한다. CLI에는 추가로 PostToolUse 등 자동화 훅이 발화한다는 차이가 있다(App에서는 훅이 발화하지 않는다).

결과 확인harness-lab/.claude/agents/reviewer.md 파일이 실제로 생성됐는지, 그 안의 description·tools·model 필드가 요청한 대로인지 확인한다. 마지막 응답에는 오탈자·논리적 허점·개선점을 나눈 목록이 보여야 정상이다 — reviewer가 "수정했습니다" 같은 답을 하면 tools 제한이 잘못 적용된 것이다.
흔한 실패 — 서브에이전트가 호출되지 않고 메인 세션이 직접 notes.txt를 검토해버린다면, ② 단계 문장에 reviewer 서브에이전트로라는 표현이 빠졌거나 .claude/agents/reviewer.md 생성이 먼저 완료되지 않은 채로 ③을 요청한 경우다. ②의 응답에서 파일 생성이 끝났는지 먼저 확인한 뒤 ③을 보낸다.
● 중급 Daily Workflow 메인 세션이 오케스트레이터가 되어 writer와 reviewer 두 전문 에이전트를 순서대로 지휘하는 실무 패턴
D-1 중급 writer → reviewer 2단계 파이프라인
G-1을 마친 실무자가 같은 harness-lab/ 폴더에서, 두 번째 역할 writer도 G-1과 같은 방식으로 AGENTS.md에 먼저 명세한 뒤, Claude Desktop App에 사전 정의 서브에이전트로 구현한다. writer가 먼저 초안을 쓰고 reviewer가 그 결과를 비평하는 파이프라인을 순서를 지켜 지휘하게 한다.
사용자 요청 writer.md 초안 작성 수정 요청 시 writer로 되돌아감 reviewer.md 피드백/승인 최종 결과물 완성
단계별 실행
  1. 공통 역할 명세 추가 — AGENTS.md에 writer 항목 이어쓰기

    G-1에서 만든 같은 AGENTS.mdwriter 역할을 이어서 적는다. reviewer 항목은 그대로 두고 아래 내용만 추가한다. macOS/Linux/Git Bash에서는 아래 명령을 그대로 쓴다.

    cat >> AGENTS.md << 'EOF'
    
    ## Agent: writer
    
    역할: 주어진 주제로 3~5문장 분량의 짧은 초안을 작성한다.
    입력: 주제, 저장할 파일 경로
    출력: 초안 텍스트 파일
    권한: 쓰기 허용 — 지정된 파일에만 저장한다.
    handoff_to: reviewer (초안 완료 후 검토로 이어짐)
    EOF

    Windows PowerShell에서는 here-string을 Add-Content로 이어붙인다(Set-Content는 파일을 덮어쓰므로 반드시 Add-Content를 써야 reviewer 항목이 지워지지 않는다).

    @'
    
    ## Agent: writer
    
    역할: 주어진 주제로 3~5문장 분량의 짧은 초안을 작성한다.
    입력: 주제, 저장할 파일 경로
    출력: 초안 텍스트 파일
    권한: 쓰기 허용 — 지정된 파일에만 저장한다.
    handoff_to: reviewer (초안 완료 후 검토로 이어짐)
    '@ | Add-Content AGENTS.md
Claude Desktop App — 메인 세션이 Agent 호출을 순차 디스패치

G-1과 마찬가지로 파일을 미리 준비하지 않는다. G-1에서 열어 둔 같은 harness-lab/ 채팅에서 이어서 진행한다.

  1. ① writer 서브에이전트 생성 요청 — 채팅창에 그대로 붙여넣고 전송
    AGENTS.md에 적힌 writer 역할 명세를 그대로 따라서, .claude/agents/writer.md에 writer 서브에이전트를 만들어줘. tools는 Write, Read를 허용하고 model은 sonnet으로 설정해줘.
    Claude Desktop App이 AGENTS.md의 writer 명세를 읽고 Write 도구로 .claude/agents/writer.md를 직접 생성한다. G-1에서 이미 만들어 둔 reviewer.md와 같은 .claude/agents/ 폴더 안에 나란히 놓인다 — AGENTS.md의 handoff_to: reviewer가 다음 단계에서 실제로 이어진다.
  2. ② writer → reviewer 순차 파이프라인 실행 요청 — 같은 채팅창에 이어서 붙여넣고 전송
    writer 서브에이전트로 draft.txt에 '원격 근무의 장점' 주제 초안을 쓰게 하고, 완료되면 reviewer 서브에이전트로 draft.txt를 검토해줘. 두 단계를 순서대로 진행해.
    메인 세션은 먼저 subagent_type="writer"Agent를 호출해 draft.txt를 생성시키고, 그 결과가 돌아온 뒤에야 subagent_type="reviewer" 호출을 보낸다. 두 전문가 사이의 의존 관계를 조율하는 것은 서브에이전트가 아니라 메인 세션의 몫이다.
writer와 reviewer를 병렬(한 메시지에 동시)로 호출하면 reviewer가 아직 존재하지 않는 draft.txt를 검토하려 시도해 실패할 수 있다 — 의존 관계가 있는 작업은 반드시 순차 호출로 요청해야 한다(위 ②처럼 "두 단계를 순서대로 진행해"라고 명시하는 것이 핵심이다).
결과 확인 — 채팅 화면에 writer 호출 → 완료 → reviewer 호출 → 완료 순서로 두 번의 서브에이전트 스폰이 표시되어야 정상이다. 한 번만 표시된다면 오케스트레이터가 파이프라인을 한 단계로 합쳐버린 것이니, 요청 문장에 "순서대로"가 명시됐는지 다시 확인한다. 완료 후 harness-lab/draft.txt를 열어 초안이 실제로 저장돼 있는지도 확인한다.

Claude Code(CLI)에서도 동일하게 — 같은 writer.md/reviewer.md를 그대로 쓰고, 터미널에서 ①②의 문장을 그대로 붙여넣으면 동일하게 순차 디스패치된다.

D-2 중급 요청에 따라 팀 구성과 워크플로우가 달라지는 것 관찰하기
2장 §4b에서 다룬 "동적 팀 구성"과 "다양한 워크플로우 조합"을 직접 눈으로 확인하는 시나리오다. D-1에서 만든 writer·reviewer 두 서브에이전트는 그대로 두고, 요청의 성격만 바꿔가며 오케스트레이터가 실제로 누구를, 몇 번, 어떤 순서로 호출하는지 관찰한다 — 서브에이전트 정의는 한 번도 새로 만들지 않는다는 점이 핵심이다.
동적 라우팅 분기 흐름도 — 같은 팀, 다른 요청
요청 A 단순 검토 reviewer ×1 결과 단일 패스 요청 B 초안+검토 writer ×1 reviewer ×1 결과 파이프라인 요청 C 초안+다중 검토 writer ×1 reviewer 문법 관점 reviewer 논리 관점 결과 팬아웃 ※ 서브에이전트 정의는 1회 — 오케스트레이터가 요청마다 동적으로 라우팅
Claude Desktop App — 같은 팀, 다른 요청 세 번

D-1을 마친 같은 채팅에서 이어서 진행한다. 매번 어떤 서브에이전트가 몇 번 호출되는지 화면에 표시되는 과정을 눈여겨본다.

  1. ① 단순 요청 — reviewer 하나만 필요한 경우
    draft.txt의 오탈자만 훑어봐줘.
    오케스트레이터는 이번 요청에 writer가 필요 없다고 판단해 reviewer 하나만 호출한다. 같은 팀(writer+reviewer)이 정의돼 있어도, 실제로 투입되는 인원은 요청마다 오케스트레이터가 그때그때 결정한다는 것을 보여주는 가장 단순한 예다.
  2. ② 복합 요청 — writer와 reviewer를 두 관점으로 조합
    draft2.txt에 '4일 근무제' 주제로 새 초안을 써줘. 초안이 완료되면, 그 초안을 문법 관점과 논리 관점 두 가지로 각각 독립적으로 동시에 검토해줘.
    이번에는 writer 한 번(파이프라인의 첫 단계) 이후에 reviewer가 "문법 관점"과 "논리 관점"이라는 서로 다른 지시를 받아 두 번 동시에(팬아웃) 호출된다. 파이프라인(writer → reviewer)과 팬아웃(reviewer ×2 동시 실행)이라는 두 오케스트레이션 패턴이 한 요청 안에서 조합되는 것을 확인할 수 있다 — 같은 두 서브에이전트로 ①과는 완전히 다른 모양의 워크플로우가 만들어졌다.
①과 ②를 나란히 비교하면 "팀 명단(어떤 서브에이전트를 정의해 뒀는가)"과 "이번 작업에 실제로 투입되는 구성(누가 몇 번, 어떤 순서로 호출되는가)"이 서로 다른 층위라는 게 뚜렷해진다. 전자는 .claude/agents/에 미리 고정돼 있지만, 후자는 매 요청마다 새로 결정된다.

Claude Code(CLI)에서도 동일하게 — 같은 writer.md/reviewer.md를 그대로 쓰고, 터미널에서 ①②의 문장을 그대로 붙여넣으면 동일하게 동작한다.

흔한 실패 — ②에서 "동시에 검토해줘"라고 했는데도 reviewer가 한 번만 호출된다면, 요청 문장이 "문법 관점과 논리 관점"처럼 두 관점을 명확히 구분하지 않았을 가능성이 높다. 관점을 더 구체적으로 나눠 다시 요청해본다.
● 고급 Power User writer와 reviewer를 독립적인 두 파일에 대해 동시에 돌리는 병렬 운영 — Claude Code Agent Teams
P-1 고급 독립 작업 병렬 실행 — Agent Manager vs Agent Teams
D-1까지 마친 숙련자가 서로 의존하지 않는 두 개의 독립적인 작업(topic-a.txt, topic-b.txt 초안 작성)을 Claude Code Agent Teams로 병렬로 돌려본다.
Claude Desktop App — Agent Teams, teammateMode: in-process

같은 harness-lab/ 폴더에서 실험적 기능인 Agent Teams를 활성화한다. Desktop App에서는 teammateMode가 반드시 in-process여야 한다(tmux는 지원되지 않는다).

  1. ① 설정 파일 작성 (터미널) — .claude/settings.json이 없다면 새로 만들고, 있다면 아래 두 키를 병합

    macOS/Linux/Git Bash에서는 아래 명령을 그대로 쓴다.

    이 명령은 .claude/settings.json 파일 전체를 덮어씁니다. 이미 다른 설정이 들어있는 파일이라면 기존 내용이 모두 사라지므로, 필요한 설정이 있다면 미리 백업하거나 아래 내용을 수동으로 병합하세요.
    cat > .claude/settings.json << 'EOF'
    {
      "env": {
        "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
      },
      "teammateMode": "in-process"
    }
    EOF

    Windows PowerShell에서는 here-string으로 같은 파일을 만든다.

    @'
    {
      "env": {
        "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
      },
      "teammateMode": "in-process"
    }
    '@ | Set-Content .claude/settings.json
  2. ② Claude Desktop App 재시작

    설정을 적용하려면 Claude Desktop App을 완전히 종료했다가 다시 연다.

  3. ③ 팀메이트 병렬 스폰 요청 — 채팅창에 아래 문장을 그대로 붙여넣고 전송
    writer 팀메이트 두 명을 병렬로 스폰해서 하나는 topic-a.txt에 '재택근무', 다른 하나는 topic-b.txt에 '4일 근무제' 초안을 동시에 쓰게 해줘. 각 파일이 완료되면 reviewer 팀메이트가 검토하게 하고, 공유 작업 목록도 보여줘.
Agent Teams가 켜진 상태에서는 여러 Claude 인스턴스가 팀메이트로 병렬 실행되며, 공유 작업 목록에 각 팀메이트의 할 일이 등록되고 상태가 갱신된다. 두 writer 팀메이트는 topic-a.txt/topic-b.txt 사이에 의존성이 없으므로 동시에 진행되고, 팀메이트 간에는 SendMessage로 직접 메시지를 주고받을 수도 있다. 다만 Desktop App에서는 일부 키보드 내비게이션(Shift+Down 등)이 제한된다.
작업 목록이 서로 얽히지 않도록, 병렬로 스폰하는 팀메이트에게는 처음부터 완전히 분리된 파일이나 디렉터리를 배정하는 것이 안전하다.
흔한 실패 — "Agent Teams 기능을 찾을 수 없다"거나 팀메이트가 스폰되지 않는다면, 대개 ① .claude/settings.jsonharness-lab/ 폴더 기준으로 저장됐는지(다른 폴더에 저장하면 인식되지 않는다), ② ②에서 Claude Desktop App을 완전히 재시작했는지 두 가지를 놓친 경우다. JSON 문법 오류(쉼표 누락 등)로 설정 파일 자체가 무시되는 경우도 흔하니, 편집기로 열어 문법을 다시 확인한다.
권한 설정 전후 비교 — 최소 권한 원칙
Before — 모든 도구 허용 tools: [모든 도구] Read Write Bash Edit Grep Push 공격 표면: 넓음 최소 권한 After — 필요한 도구만 tools: [Read, Grep] Read Grep Write Bash 공격 표면: 좁음 위험 범위: 100% 위험: 33% 위험 범위 67% 감소 reviewer는 애초에 쓸 수 없으므로 실수가 발생하지 않는다

Claude Code(CLI)에서도 동일하게 — 같은 설정과 같은 요청 문장이 그대로 동작한다. CLI에서만 teammateMode: "tmux"를 추가로 선택할 수 있어, tmux 분할 창으로 각 팀메이트의 화면을 나란히 볼 수 있다는 점이 Desktop App과 다르다.

P-2 고급 모델 티어 비교로 비용 감각 익히기
8장에서 상세히 다루는 모델 티어(high/medium/low)가 실제로 어떤 체감 차이를 만드는지, 숫자로 설명 듣기 전에 직접 겪어보는 시나리오다. 같은 reviewer 서브에이전트를 모델만 바꿔가며 세 번 호출하고, 응답 속도와 결과 품질을 눈으로 비교한다.
사용 요소
모델 티어 비교 차트
모델 속도 비용 품질 haiku 빠름 낮음 기본 정형 작업 오탈자 검토 sonnet 중간 중간 양호 일반 검토 코드 리뷰 opus 느림 높음 우수 복잡 논리 아키텍처 ※ 가벼운 역할=빠른 모델, 무거운 판단=높은 모델 — 적재적소에 배정
Claude Desktop App — 같은 파일, 세 가지 모델로 검토 요청

G-1의 notes.txt보다 조금 더 복잡한, 논리적 허점이 있는 글을 준비한다. 채팅창에 아래 문장을 그대로 붙여넣는다.

  1. ① 검토 대상 파일 준비
    argument.txt 파일을 만들고 다음 내용을 써줘: "재택근무는 항상 사무실 근무보다 생산적이다. 왜냐하면 재택근무를 하는 사람들이 재택근무가 좋다고 말하기 때문이다. 따라서 모든 회사는 재택근무만 해야 한다."
  2. ② haiku 티어로 검토

    채팅창에 아래 문장을 그대로 붙여넣는다. Claude Desktop App이 reviewer.mdmodel 필드를 haiku로 바꾼 뒤 검토를 수행한다.

    .claude/agents/reviewer.md의 model 필드를 haiku로 바꿔줘. 그리고 argument.txt를 reviewer 서브에이전트로 검토해줘.
  3. ③ sonnet 티어로 같은 요청 반복

    같은 방식으로 modelsonnet으로 바꾼 뒤 검토한다. 순환 논증(circular reasoning) 같은 논리적 허점을 정확히 짚어내는지 haiku 결과와 비교한다.

    .claude/agents/reviewer.md의 model 필드를 sonnet으로 바꿔줘. 그리고 argument.txt를 reviewer 서브에이전트로 검토해줘.
  4. ④ opus 티어로 같은 요청 반복

    같은 방식으로 modelopus로 바꾼 뒤 검토한다. 응답 시간과 지적의 깊이가 ②③과 어떻게 다른지 기록한다.

    .claude/agents/reviewer.md의 model 필드를 opus로 바꿔줘. 그리고 argument.txt를 reviewer 서브에이전트로 검토해줘.
간단한 오탈자 검토라면 세 모델의 결과 차이가 거의 없지만, 이번처럼 "논증 구조의 허점을 짚어야 하는" 작업에서는 티어가 낮을수록 순환 논증을 순환 논증이라고 정확히 짚지 못하고 표면적인 문장만 지적하는 경향이 뚜렷해진다. 반대로 haiku는 셋 중 가장 빠르게 응답한다 — 5장에서 설명하는 "판단이 무거운 역할일수록 높은 티어, 정형화된 작업일수록 낮은 티어"라는 원칙이 왜 존재하는지, 속도와 깊이의 트레이드오프를 직접 겪어보면 훨씬 분명해진다.
매번 Claude Desktop App에 "model 필드를 바꿔줘"라고 요청하면 된다 — 정의 파일을 직접 열 필요 없고, Claude Desktop App이 알아서 수정 후 검토를 수행한다.
흔한 실패 — model 필드에 존재하지 않는 값(오타, 대문자 등)이 들어가면 호출이 실패하거나 기본 모델로 조용히 대체될 수 있다. ②③④를 마친 뒤에는 .claude/agents/reviewer.md를 직접 열어 model: 값이 haiku/sonnet/opus 중 의도한 값과 정확히 일치하는지 확인한다.

실습 마무리 정리

5개 시나리오를 모두 마쳤다면, harness-lab/ 폴더를 어떻게 할지 정리한다. 다음 장(5장)에서 새 실습 폴더를 쓰기 때문에 반드시 남겨둘 필요는 없지만, 지금까지 만든 AGENTS.md·서브에이전트 정의를 비교해보고 싶다면 삭제 전에 한 번 훑어보는 것을 권장한다.

🧹 harness-lab 폴더 정리

더 이상 필요 없다면 폴더 전체를 삭제한다. macOS/Linux/Git Bash에서는 아래 명령을 그대로 쓴다.

cd ..
rm -rf harness-lab

Windows PowerShell에서는

cd ..
Remove-Item -Recurse -Force harness-lab
보존하고 싶다면 — 폴더를 지우는 대신 git init && git add -A && git commit -m "harness-lab 실습 기록"으로 로컬 커밋만 남겨두는 방법도 있다. 이후 참고자료로 두고, 다음 장 실습은 별도의 새 폴더에서 시작해도 된다.
P-1에서 .claude/settings.json에 켜둔 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 플래그는 harness-lab/ 폴더에만 적용되는 설정이므로, 폴더를 삭제하면 함께 사라진다. 다른 프로젝트에서도 Agent Teams를 계속 쓰고 싶다면 그 프로젝트의 .claude/settings.json에 같은 설정을 별도로 추가해야 한다.

참고 영상


Claude Code/App 2026-07 기준 | 2026년 7월 14일 작성
← 4장 §1 멀티 에이전트 팀 활용 레퍼런스  ·  4장 §2-B Antigravity 중심 실습  ·  5장 ai-workspace-standards 소개 →