iBetter Books
수정

서브에이전트와 작업 분해

오케스트레이터-워커를 워크플로우로 직접 구현하면 루프와 컨테이너를 내가 관리해야 한다. Anthropic이 에이전트 루프를 직접 돌리고 세션마다 도구가 실행되는 컨테이너까지 호스팅해 주기를 원한다면, 답은 Managed Agents다. 여기서 작업 분해는 코디네이터(coordinator) 에이전트가 다른 에이전트들에게 위임하는 형태로 구현되며, 위임받은 각 에이전트는 자기만의 스레드(thread)에서 실행된다. 이 절은 시험에서 함정 밀도가 가장 높은 영역이다. 필드 위치와 위임 규칙을 정확히 외워야 한다.

코디네이터 선언

멀티 에이전트는 코디네이터 에이전트의 설정에 multiagent 필드로 선언한다. 가장 자주 출제되는 함정이 바로 이 필드의 위치다. multiagentagents.create()의 최상위(top-level) 필드이지 tools[]의 한 항목이 아니며, sessions.create()에도 들어가지 않는다. 세션은 미리 만들어 둔 코디네이터를 ID로 참조하기만 하고, 로스터는 코디네이터 설정에서 해석된다.

# managed/coordinator.pyimport anthropicclient = anthropic.Anthropic()coordinator = client.beta.agents.create(    name="Engineering Lead",    model="claude-opus-4-8",    system="너는 작업을 분해해 리뷰어와 테스트 작성자에게 위임한다.",    tools=[{"type": "agent_toolset_20260401"}],    multiagent={  # top-level 필드 — tools[]가 아님        "type": "coordinator",        "agents": [            reviewer.id,                                      # 최신 버전 참조            {"type": "agent", "id": tester.id, "version": 4},  # 버전 고정            {"type": "self"},                                  # 자기 자신 복제 허용        ],    },)session = client.beta.sessions.create(    agent=coordinator.id,  # 모델·시스템·도구는 세션이 아니라 에이전트에 있다    environment_id=env.id,)

생성은 한 번, 참조는 매번

에이전트는 영속적이고 버전 관리되는 객체다. 한 번 만들어 ID를 저장하고, 세션을 띄울 때마다 그 ID를 재사용한다. 매 실행마다 agents.create()를 호출하는 것은 대표적인 안티패턴이다. 고아 에이전트가 쌓이고, 생성 지연을 매번 지불하며, 버전 관리 모델을 무력화한다. 에이전트 동작을 바꾸려면 새로 만들지 말고 agents.update()로 갱신한다. 갱신할 때마다 새 불변 버전이 생기고, 이미 돌고 있는 세션은 고정된 버전을 유지한다.

위임 규칙과 스레드 격리

세 가지 규칙이 반복 출제된다.

첫째, 위임은 한 단계만 가능하다(one level of delegation only). 깊이가 1을 넘는 위임은 무시된다. 서브에이전트가 자기 multiagent 로스터를 가져도 그것은 연쇄되지 않으며, 위임하는 주체는 세션의 코디네이터뿐이다.

둘째, 스레드는 파일시스템은 공유하지만 대화 이력과 도구는 공유하지 않는다. 모든 에이전트가 같은 컨테이너와 파일시스템 위에서 돌지만, 각 스레드는 자기만의 대화 이력·모델·시스템 프롬프트·도구를 가진다. 따라서 코디네이터가 서브에이전트에게 무언가를 시키려면 위임 메시지에 필요한 맥락을 명시하거나 디스크에 써 두어야 한다. 맥락이 자동으로 공유될 것이라고 가정하면 안 된다.

셋째, 로스터는 1~20개의 고유 에이전트이고 각 에이전트의 복제본을 여러 개 띄울 수 있으며, 동시 스레드는 최대 25개다.

시험에서 어떻게 나오는가

  • 함정 1. multiagenttools[] 항목이나 sessions.create() 파라미터로 배치한 보기는 오답이다. 최상위 에이전트 필드가 정답이다.
  • 함정 2. "서브에이전트가 다시 서브에이전트에 위임"하는 2단계 위임 시나리오는 무시되므로 동작하지 않는다.
  • 함정 3. "스레드가 대화 이력을 공유하므로 맥락 전달이 불필요하다"는 오답이다. 파일시스템만 공유한다.
  • 핵심 포인트. 에이전트는 생성 1회·참조 N회이며, 동작 변경은 update로 버전을 올린다.

정리

  • Managed Agents는 Anthropic이 에이전트 루프와 컨테이너를 호스팅하며, 작업 분해는 코디네이터가 서브에이전트에 위임하는 형태다.
  • multiagentagents.create()의 최상위 필드이며, tools[]sessions.create()에 두면 오답이다.
  • 에이전트는 영속·버전 객체로 생성 1회·참조 N회가 원칙이고, 매 실행 재생성은 안티패턴이다.
  • 위임은 한 단계만 가능하며 깊이 1을 넘는 위임은 무시된다.
  • 스레드는 파일시스템은 공유하나 대화 이력·도구는 공유하지 않으므로 코디네이터가 맥락을 명시적으로 전달해야 한다.