본 프로젝트는 JunctionX Korea 2026 참가작입니다.
1. 개요
최근 여러 개의 작은 모델을 역할별로 조합해 협업시키는 멀티 에이전트 스쿼드가, 잘 설계될 경우 단일 프론티어 모델보다 더 나은 문제 해결 성능을 보여주는 사례가 늘고 있습니다.
그러나 스쿼드가 정교해질수록 사용자 입장에서는 스쿼드가 어떤 에이전트로 구성되어 있는지, 각 에이전트가 어떤 순서와 관계로 문제를 나누어 처리하는지 파악하기 어려워졌습니다. 기존 AI 인터페이스는 여러 에이전트가 동시에 병렬로 수행한 작업을 하나의 선형적인 대화로 뭉뚱그려 보여주기 때문입니다.
AFO(All Forward One)는 이러한 문제를 해결하기 위해 시작된 프로젝트로, Planner와 여러 전문 에이전트로 구성된 스쿼드가 사용자의 요청을 해결해나가는 과정을 노드 기반 그래프로 시각화하는 도구입니다.
사용자는 스쿼드의 구성을 한눈에 확인할 수 있을 뿐만 아니라, 각 에이전트가 어떤 순서(세로축)로, 어떤 관계로 병렬 실행(가로축)되었는지, 그리고 어떤 입력을 받아 어떤 결과를 냈는지까지 인터랙티브하게 따라가며 확인할 수 있습니다.
본 프로젝트는 팀 한정판콩국수에서 진행하였으며, 저는 React 기반 클라이언트와 FastAPI 기반 서버를 모두 개발하는 풀스택 역할을 맡았습니다.
2. 시스템 구성
AFO는 사용자의 입력을 받아 스쿼드가 이를 처리한 뒤 결과를 반환하는 구조로 동작합니다.
스쿼드는 요청을 분석해 실행 계획을 세우는 Planner, 코딩·수학 등 영역별로 특화된 Coding Agent, Math Agent, Generic Agent 등 전문 에이전트, 그리고 각 에이전트에 전달되는 One Shot Prompt로 구성됩니다. 서로 의존성이 없는 작업은 같은 웨이브로 묶여 동시에 실행되고, 이후 에이전트들의 출력은 다시 하나의 결과로 요약됩니다.
| 서비스 | 역할 |
|---|---|
| 클라이언트 | 사용자의 요청 입력, 스쿼드/세션 관리, 웨이브 단위로 실행되는 에이전트들의 추론 과정을 노드 그래프로 시각화 |
| 서버 | 스쿼드 구성 및 실행 계획 수립, 에이전트 병렬 실행 및 결과 요약, 인증 및 세션·대화 기록 관리 |
| 데이터베이스 | 사용자 인증 정보, 스쿼드 및 세션·대화 기록 저장 |
클라이언트는 React, TypeScript, Vite로 구현하였으며, 노드 그래프에서는 세로축으로 에이전트 실행 순서(웨이브)를, 가로축으로 같은 웨이브 내 병렬 실행 관계를 표현해 스쿼드의 추론 흐름을 직관적으로 따라갈 수 있도록 하였습니다.
서버는 FastAPI와 Python으로 구현하였고, 인증과 스쿼드·대화 기록 저장을 위해 Supabase를 데이터베이스로 사용하였습니다.
3. 프로젝트 회고
스쿼드를 구성하는 과정에서 Planner-Solver-Judge, Solver-Aggregator 등 다양한 에이전트 협업 구조를 조사하고 직접 손으로 그려가며 후보 구성들을 비교, 검증하는 데 많은 시간을 들였습니다. 이 과정에서 단순히 에이전트 수를 늘리는 것보다, 역할과 프롬프트를 얼마나 명확하게 나누는지가 스쿼드의 성능에 더 큰 영향을 준다는 것을 체감할 수 있었습니다.
또한 병렬로 실행되는 여러 에이전트의 상태와 결과를 사용자가 지루하지 않게, 오히려 흥미롭게 따라갈 수 있는 시각화를 만드는 것이 생각보다 까다로운 문제였습니다. 세로축은 순서를, 가로축은 병렬성을 표현하는 노드 그래프 구조를 확정하기까지 여러 형태의 레이아웃을 시도하고 다듬어야 했습니다.
React 클라이언트와 FastAPI 서버를 모두 개발하며 인증, 스쿼드 파싱, 실시간에 가까운 그래프 재생까지 하나의 제품을 처음부터 끝까지 만들어보는 경험을 할 수 있었고, 멀티 에이전트 시스템을 어떻게 설계해야 사람이 신뢰하고 이해할 수 있는지에 대해 고민해볼 수 있었던 프로젝트였습니다.
