본문으로 건너뛰기
H
Harness 101
학습 경로/Act 3 — 규모/12. Agent Teams
Context·고급·90분

금요일 데모까지 3일

“혼자서 감당할 수 없으면, 팀원에게 위임하라”

Agent Teams — 혼자서는 안 된다

이전 이야기에서: 지민은 /compact로 컨텍스트를 관리하고, HANDOFF.md로 세션을 넘기는 법을 배웠다. 단일 에이전트의 메모리 문제는 해결됐다. 하지만 론칭까지 3일 남았다. 프론트엔드, 백엔드, 테스트. 한 에이전트로는 시간이 부족했다...

Harness = Tools + Knowledge + Context + Permissions

Agent Teams는 Context를 수평으로 확장한다. "When the task is too big for one, delegate to teammates"


금요일 데모까지 3일

소연이 Slack에 메시지를 보냈다.

소연: 금요일 투자자 데모 확정. 결제 시스템 전체가 동작해야 해.

지민은 남은 작업을 정리했다.

남은 일:
  □ Stripe webhook handler (백엔드)    — 4시간
  □ 결제 UI 컴포넌트 (프론트엔드)      — 3시간
  □ 결제 플로우 E2E 테스트             — 2시간 (위 둘 완료 후)
  □ 에러 핸들링 + 로깅                 — 2시간
  □ 배포 + 모니터링 설정               — 1시간

총 필요 시간: ~12시간
실제 남은 시간: 3일... 하지만 다른 기능도 있다.

문제는 이것이었다. Claude는 한 번에 하나만 할 수 있다.

Subagent(Ch06)를 쓰면? 부모가 기다려야 한다. 수직적 구조. 코드 리뷰를 맡길 수는 있지만, 프론트엔드와 백엔드를 동시에 구현하게 할 수는 없다.

Background Tasks(Ch07)를 쓰면? I/O만 병렬화된다. npm install은 뒤에서 돌리면서 코드를 쓸 수 있지만, LLM 추론 자체는 여전히 하나.

지민에게 필요한 건 동시에 생각하는 여러 Claude였다.


Subagent와 Teammate의 차이

Ch06에서 배운 Subagent를 다시 떠올려보자:

Subagent (수직적):
  지민 → Claude(부모) → code-reviewer(자식)
  부모가 기다린다. 자식이 끝나면 요약만 받는다.
  자식은 일회용. 태어나서 일하고 사라진다.

Teammate (수평적):
  오케스트레이터
    ├── backend-agent (독립적으로 실행)
    ├── frontend-agent (독립적으로 실행)
    └── qa-agent (독립적으로 실행)
  아무도 기다리지 않는다. 각자 자기 일을 한다.
  팀원은 상주한다. 여러 작업을 순회한다.

Subagent는 일회용 전문가. 물어보면 답하고 사라진다. Teammate는 상주 팀원. 출근해서 작업 보드를 확인하고, 일을 찾고, 할 일이 없으면 기다린다.


Task Board: 05에서 배운 그것

Agent Teams의 "작업 보드"는 Ch05에서 배운 Task System 그 자체다.

Ch05 (혼자):
  지민 → Claude → .tasks/task_*.json (혼자 읽고 쓰기)

Ch12 (팀):
  오케스트레이터 ─┬── .tasks/task_*.json ── 공유 작업 보드
  backend-agent ──┤   (모든 에이전트가 접근)
  frontend-agent ─┤
  qa-agent ───────┘

같은 .tasks/ 인프라. 같은 blockedBy/blocks DAG. 차이는 여러 에이전트가 동시에 접근한다는 것.