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

176 lines
7.2 KiB
Markdown

# MAM demo
https://git.godopu.com/tmpl/multi-agent-mux
- resume
```bash
/multi-agent-mux-resume
```
- stop
```bash
/multi-agent-mux-resume
```
- create
```
/multi-agent-mux-create --no-isolate --onboard 다음 새로운 에이전트를 생성해줘.
```
- delegate-job
```bash
/multi-agent-mux-delegate-job agy creator에게 파이썬 초급자를 대상으로 정렬 학습을 위한 예시 코드 작성을 지시해줘.
```
- loop
```bash
/multi-agent-mux-loop --plan --all-reviewer /goal 생성된 예시를 바탕으로 수업에 사용할 학습 자료를 만들어줘. 다음 조건을 충족하여야해.
- 파이썬 초급자가 보더라도 이해하기 쉽도록 실생활 예시를 통해 상세한 설명이 수록되어야 함
- 모든 예시의 주요 코드에 대한 line 별 코드 설명이 있어야 함
```
# herdr 사용법
실습: 세션 생성 → Claude 실행 → 소켓으로 프롬프트 전달 → 결과 확인
### 1. 현재 디렉터리를 cwd로 하는 새 세션 `new_session` 생성
```bash
cd <현재 작업 디렉터리>
herdr --session new_session
```
Herdr의 세션은 launch-or-attach 모델이라 이 한 줄로 세션이 없으면 생성하고 동시에 attach까지 됩니다.
### 2. 생성된 세션에서 Claude 실행
attach된 pane 안에서:
```bash
claude --dangerously-skip-permissions
```
(테스트용으로 권한 프롬프트를 건너뛰려면 `claude --dangerously-skip-permissions`. 신뢰된 환경에서만 사용 권장.)
### 3. 다른 터미널에서 herdr 명령으로 프롬프트 전달 (직접 타이핑 아님)
새 터미널에서 에이전트 목록과 pane_id 확인:
```bash
herdr --session new_session agent list
herdr --session new_session agent get claude
```
텍스트 입력 + Enter 제출을 원자적으로 수행:
```bash
herdr --session new_session pane run <pane_id> "파이썬으로 정렬 프로그램을 작성해줘"
```
### 4. Claude의 결과 화면 출력
완료될 때까지 기다렸다가 읽기:
```bash
herdr --session new_session wait agent-status <pane_id> --status idle
herdr --session new_session pane read <pane_id> --source recent --lines 150
```
현재 화면만 바로 보기:
```bash
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-example/)
* **학습 목표**: CrewAI 프레임워크와 로컬 Ollama 모델을 활용해 두 개 이상의 에이전트(기술 연구원, 작가)가 순차적으로 협업하여 분석 보고서를 도출하는 기초 워크플로우를 이해합니다.
* **실행**:
```bash
./lib/crewai-example/run.sh
```
- https://docs.crewai.com/v1.15.1/ko/tools/overview
### [Step 02] a2a 기초 알아보기 (FastAPI 기반 직접 구현)
* **디렉토리**: [lib/a2a-echo-example/](a2a-echo-example/)
* **학습 목표**: SDK 도움 없이 원시 FastAPI를 사용해 JSON-RPC 2.0 프로토콜, 탐색 엔드포인트(`/.well-known/agent-card.json`), 메시지 수발신 규약을 직접 작성해보며 A2A 프로토콜의 밑바닥 동작 원리를 이해합니다.
* **실행**:
```bash
# 터미널 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/)
* **학습 목표**: 정식 `a2a-sdk`를 적용하여 `AgentExecutor` 기반으로 비즈니스 에코 로직을 구현합니다. 복잡한 소통 인프라(FastAPI 라우트 마운트, 에러 처리, 큐 통신 등)가 SDK에 의해 얼마나 깔끔하게 자동화되는지 비교 체험합니다.
* **실행**:
```bash
# 터미널 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/](a2a-ollama-example/)
* **학습 목표**: 앞선 SDK 뼈대에 실제 로컬 생성형 AI 모델인 `gemma4:31b-cloud`를 이식하여, 들어오는 질문에 지능적으로 답하는 실질적인 AI 비서 에이전트를 조립합니다.
* **실행**:
```bash
# 터미널 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/](advanced-a2a-ollama-example/)
* **학습 목표**: 사용자의 복잡한 질의를 받으면 LLM을 통해 어떤 에이전트가 적합한지 동적으로 판별(분류)하고, 대상 전문 에이전트(Chat Agent 또는 Coder Agent)를 호출하여 답변을 취합하는 고급 오케스트레이션 설계 패턴을 습득합니다.
* **실행**:
```bash
# 터미널 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/](advanced-dynamic-a2a-ollama-example/)
* **학습 목표**: 하드코딩 라우팅의 한계를 이해하고, 런타임에 분산된 에이전트들의 명세 카드(`agent-card.json`)를 동적으로 검색(Discovery)해 스킬 목록을 추출하고, 최적 매칭 노드에 실시간으로 메시지를 라우팅 및 바인딩하는 기법을 실증합니다.
* **터미널 A (Chat 에이전트 - Port 9501)**:
```bash
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server chat
```
* **터미널 B (Coder 에이전트 - Port 9502)**:
```bash
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server coding
```
* **터미널 C (Translator 에이전트 - Port 9503)**:
```bash
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh server translate
```
* **클라이언트 질의 터미널 (오케스트레이터 클라이언트로 번역 질문)**:
```bash
# 오케스트레이터가 번역에 맞는 스킬을 찾아 Translator(9503 포트)로 매칭하는 것을 확인
OLLAMA_MODEL="gemma4:31b-cloud" ./lib/advanced-dynamic-a2a-ollama-example/run.sh client "안녕하세요를 영어로 번역해줘."
```