Grok Build · Multi-Agent Organization

다중 Agent 조직 방법

다중 Agent 시스템은 역할 정의, spawn, 상태 조회, 취소, 완료 알림, 리소스 상속을 동시에 처리해야 합니다. Grok Build 소스 코드는 이 책임들을 정의 레이어와 이벤트 조율 레이어로 나눕니다.

학습 목표

subagent_coordinator에서 Grok Build의 실제 조직 방식을 파악하고, 태스크 의존성, 컨텍스트 요구 사항, 파일 충돌, 결과 집계 비용을 고려하여 조직 전략을 선택할 수 있습니다.

TEACHING DIAGRAM

부모 세션이 이벤트 채널을 통해 정체성 있는 서브 Agent 그룹을 관리합니다

Coordinator는 Grok Build 소스 코드의 실제 컴포넌트 이름입니다. 그래픽 레이아웃은 교육 목적으로 구성된 것입니다.

부모 세션, subagent coordinator 및 세 서브 Agent 간의 관계 parent sessiontask / query / cancel SubagentCoordinatorpending · active · completedwait slots · completions exploreAgentDefinition + Persona general-purposeAgentDefinition + Persona planAgentDefinition + Persona
Grok Build 소스 코드 측: 정의와 조율

정의 레이어: AgentDefinition + Persona

AgentDefinition은 Prompt, 도구, 권한, 모델, MCP 상속, spawn 가능 유형 등의 계약을 제공합니다. Persona는 행동 지침, I/O 계약, 일부 런타임 기본값을 추가합니다. 이 둘이 합쳐져 각 서브 Agent가 관찰 가능한 정체성과 능력 경계를 갖게 됩니다.

resolvetype → definition → role/persona runtime config

조율 레이어: SubagentEvent

start_subagent_coordinator는 단 한 번의 drain task를 시작합니다. 각 Spawn 이벤트는 handle_subagent_request를 호출하는 로컬 비동기 태스크를 추가로 시작합니다.

eventsSpawn · Query · Cancel · ListActive · Completions · Outstanding

병렬 실행

Spawn 이벤트는 독립적으로 spawn_local에 진입하고, 코디네이터는 pending, active, completed 상태를 등록합니다. 병렬 능력은 비동기 태스크에서 나오며 Persona 수에 제한이 없습니다.

결과 및 대기

Query는 즉시 스냅샷을 반환하거나 block wait slot을 등록하고 상태를 폴링할 수 있습니다. Completions는 대기 중인 완료 항목을 drain하고 suppress_ids로 필터링합니다.

취소 및 정리

Cancel은 subagent ID 또는 parent prompt ID로 대상을 지정할 수 있습니다. 코디네이터는 만료된 completed 기록도 제거하고 명시적 kill을 로그에 기록합니다.

crates/codegen/xai-grok-shell/src/agent/mvp_agent/subagent_coordinator.rs crates/codegen/xai-grok-agent/src/config.rs start_subagent_coordinator handle_subagent_request
Claude 비교: 공개 동작만 사용

비교 가능한 것은 제품 표면 기능입니다

Claude Code는 커스텀 subagent를 공개 지원합니다. 각 subagent는 독립적인 컨텍스트, system prompt, 도구 권한, 모델을 가질 수 있으며, 주 세션이 자동 위임하거나 사용자가 명시적으로 호출할 수 있습니다. 공개된 Agent Teams 기능 설명에는 공유 태스크, 멤버 간 메시지, 독립 컨텍스트가 포함됩니다. 본 강좌는 「Coordinator」나 「Swarm」을 Claude Code 소스 코드 내부 타입으로 간주하지 않으며, 스케줄러 구현을 추론하지도 않습니다.

단일 주 세션 위임

한 owner가 태스크를 분해하고, 의존성을 연결하고, 결과를 집계하는 경우에 적합합니다. Grok의 task + coordinator 이벤트와 Claude의 공개 subagent 위임 모두 이 워크플로를 지원합니다.

다중 멤버 협업

멤버가 서로 소통하고 공유 태스크를 맡아야 할 때 적합합니다. 공개된 Agent Teams 동작과 현재 버전 제한을 기준으로 평가해야 합니다.

역할 재사용

장기적으로 반복되는 reviewer, explorer, planner 역할에 적합합니다. Grok은 AgentDefinition과 Persona를 사용하고, Claude 공개 설정은 subagent 정의 파일을 사용합니다.

실제 소스 코드 스냅샷
crates/codegen/xai-grok-shell/src/agent/mvp_agent/subagent_coordinator.rsREAL SOURCE · abridged
while let Some(event) = rx.recv().await {
    match event {
        SubagentEvent::Spawn(boxed) => { /* handle request */ }
        SubagentEvent::Query(query) => { /* snapshot or block */ }
        SubagentEvent::Cancel(request) => { /* cancel target */ }
        SubagentEvent::ListActive(request) => { /* summaries */ }
        SubagentEvent::Completions(request) => { /* drain */ }
        ...
    }
}

스냅샷 설명: 이벤트 변형과 제어 구조는 실제 소스 코드에서 가져왔으며, 분기 본문은 수업용으로 압축했습니다. Claude 측에는 소스 스냅샷이 없으며, 모든 설명은 공개된 기능 동작에 한정됩니다.

수업 실습: 시나리오 의사결정

아래 세 시나리오 각각에 대해 「단일 Agent」, 「주 세션 + subagents」, 「다중 멤버 공유 태스크」 중 하나를 선택하고, 병렬 이득, 의존 관계, 컨텍스트 복제 비용, 파일 충돌, 집계 책임을 설명하세요.

상호 의존성이 없는 8개 모듈을 검색하고 최종 리스크 목록을 집계합니다.
동일한 결제 모듈 내에서 schema, service, 테스트를 순차적으로 변경하며, 단계 간 강한 의존성이 있습니다.
세 개의 독립 서비스를 병렬로 마이그레이션하며, 멤버 간 인터페이스 변경을 동기화해야 합니다.
핵심 정리: 다중 Agent 조직은 먼저 태스크 그래프를 해결한 뒤 제품 메커니즘을 선택합니다. Grok 소스 코드는 이벤트 코디네이터와 설정 가능한 Agent 정체성을 보여줍니다. 제품 간 비교는 공개 동작 레이어에 머물러야 하며, 마케팅 용어를 내부 아키텍처 사실로 쓰지 않아야 합니다.