에이전트 오케스트레이션 (Agent Orchestration)
에이전트 오케스트레이션 (Agent Orchestration)
상황
한 에이전트에게 큰 작업을 시키면 흔히 두 가지 벽에 부딪힙니다. 하나는 컨텍스트가 넘치고(수많은 중간 결과가 대화에 쌓임), 다른 하나는 한 작업이 끝나야 다음이 시작돼서 병렬로 돌릴 수 없는 순차 폭탄이에요. 여러 독립적인 조사·작성이 있는데 하나씩 돌리면 시간이 배로 걸립니다.
우리는 여러 에이전트를 병렬·독립으로 띄우고 결과만 모으는 오케스트레이션을 씁니다. 각 에이전트는 자기만의 격리된 컨텍스트와 도구를 갖고 독립 작업을 끝내고, 최종 요약만 오케스트레이터(부모)에게 돌려줍니다. 이건 자율 루프(goal 기능)에서 긴 작업을 쪼갤 때도 같은 원리로 적용돼요.
질문
여러 독립 작업이 있는데, 컨텍스트를 서로 오염시키지 않고 병렬로 돌려 결과만 모으려면 어떻게 해야 할까?
설명
정답은 격리된 서브에이전트 + 결과 수집입니다. 핵심 원칙은:
- 각 에이전트는 독립 컨텍스트를 가진다. 부모 대화를 안 볼 뿐 아니라 자기 작업에 필요한 배경·출력 언어·스타일을 명시적으로 전달받아야 해요. 에이전트는 부모 이력을 모르니, 필요한 건 전부 패킹해서 넘깁니다.
- 오케스트레이터는 중간 산출물을 쌓지 않는다. 각 에이전트가 본문(
content_md파일, JSON 등)을 만들어 두면, 부모는 그 경로만 알고 실제 내용을 컨텍스트에 들이지 않습니다. 그래야 부모 컨텍스트가 안 넘칩니다. - 병렬 실행 + 완료 수집. 독립 작업들은 한 번에 여러 개를 동시에 띄우고, 모두 끝난 뒤 결과를 모아 통합합니다. 순서가 필요한 작업만 따로 순차로 둡니다.
이 패턴의 이점은 세 가지예요.
- 컨텍스트 효율 — 부모는 중간 데이터를 안 들고, 요약·산출물 경로만 유지한다.
- 병렬성 — 독립 작업은 동시에 돌아 전체 지연이 독립 항목의 최대값으로 줄어든다.
- 안정성 — 한 에이전트가 헤매거나 도구가 실패해도 다른 작업엔 영향이 없다(격리).
주의할 점: 에이전트의 "성공했다/파일 썼다"는 자기 보고일 뿐이라, 부모는 그대로 믿지 않아요. 외부에 실질 효과가 있는 작업(업로드, DB 쓰기, 게시)은 그 결과를 **식별 가능한 핸들(URL·ID·경로)**로 받아 부모가 다시 검증해야 합니다.
예시
호출 형태의 골격입니다(개념 — 구현체에 따라 달라요).
목표: 위키에 AI 레시피 4개 작성
→ 병렬 위임 (서로 독립):
서브A: llm-abstraction 레시피 작성 → 파일A.md
서브B: rag-hybrid-search 레시피 작성 → 파일B.md
서브C: mcp-integration 레시피 작성 → 파일C.md
서브D: agent-orchestration 레시피 작성 → 파일D.md
→ 모두 종료 후:
각 서브의 최종 요약 + 산출물 경로만 수집
(본문은 컨텍스트에 들이지 않고 경로로만)
각 서브에는 자기 작업에 완전히 필요한 배경을 넘깁니다. 여기선 "이 레시피는 X야, 스타일은 이렇고, 파일 경로는 Y야" 같은 것들요. 서브는 그걸로 자기 파일을 만들고 경로를 돌려줍니다. 부모는 파일을 읽어 최종 통합·검증만 합니다.
확인
- 각 에이전트가 독립 컨텍스트로 도는지 (부모 이력을 모름)
- 필요한 배경·출력 언어·스타일을 명시적으로 전달했는지
- 중간 산출물이 부모 컨텍스트에 안 쌓이는지 (경로/요약만)
- 독립 작업이 병렬로 도는지 (순차 폭탄 없음)
- 외부 효과 있는 작업은 결과 핸들을 받아 재검증하는지 (자기 보고 신뢰 금지)
규칙: 자식 에이전트는 질문을 못 하니(인터랙션 불가), 모호한 건 사전에 결정해서 넘기세요. 또 하위 에이전트를 또 위임하는 건 복잡도를 늘리니 독립 작업 1겹 이하가 다루기 쉬워요.