7.2 KiB
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)
-
학습 목표: 하드코딩 라우팅의 한계를 이해하고, 런타임에 분산된 에이전트들의 명세 카드(
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 "안녕하세요를 영어로 번역해줘."