에이전트 정의는 ‘어떤 사람이 있는가’의 템플릿이고, 팀은 ‘이번 세션에서 누구를 부를 것인가’의 구체적인 인스턴스이다.
실제 클로드 코드 구현에서 팀 구성은 두 단계로 나뉜다.
TeamCreate로 팀 메타데이터를 만들고
각 팀원은 AgentTool을 team_name 필드와 함께 호출해 개별적으로 생성한다.
AgentTool의 name: 팀 내부 주소. 같은 팀 안에서 SendMessage({ to: "security-reviewer" }) 형태로 이 이름의 목적지가 된다.
model(생략 가능): 팀원별로 다르게 잡을 수 있다. 감독저는 opus, 단순 추출자는 haiku, 복잡 분석은 다시 opus 식이다. 명시하지 않으면 부모 세션의 모델을 상속한다.
prompt: 런타임 작업 지시이다. 에이전트 정의 파일의 본문과 합쳐져서 실제 system prompt가 구성된다.에이전트 파일에 정의된 역할과 호출 시점의 작업 컨텍스트가 분리된다는 점이 중요하다. 같은 security-reviewer 에이전트를 다른 팀에서는 다른 prompt로 호출할 수 있따.
isloation: "worktree": 파일 격리 옵션이다. 팀원이 서로 작업 중인 파일을 덮어쓰지 않도록 git worktree로 격리한다. 클로드 코드 공식 템플릿이 이 필드를 명시적으로 채택했다.
해결방법: 각 팀원에게 shutdown_request 메시지를 보내고, 팀원이 TaskUpdate로 “shtting down” 상태를 표시할 때 까지 기다린 뒤 TeamDelete를 호출한다.
리더가 모든 결정을 독점
해결방법: 에이전트 정의 파일의 ‘## 팀 통신 프로토콜’ 섹션에 수평 통신 규약을 명시. 리더의 프롬프트에는 “팀원 간 교차 확인은 직접 SendMessage로 처리하고, 리더에게는 TaskUpdate만 보고한다"를 명시하. 리뷰 지표는 “리더 메일함 점유율 ㅡ 40%” 같은 수치로 잡을 수 있다.
브로드캐스트 남발
해결 방법: 기본은 유니캐스트다. ‘모두가 알아야 할 상태’는 파일 또는 TaskUpdate로 표시하고, 팀원들은 필요할 떄 TaskGet으로 읽는다. 진짜 브로트캐스트가 필요한 경우에만 *를 쓴다.
팀 크기 과대
해결 방법: 7명 이상이면 Phase를 쪼개고 팀을 교체한다. _workspace/의 파일을 Phase 간 다리로 활용한다.