A2A 프로토콜
Agent Card, Task 라이프사이클, 멀티에이전트 위임
연결의 표준화
에이전트 ↔ 도구, 에이전트 ↔ 에이전트, 에이전트 ↔ 사용자
🤝
A2A
Agent Card · Task Lifecycle · 위임과 결과
PART 3 · A2A
A2A
독립 배포된 에이전트끼리 작업을 위임하고 결과를 받는 표준 — 발견에서 반환까지
🤝
Agent Card · Task · Artifact
에이전트가 서로의 능력을 발견하고, 태스크를 위임하고, 산출물을 구조화하여 돌려받습니다.
- Agent Card — /.well-known 능력 선언
- Task Lifecycle — submitted → working → 터미널 상태
- Message Parts — text · file · data
- MCP와 상호 보완 — 도구는 수직, 위임은 수평
takeaway
발견 → 위임 → 진행 보고 → 결과 반환의 흐름을 따라가고, 마지막에 MCP와의 역할 경계를 확인합니다.
PART 3 · A2A
A2A 핵심 개념
독립 에이전트가 서로를 발견하고, 작업을 위임하고, 결과를 받는 표준
-
1
Agent Card 발행
- /.well-known/agent-card.json에 능력 선언
- 이름, 설명, 지원 스킬, 인증 방식 명시
- 다른 에이전트가 이 카드를 읽어 능력 발견
-
2
태스크 생성
- calling agent가 JSON-RPC로 message/send 요청
- Task ID 발급 → 상태 추적 시작
- 입력 데이터를 Message Parts(text/file/data)로 전달
-
3
처리 (working)
- called agent가 비동기로 작업 수행
- SSE 스트리밍 또는 push notification으로 진행 보고
- 중간 artifact(산출물)를 점진적으로 반환
-
4
결과 반환
- 상태: completed / failed / canceled
- 최종 artifact를 Message Parts로 반환
- calling agent가 결과를 자기 컨텍스트에 통합
takeaway
calling agent는 Task ID로 상태를 추적할 뿐, 실제 수행은 called agent가 자율적으로 판단합니다 — 도구 호출과 갈라지는 지점입니다.
PART 3 · A2A
Task Lifecycle
태스크 상태 전이 — submitted에서 시작하여 completed/failed/canceled/rejected 터미널 상태로 종료
-
1
submitted
calling agent가 message/send 호출
Task 객체 생성 — 고유 ID 부여
아직 처리 시작 안 됨
-
2
working
called agent가 작업 수행 중
SSE로 진행 이벤트 스트리밍 가능
중간 산출물(artifact) 점진 반환
-
3
input-required
추가 정보가 필요하여 대기
calling agent에게 질문 전송
응답 후 working으로 복귀
-
4
터미널 상태
성공 completed — 최종 artifact
실패 failed — 에러 메시지
취소 canceled — tasks/cancel 요청
거절 rejected — called agent가 수행 거부
takeaway
input-required는 비터미널 왕복 지점입니다 — 응답하면 working으로 복귀합니다. 스펙에는 인증 대기용 비터미널 상태 auth-required도 정의되어 있으며, 나머지 전이는 터미널 상태로 직행합니다.
PART 3 · A2A
MCP vs A2A — 언제 무엇을
MCP = 도구 연결(수직), A2A = 에이전트 위임(수평) — 상호 보완적
takeaway
동기적 함수 호출이면 MCP, 자율 판단이 필요한 비동기 위임이면 A2A입니다 — 하나가 다른 하나를 대체하지 않습니다.
도구는 MCP로, 에이전트는 A2A로, 사용자는 AG-UI로 연결합니다.
각 프로토콜의 역할을 구분하면 아키텍처가 명확해집니다.