Files
landing_page/multi-agent-orchestration/SCRIPTS.md
T

7.2 KiB

MAM demo

https://git.godopu.com/tmpl/multi-agent-mux

  • resume

    /multi-agent-mux-resume
    
  • stop

    /multi-agent-mux-resume
    
  • create

    /multi-agent-mux-create --no-isolate --onboard 다음 새로운 에이전트를 생성해줘.
    
  • delegate-job

    /multi-agent-mux-delegate-job agy creator에게 파이썬 초급자를 대상으로 정렬 학습을 위한 예시 코드 작성을 지시해줘.
    
  • loop

    /multi-agent-mux-loop --plan --all-reviewer /goal 생성된 예시를 바탕으로 수업에 사용할 학습 자료를 만들어줘. 다음 조건을 충족하여야해. 
    
    - 파이썬 초급자가 보더라도 이해하기 쉽도록 실생활 예시를 통해 상세한 설명이 수록되어야 함
    - 모든 예시의 주요 코드에 대한 line 별 코드 설명이 있어야 함
    

herdr 사용법

실습: 세션 생성 → Claude 실행 → 소켓으로 프롬프트 전달 → 결과 확인

1. 현재 디렉터리를 cwd로 하는 새 세션 new_session 생성

cd <현재 작업 디렉터리>
herdr --session new_session

Herdr의 세션은 launch-or-attach 모델이라 이 한 줄로 세션이 없으면 생성하고 동시에 attach까지 됩니다.

2. 생성된 세션에서 Claude 실행

attach된 pane 안에서:

claude --dangerously-skip-permissions

(테스트용으로 권한 프롬프트를 건너뛰려면 claude --dangerously-skip-permissions. 신뢰된 환경에서만 사용 권장.)

3. 다른 터미널에서 herdr 명령으로 프롬프트 전달 (직접 타이핑 아님)

새 터미널에서 에이전트 목록과 pane_id 확인:

herdr --session new_session agent list
herdr --session new_session agent get claude

텍스트 입력 + Enter 제출을 원자적으로 수행:

herdr --session new_session pane run <pane_id> "파이썬으로 정렬 프로그램을 작성해줘"

4. Claude의 결과 화면 출력

완료될 때까지 기다렸다가 읽기:

herdr --session new_session wait agent-status <pane_id> --status idle
herdr --session new_session pane read <pane_id> --source recent --lines 150

현재 화면만 바로 보기:

herdr --session new_session pane read <pane_id> --source visible --lines 80

--session new_session을 매번 붙이는 대신 export HERDR_SESSION=new_session으로 환경변수를 설정하면 이후 명령에서 생략 가능합니다.

a2a 실습

🗺️ 5단계 학습 로드맵 (Learning Roadmap)

[Step 01] crewai를 통한 multi-agent 시작하기

  • 디렉토리: lib/crewai-example/
  • 학습 목표: CrewAI 프레임워크와 로컬 Ollama 모델을 활용해 두 개 이상의 에이전트(기술 연구원, 작가)가 순차적으로 협업하여 분석 보고서를 도출하는 기초 워크플로우를 이해합니다.
  • 실행:
    ./lib/crewai-example/run.sh
    

[Step 02] a2a 기초 알아보기 (FastAPI 기반 직접 구현)

  • 디렉토리: lib/a2a-echo-example/
  • 학습 목표: SDK 도움 없이 원시 FastAPI를 사용해 JSON-RPC 2.0 프로토콜, 탐색 엔드포인트(/.well-known/agent-card.json), 메시지 수발신 규약을 직접 작성해보며 A2A 프로토콜의 밑바닥 동작 원리를 이해합니다.
  • 실행:
    # 터미널 1: 에코 에이전트 서버 구동
    ./lib/a2a-echo-example/run.sh server
    # 터미널 2: 테스트 메시지 클라이언트 실행
    ./lib/a2a-echo-example/run.sh client
    

[Step 03] a2a sdk 알아보기 (공식 SDK 전환)

  • 디렉토리: lib/a2a_sdk/
  • 학습 목표: 정식 a2a-sdk를 적용하여 AgentExecutor 기반으로 비즈니스 에코 로직을 구현합니다. 복잡한 소통 인프라(FastAPI 라우트 마운트, 에러 처리, 큐 통신 등)가 SDK에 의해 얼마나 깔끔하게 자동화되는지 비교 체험합니다.
  • 실행:
    # 터미널 1: SDK 기반 에코 서버 구동
    ./lib/a2a_sdk/run.sh server
    # 터미널 2: SDK 규격 호환 클라이언트 실행
    ./lib/a2a_sdk/run.sh client
    

[Step 04] a2a를 이용하여 multi agent 구현해보기

  • 디렉토리: lib/a2a-ollama-example/
  • 학습 목표: 앞선 SDK 뼈대에 실제 로컬 생성형 AI 모델인 gemma4:31b-cloud를 이식하여, 들어오는 질문에 지능적으로 답하는 실질적인 AI 비서 에이전트를 조립합니다.
  • 실행:
    # 터미널 1: Ollama 연동 AI 에이전트 서버 구동
    ./lib/a2a-ollama-example/run.sh server
    # 터미널 2: 질문 전송 테스트
    ./lib/a2a-ollama-example/run.sh client "프랑스의 수도는 어디야?"
    

[Step 05] 작업 할당은 어떻게 이루어질까? (오케스트레이션)

  • 디렉토리: lib/advanced-a2a-ollama-example/
  • 학습 목표: 사용자의 복잡한 질의를 받으면 LLM을 통해 어떤 에이전트가 적합한지 동적으로 판별(분류)하고, 대상 전문 에이전트(Chat Agent 또는 Coder Agent)를 호출하여 답변을 취합하는 고급 오케스트레이션 설계 패턴을 습득합니다.
  • 실행:
    # 터미널 1: 두 독립 에이전트(Chat:8001, Coder:8002) 서버 동시 구동
    ./lib/advanced-a2a-ollama-example/run.sh server
    
    # (선택) 개별 터미널에서 서버를 분리 구동하고 싶을 때
    # 터미널 1A: Chat 에이전트만 구동 (Port 8001)
    ./lib/advanced-a2a-ollama-example/run.sh server chat
    # 터미널 1B: Coder 에이전트만 구동 (Port 8002)
    ./lib/advanced-a2a-ollama-example/run.sh server coding
    
    # 터미널 2: 오케스트레이터 작동 및 분류 인터랙션 실행
    ./lib/advanced-a2a-ollama-example/run.sh client "프랑스의 수도는 어디야?"
    

[Step 06] 동적 라우팅과 서비스 탐색 (Dynamic Binding)

  • 디렉토리: lib/advanced-dynamic-a2a-ollama-example/

  • 학습 목표: 하드코딩 라우팅의 한계를 이해하고, 런타임에 분산된 에이전트들의 명세 카드(agent-card.json)를 동적으로 검색(Discovery)해 스킬 목록을 추출하고, 최적 매칭 노드에 실시간으로 메시지를 라우팅 및 바인딩하는 기법을 실증합니다.

  • 터미널 A (Chat 에이전트 - Port 9501):

OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server chat
  • 터미널 B (Coder 에이전트 - Port 9502):
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server coding
  • 터미널 C (Translator 에이전트 - Port 9503):
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server translate
  • 클라이언트 질의 터미널 (오케스트레이터 클라이언트로 번역 질문):
# 오케스트레이터가 번역에 맞는 스킬을 찾아 Translator(9503 포트)로 매칭하는 것을 확인
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh client "안녕하세요를 영어로 번역해줘."