DEV Community

김이더
김이더

Posted on

Claude Code에 팀이 생겼다

Claude Code가 혼자 일하는 시대가 끝났다.

3월 업데이트에서 Agent Teams가 리서치 프리뷰로 들어왔다. 여러 에이전트가 동시에 각자 맡은 영역을 작업하고, 리더 에이전트가 결과를 합친다. 게임으로 치면 NPC 파티 시스템이다. 탱커, 딜러, 힐러를 세팅하듯이, 백엔드, 프론트엔드, 인프라 에이전트를 짜고 리더한테 "이거 만들어"라고 던지면 된다.

여기에 /loop이라는 반복 자동화 커맨드와, 작업 내용을 자동으로 기억하는 메모리 시스템까지 합쳐졌다.

이 세 개가 동시에 들어온 게 우연은 아니다. 합치면 무인 개발 파이프라인이 된다.

에이전트를 팀으로 짠다

Agent Teams는 .claude/agents/ 폴더에 마크다운 파일로 에이전트를 정의하는 구조다. 각 파일이 하나의 에이전트 역할을 담당한다.

리더 에이전트를 먼저 만든다.

<!-- .claude/agents/leader.md -->
---
name: leader
model: opus
memory: project
tools:
  - Read
  - Write
  - Bash
  - Task(backend)
  - Task(frontend)
  - Task(infra)
---

You are the project leader. Break down the user's request into subtasks,
delegate to the appropriate agent, verify integration, and resolve conflicts.
Enter fullscreen mode Exit fullscreen mode

Task(backend) 이 문법이 핵심이다. 리더가 스폰할 수 있는 서브에이전트를 명시적으로 제한한다. 아무나 부를 수 있게 열어두면 에이전트가 에이전트를 무한히 스폰하는 사고가 난다. 실제로 이전 버전에서 teammate가 중첩 스폰하는 버그가 있었고, 이번에 수정됐다.

백엔드와 프론트엔드 에이전트는 이렇게 생겼다.

<!-- .claude/agents/backend.md -->
---
name: backend
model: sonnet
memory: project
tools:
  - Read
  - Write
  - Bash
---

You are a backend engineer. Handle API endpoints, database schema,
authentication, and server-side logic.
Tech stack: TypeScript strict, Prisma + PostgreSQL, Zod validation.
Enter fullscreen mode Exit fullscreen mode
<!-- .claude/agents/frontend.md -->
---
name: frontend
model: sonnet
memory: project
tools:
  - Read
  - Write
  - Bash
---

You are a frontend engineer. Handle UI components, pages, client-side state,
styling (Tailwind CSS), and user interactions.
Enter fullscreen mode Exit fullscreen mode

리더는 Opus, 실무 에이전트들은 Sonnet. 복잡한 판단은 비싼 모델이 하고, 실제 코드 작성은 빠른 모델이 한다. 게임 서버 아키텍처에서 월드 서버와 존 서버를 나누는 것과 비슷한 발상이다.

memory: project로 설정하면 같은 프로젝트의 에이전트들이 메모리를 공유한다. 백엔드 에이전트가 "이 프로젝트는 Prisma를 쓴다"고 기억하면, 프론트엔드 에이전트도 그 정보를 알고 있다. memory: local로 바꾸면 해당 에이전트 세션에서만 유지된다. 인프라처럼 독립적인 역할은 local이 맞다.

실행하면 이런 일이 벌어진다

export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
claude --agent leader
Enter fullscreen mode Exit fullscreen mode

환경변수를 먼저 설정해야 한다. 아직 리서치 프리뷰라서 명시적 옵트인이 필요하다. 토큰 소모가 일반 작업의 3~5배는 되니까 Max 플랜이 아니면 부담스러울 수 있다.

리더에게 이렇게 던진다.

Gongnog 프로젝트를 SvelteKit + Prisma + PostgreSQL로 세팅해줘.
- 백엔드: 사용자 인증(OAuth), 근무일지 CRUD API
- 프론트: 로그인 페이지, 근무일지 입력/목록 페이지
- 인프라: Railway 배포용 Dockerfile, GitHub Actions CI
Enter fullscreen mode Exit fullscreen mode

리더가 작업을 분배한다. 백엔드 에이전트가 스키마와 API를 짜는 동안, 프론트엔드 에이전트가 페이지를 만들고, 인프라 에이전트가 Docker 설정을 잡는다. 동시에.

이전에 PowerShell 오케스트레이터로 비슷한 걸 만들어본 적 있다. 터미널 여러 개 띄워놓고 각각 다른 프롬프트를 보내는 방식이었는데, 에이전트 간 통신이 안 되니까 결과물이 따로 놀았다. Agent Teams는 리더가 중간에서 조율하는 구조라서 통합이 자연스럽다.

블로그 자동 파이프라인 — 이게 진짜 쓸모

Agent Teams의 진짜 가치는 "멀티 에이전트가 코드를 짠다"가 아니라, 파이프라인을 에이전트로 구성할 수 있다는 점이다.

내가 만들어본 구성은 이렇다. 커밋 분석 → 블로그 작성 → 리뷰까지 3단계 파이프라인.

<!-- .claude/agents/blog-leader.md -->
---
name: blog-leader
model: opus
memory: project
tools:
  - Read
  - Write
  - Bash
  - Task(commit-analyzer)
  - Task(blog-writer)
  - Task(reviewer)
---

GitHub 커밋 히스토리를 분석하고 블로그 글을 생성하는 파이프라인을 관리한다.
Enter fullscreen mode Exit fullscreen mode
<!-- .claude/agents/commit-analyzer.md -->
---
name: commit-analyzer
model: haiku
memory: local
tools:
  - Bash
  - Read
---

git log를 분석하여 주요 변경사항을 카테고리별로 정리한다.
출력: JSON { features: [], fixes: [], refactors: [] }
Enter fullscreen mode Exit fullscreen mode

commit-analyzer는 Haiku다. git log 파싱 같은 단순 작업에 Opus를 쓸 이유가 없다. blog-writer만 Opus로 올리면 된다. 모델 비용을 역할별로 최적화하는 게 멀티 에이전트의 숨은 장점이다.

claude --agent blog-leader
> 지난 일주일간 커밋을 분석해서 블로그 글 하나 써줘
Enter fullscreen mode Exit fullscreen mode

이전에 git2blog라는 프로젝트로 비슷한 걸 만들었는데, bash 스크립트 + Claude API 직접 호출이라 유지보수가 지옥이었다. Agent Teams로 바꾸면 마크다운 파일 몇 개로 끝난다.

/loop — "5분마다 확인해"

Agent Teams와 별개로, /loop이 이번에 들어왔다.

/loop 5m check the deploy status and notify me if there are errors
Enter fullscreen mode Exit fullscreen mode

5분마다 배포 상태를 확인하고 에러가 있으면 알려준다. headless 모드와 합치면 무인 모니터링이 된다.

claude --dangerously-skip-permissions -p "/loop 5m \
  git pull origin main && npm run build를 실행하고, \
  빌드 실패하면 에러 내용을 build-errors.log에 기록해줘"
Enter fullscreen mode Exit fullscreen mode

UE5 프로젝트에서 이걸 쓸 생각을 하고 있다. iOS/Android 크로스 플랫폼 빌드가 밤새 돌아갈 때 15분마다 로그를 체크하고, 에러가 나면 요약해주는 식이다.

CLAUDE_CODE_DISABLE_CRON=1로 언제든 즉시 중지할 수 있다. 크론 잡이 폭주하는 사고를 방지하는 안전장치.

자동 메모리 — 세션이 끊겨도 기억한다

이전에는 CLAUDE.md에 수동으로 "이 프로젝트는 Prisma를 쓴다" 같은 걸 적어야 했다. 이제 Claude Code가 알아서 기억한다.

autoMemoryDirectory를 설정하면 메모리 저장 경로를 프로젝트 안으로 끌어올 수 있다.

{
  "autoMemoryDirectory": ".claude/memory"
}
Enter fullscreen mode Exit fullscreen mode

이걸 git에 포함시키면 다른 머신에서도 같은 메모리로 작업한다. 집에서 Mac Mini로 작업하다가 회사 PC로 넘어가도 "아, 이 프로젝트 Next.js 15 + Railway 스택이었지"를 다시 설명할 필요가 없다.

SessionEnd 훅을 걸면 메모리 커밋까지 자동화된다.

{
  "autoMemoryDirectory": ".claude/memory",
  "hooks": {
    "SessionEnd": {
      "command": "git add .claude/memory/ && git commit -m 'chore: update claude memory' --no-verify 2>/dev/null || true"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

세션 끝날 때마다 메모리가 자동으로 git에 올라간다.

세 개를 합치면

Agent Teams + /loop + 자동 메모리. 각각도 쓸만하지만, 합치면 이런 워크플로우가 가능하다.

# 터미널 1: Agent Teams로 개발
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
claude --agent leader
> 근무일지 CRUD API와 프론트엔드 페이지를 동시에 만들어줘

# 터미널 2: /loop으로 모니터링
claude --dangerously-skip-permissions
/loop 3m npm run typecheck && npm test를 실행하고 에러 있으면 알려줘
Enter fullscreen mode Exit fullscreen mode

에이전트가 코드를 짜는 동안 다른 세션이 3분마다 타입체크와 테스트를 돌린다. 에러가 나면 알려주고. 자동 메모리가 프로젝트 컨텍스트를 유지하니까, 세션이 끊겨도 이어서 작업할 수 있다.

아직 리서치 프리뷰라서 거친 부분이 있다. 토큰 소모가 크고, 에이전트 간 조율이 완벽하지는 않다. 그래도 방향은 명확하다.

"혼자 다 하는 AI"에서 "팀으로 움직이는 AI"로. 터미널 하나에서 팀을 굴리는 시대가 왔다.

Top comments (0)