AI/Ai Agent

MasterAgent: AI가 파이프라인을 실행하는 방법

코딩하는후운 2026. 1. 8. 10:08
반응형

MasterAgent: "판단은 끝났어, 이제 실행만 해"

💡 BrainAgent가 "어떤 파이프라인을 쓸지" 결정했다면, MasterAgent는 그걸 실제로 실행하는 역할이다. 판단? 안 한다. 그냥 시킨 대로 한다.

왜 실행만 하는 컴포넌트를 따로 뒀을까?

처음에는 하나의 Agent가 모든 걸 했다. 질문 분석도 하고, 파이프라인 실행도 하고, 답변도 생성하고.

근데 문제가 생겼다.

"PK-123 관련 과거 논의 찾아줘" 같은 질문이 들어오면:

  • Jira에서 티켓 정보 가져와야 하고
  • RAG에서 과거 대화 검색해야 하고
  • 두 결과를 조합해서 답변해야 한다

이걸 하나의 Agent가 순차적으로 하니까 느리고, 중간에 "어떤 거 먼저 하지?" 판단이 계속 필요했다.

그래서 역할을 나눴다:

  • BrainAgent: 뭘 할지 결정 (빠른 판단)
  • MasterAgent: 결정된 거 실행 (병렬 처리)
  • CLI: 결과 받아서 최종 답변 (리랭킹)

실행 흐름: 질문이 들어오면 어떻게 되나?

사용자: "PK-123 관련 과거 논의 찾아줘"
          │
          ▼
    ┌─────────────┐
    │ BrainAgent  │  ← "jira + rag 파이프라인 필요하겠다"
    └─────────────┘
          │
          │ pipelines: ["jira", "rag"]
          ▼
    ┌─────────────┐
    │ MasterAgent │  ← "알겠어, 병렬로 돌릴게"
    └─────────────┘
          │
    ┌─────┴─────┐
    ▼           ▼
 [Jira API] [RAG 검색]   ← 동시에 실행 (ThreadPool)
    │           │
    └─────┬─────┘
          ▼
    ┌─────────────┐
    │    CLI      │  ← 결과 받아서 리랭킹 + 답변 생성
    └─────────────┘

핵심은 MasterAgent가 판단하지 않는다는 것이다. BrainAgent가 "jira, rag 써"라고 하면 그냥 둘 다 실행한다. "jira 먼저 할까 rag 먼저 할까?" 고민 안 한다. 그냥 동시에 돌린다.

Worker는 또 뭔데?

파이프라인 말고 Worker라는 개념도 있다. "기획 관점에서 분석해줘" 같은 요청이 들어오면:

BrainAgent: "PM 관점이 필요하네" → workers: ["pm"]
                │
                ▼
         ┌─────────────┐
         │ MasterAgent │
         └─────────────┘
                │
                ▼
         ┌─────────────┐
         │  PM Worker  │ → 자동으로 jira, notion, rag 실행
         └─────────────┘

Worker는 전문가 페르소나다. PM, Dev, QA, Design 각각 자기 분야에 맞는 파이프라인을 기본으로 가지고 있다.

Worker 기본 파이프라인 관점

PM jira, notion, rag 기획, 요구사항
Dev rag, jira 기술, 구현
QA jira, rag, notion 테스트, 품질
Design figma, notion, jira UI/UX

중요한 건 Worker도 LLM을 호출하지 않는다는 것이다. Worker는 그냥 "나는 PM이고, 이 파이프라인들 결과야"라는 컨텍스트만 제공한다. 최종 통합은 CLI가 한다.

왜 LLM 호출을 안 할까?

이게 핵심 설계 철학이다.

처음에는 Worker마다 LLM을 호출해서 각자 분석하게 했다. PM Agent가 분석하고, Dev Agent가 분석하고, 마지막에 Master가 통합하고...

토큰 비용이 미쳤다.

생각해봐:

  • PM 분석: 1000 토큰
  • Dev 분석: 1000 토큰
  • QA 분석: 1000 토큰
  • 통합: 2000 토큰
  • 총 5000 토큰 (Worker 3개 케이스)

지금은?

  • 파이프라인 실행: 0 토큰 (API 호출일 뿐)
  • Worker 컨텍스트: 0 토큰 (문자열 조합일 뿐)
  • CLI 최종 답변: 1500 토큰 (한 번만 호출)
  • 총 1500 토큰

70% 토큰 절감. 이게 MasterAgent가 "컨텍스트 수집만 하고 판단 안 하는" 이유다.

결과는 어떻게 전달되나?

MasterAgent는 실행 결과를 태그로 감싸서 반환한다:

파이프라인 실행 결과:

<context>
  <rag>과거 대화 3건 검색됨...</rag>
  <jira>PK-123: 로그인 기능 구현...</jira>
</context>

Worker 실행 결과:

<worker-contexts>
  <worker role="pm">
    <persona>PM 관점에서 분석...</persona>
    <pipelines>jira, notion 결과...</pipelines>
  </worker>
</worker-contexts>

CLI(Claude/Gemini)는 이 태그를 받아서:

  1. 결과 리랭킹 (중요도 정렬)
  2. 통합 (중복 제거, 요약)
  3. 최종 답변 생성

정리하면

컴포넌트 역할 LLM 호출

BrainAgent 뭘 할지 결정 Flash (가벼운 모델)
MasterAgent 결정된 거 실행 없음
Worker 페르소나 + 파이프라인 없음
CLI 리랭킹 + 최종 답변 Opus/Sonnet

MasterAgent의 철학은 단순하다: "판단은 BrainAgent가 했어. 난 그냥 빠르게 실행만 할게."

이 분리 덕분에:

  • 파이프라인 병렬 실행으로 속도 향상
  • LLM 호출 최소화로 비용 절감
  • 각 컴포넌트가 한 가지만 해서 유지보수 용이
반응형