에이전트 워크플로우: 패턴, 보안, 프로덕션 설계
에이전트 워크플로우는 하나 이상의 에이전트가 어떤 도구를 호출할지, 언제 다른 에이전트에게 서브태스크를 위임할지, 중간 결과를 바탕으로 접근 방식을 어떻게 조정할지를 자율적으로 결정하는 다단계 AI 프로세스입니다. 각 단계가 하드코딩되어 정확히 한 번 실행되는 고정 파이프라인과 달리, 에이전트 워크플로우는 동적입니다. 에이전트는 환경을 읽고, 상태를 추론하며, 다음 행동을 선택합니다. 그 자율성이 이 기능입니다. 또한 공격 표면이기도 합니다.
OpenLegion은 에이전트 워크플로우 설계를 엔지니어링 분야로 다루는 보안 우선 AI 에이전트 플랫폼입니다. 각 단계는 격리된 컨테이너에서 실행되고, 에이전트 프로세스에는 자격증명이 존재하지 않으며, 모든 반복 루프에는 인프라 수준에서 적용된 하드 스톱 조건이 있습니다.
에이전트 워크플로우란 무엇인가?
에이전트 워크플로우는 자율 에이전트가 도구를 선택하고, 서브태스크를 위임하며, 중간 결과를 바탕으로 실행 계획을 업데이트하는 다단계 AI 프로세스입니다. 각 단계가 설계 시점에 고정된 정적 파이프라인과 대조됩니다.
TL;DR
- 네 가지 핵심 패턴: ReAct 루프, 계획-실행, 성찰 루프, 병렬 팬아웃. 각각 고유한 장애 모드를 가집니다.
- ReAct(Reason + Act, Yao et al. 2023)는 가장 널리 구현된 패턴으로 LangGraph, OpenAI Agents SDK, AutoGen, OpenLegion에서 사용됩니다.
- 주요 공격 벡터: 도구 결과를 통한 프롬프트 인젝션(OWASP LLM Top 10 2025, LLM02). 악의적인 웹 페이지나 문서가 에이전트의 다음 행동을 탈취할 수 있습니다.
- 폭주 루프는 엣지 케이스가 아닙니다: 하드 스톱 조건이 없는 성찰 루프나 ReAct 루프는 예산이 소진될 때까지 실행됩니다.
- OpenLegion 완화 조치: 에이전트별 단계 예산(하드 반복 제한), 컨테이너 격리(침해된 단계가 다른 에이전트의 자격증명에 접근 불가), 제로 텔레메트리.
- 단계 예산 vs. 토큰 예산: 둘 다 중요합니다. 토큰 예산은 지출을 제한하고, 단계 예산은 무제한 추론 루프를 제한합니다.
에이전트 워크플로우가 파이프라인과 다른 점
전통적인 파이프라인은 고정된 시퀀스를 실행합니다: 1단계, 2단계, 3단계. 개발자는 모든 전환을 설계 시점에 정의합니다. 시스템은 결정론적입니다: 동일한 입력이 동일한 실행 경로를 생성합니다.
에이전트 워크플로우는 매 단계마다 의사결정 포인트를 도입합니다. 에이전트는 현재 상태를 읽고, 행동을 선택하며(도구 호출, 다른 에이전트에 위임, 최종 답변 생성, 또는 재루프), 상태를 업데이트합니다. 실행 경로는 개발자가 아닌 모델에 의해 런타임에 결정됩니다.
이 구분은 직접적인 보안 의미를 갖습니다. 고정 파이프라인에서 침해된 단계의 폭발 반경은 해당 단계 출력에 제한됩니다. 에이전트 워크플로우에서 침해된 단계는 에이전트에게 추가 행동을 지시할 수 있습니다. 외부 API 호출, 데이터 유출, 다운스트림 단계에 영향을 미치는 악의적 출력 생성 등이 가능합니다. AI 에이전트 보안 가이드는 전체 위협 모델을 다룹니다. 이 페이지는 워크플로우 패턴 선택이 공격 표면에 어떤 영향을 미치는지에 초점을 맞춥니다.
에이전트 워크플로우의 네 가지 핵심 패턴
패턴 1: ReAct 루프(Reason + Act)
개요. Yao et al.(2023)이 도입한 ReAct는 단일 루프 내에서 추론 트레이스와 행동 호출을 교차합니다. 각 단계에서 모델은 Thought(현재 상태 추론), Action(도구 호출 또는 위임), Observation(도구 결과)을 생성합니다. 모델이 최종 답변을 생성할 때까지 루프가 계속됩니다.
사용 위치. ReAct는 LangGraph, OpenAI Agents SDK, AutoGen 그룹 채팅, OpenLegion의 기본 루프입니다. 가장 널리 배포된 에이전트 워크플로우 패턴입니다.
장애 모드:
- 무제한 루프: 하드 반복 제한이 없으면 ReAct 에이전트가 무한히 루프할 수 있습니다.
- 관찰을 통한 프롬프트 인젝션: Observation 단계가 주요 공격 표면입니다. OWASP LLM02(프롬프트 인젝션)는 ReAct 기반 워크플로우에 대한 최대 위험입니다.
- 컨텍스트 창 팽창: 긴 ReAct 체인은 컨텍스트에 thought/action/observation 트리플을 축적합니다.
OpenLegion 완화: 에이전트별 단계 예산(오케스트레이터가 적용하는 최대 반복 횟수)과 컨테이너 격리.
패턴 2: 계획-실행
개요. 플래너 에이전트가 사전에 완전한 태스크 분해를 생성합니다. 하나 이상의 실행자 에이전트가 단계 사이에 재계획 없이 계획의 각 단계를 수행합니다.
ReAct에 대한 장점. 계획과 실행을 분리하면 토큰 비용이 크게 줄어듭니다. 무거운 추론은 플래너에서 한 번만 수행됩니다. 또한 실행 전에 실행 경로를 검사할 수 있습니다.
장애 모드:
- 계획 드리프트: 실행자가 계획 중간에 예상치 못한 결과를 만나면 오래된 계획을 계속 진행할 수 있습니다.
- 플래너 단일 실패 지점: 플래너 출력을 손상시키는 프롬프트 인젝션은 이후의 모든 실행자 단계에 영향을 미칩니다.
- 적응적 재계획 없음: 순수 계획-실행은 중간 결과가 이후 단계의 수행 내용을 실질적으로 변경하는 태스크를 처리할 수 없습니다.
OpenLegion 완화: 플래너와 실행자는 별도의 컨테이너에서 실행됩니다. 폭발 반경은 플래너 컨테이너 출력에 제한됩니다.
패턴 3: 성찰 루프
개요. 에이전트(또는 별도의 비평가 에이전트)가 자신의 출력을 평가하고 품질 임계값에 도달할 때까지 반복합니다. 콘텐츠 생성, 코드 작성, 분석 태스크에서 일반적입니다.
장애 모드:
- 스톱 조건 없는 폭주 반복: 비평가가 항상 개선할 것을 찾을 수 있으면 루프가 무한히 실행됩니다.
- 자기 강화 오류: 태스크를 잘못 이해하는 모델은 오해를 강화하는 비평을 생성합니다.
- 비용 증폭: 10라운드 성찰 루프는 기본 생성의 10배 비용이 듭니다.
OpenLegion 완화: 에이전트별 단계 예산이 인프라 수준에서 최대 성찰 횟수를 강제합니다.
패턴 4: 병렬 팬아웃
개요. 여러 에이전트가 독립적인 서브태스크를 동시에 실행합니다. 합성 에이전트는 모든 병렬 브랜치가 완료될 때까지 기다린 후 결과를 병합합니다.
장애 모드:
- 비용 증폭: N개의 병렬 에이전트는 직렬 동등물의 N배 비용이 듭니다.
- 합성 오염: 악의적인 브랜치 출력이 병합된 결과를 손상시킬 수 있습니다.
- 동시성 및 공유 상태 충돌: CVE-2025-64168(Agno, CVSS 7.1)이 이를 증명했습니다. 비동기 동시성에서 공유 세션 상태의 레이스 컨디션이 한 사용자의 데이터를 다른 사용자에게 노출했습니다.
OpenLegion 완화: 각 병렬 에이전트는 자체 격리된 Docker 컨테이너에서 실행됩니다. 브랜치 간에 공유되는 가변 상태가 없습니다.
에이전트 워크플로우의 보안 설계
위협 1: 도구 결과를 통한 프롬프트 인젝션
도구 결과는 에이전트 워크플로우의 주요 인젝션 벡터입니다. OWASP LLM02(프롬프트 인젝션)는 2025 Top 10에서 LLM 애플리케이션에 대한 최대 위험입니다. 에이전트 워크플로우의 경우 에이전트가 도구 접근을 가지므로 인젝션된 명령이 실제 세계 행동을 유발할 수 있어 위험이 증폭됩니다.
OpenLegion은 도구 결과 수집 시 유니코드 정제를 적용하며(bidi 오버라이드, 태그 문자, 제로 너비 문자에 대한 56개의 검사 지점), 성공적인 인젝션의 폭발 반경을 제한하는 컨테이너 격리를 추가합니다.
위협 2: 도구 호출 증폭
단계 예산 없이 ReAct 루프에서 비싼 도구를 호출하는 에이전트는 개발자가 알아채기 전에 수백 번의 도구 호출을 할 수 있습니다. 실제 인시던트에는 밤새 실행된 에이전트가 서드파티 서비스에 수천 번의 API 호출을 생성하여 예상치 못한 청구서와 속도 제한 정지를 유발한 사례가 포함됩니다.
OpenLegion은 둘 다 강제합니다: 에이전트별 토큰 예산(지출 상한)과 에이전트별 단계 예산(반복 상한). 어느 한도에 도달하면 에이전트가 중단됩니다.
위협 3: 위임 중 자격증명 노출
에이전트가 Python 프로세스를 공유하는 프레임워크에서 에이전트 B는 기본적으로 에이전트 A의 환경 변수에 접근할 수 있습니다. 침해된 위임 단계는 워크플로우에서 사용 가능한 모든 자격증명을 노출할 수 있습니다.
OpenLegion은 Mesh Host를 통한 볼트 프록시 자격증명 인젝션을 사용합니다. 에이전트 B 컨테이너는 fleet ACL 매트릭스에서 명시적으로 할당된 자격증명만 받습니다. 에이전트 A의 자격증명은 받지 않습니다.
위협 4: 무제한 재귀와 자기 스포닝
에이전트가 제한 없이 하위 에이전트를 생성할 수 있는 에이전트 워크플로우는 지수적 재귀로 조작될 수 있습니다. OpenLegion은 이를 제한합니다: can_spawn 권한은 명시적인 관리자 승인이 필요하고, 하위 에이전트 깊이는 메시 구성에 의해 제한되며, fleet 템플릿은 최대 에이전트 수를 정의합니다.
단계 예산 vs. 토큰 예산: 둘 다 필요한 이유
토큰 예산은 에이전트당 하루 총 지출을 제한합니다. 필요하지만 충분하지 않습니다. 토큰 예산은 저렴한 도구를 사용한 ReAct 루프가 500번 반복하는 것을 막지 못합니다. 단계 예산은 토큰 비용에 관계없이 추론 반복 횟수나 도구 호출 수를 제한합니다.
OpenLegion은 둘 다 구현합니다: Zone 2의 코스트 트래커가 적용하는 토큰 예산과 인프라 수준에서 오케스트레이터가 적용하는 단계 예산.
프로덕션용 에이전트 워크플로우 설계
태스크에 맞는 패턴 선택
| 태스크 유형 | 권장 패턴 | 이유 |
|---|---|---|
| 개방형 연구 | 단계 예산이 있는 ReAct 루프 | 적응적 도구 선택 필요; 루프 제한 |
| 구조화된 다단계 태스크 | 계획-실행 | 검사 가능한 계획; 토큰 비용 절감 |
| 품질에 민감한 생성 | 단계 제한이 있는 성찰 루프 | 자기 교정; 하드 스톱으로 폭주 방지 |
| 병렬 데이터 수집 | 팬아웃 + 합성 | 독립적인 서브태스크; 에이전트별 격리 |
| 긴 문서 처리 | 팬아웃 + 순차 병합 | 청크 처리 병렬화 |
배포 전 스톱 조건 정의
에이전트 워크플로우의 모든 루프에는 인프라 수준에서 적용된 명시적인 스톱 조건이 필요합니다. 모델이 언제 멈출지 결정하면 프롬프트 인젝션이 멈추는 것을 방해할 수 있습니다.
단계 경계에서 출력 검증
각 단계 경계는 다음 단계로 전달하기 전에 출력이 예상 스키마와 일치하는지 검증할 기회입니다. OpenLegion의 fleet-model 조정은 각 핸드오프 포인트에서 출력 검증자를 적용합니다. 구현 세부사항은 AI 에이전트 오케스트레이션 가이드를 참조하세요.
권한을 필요 최소한으로 제한
각 에이전트는 특정 단계에 필요한 도구와 권한만 가져야 합니다. 과도한 권한을 가진 에이전트는 침해 시 폭발 반경을 증폭시킵니다. OpenLegion fleet 구성의 에이전트별 ACL 매트릭스는 오케스트레이터 수준에서 최소 권한을 강제합니다.
에이전트 워크플로우 프레임워크: 패턴 지원 비교
| 프레임워크 | ReAct | 계획-실행 | 성찰 | 팬아웃 | 단계 예산 | 컨테이너 격리 |
|---|---|---|---|---|---|---|
| OpenLegion | 예 | 예 | 예 | 예 | 예(하드) | 예(필수) |
| LangGraph | 예 | 예 | 예 | 예 | 내장 없음 | 아니오 |
| CrewAI | 예(Flows) | 예(Crews) | 제한적 | 예(parallel) | 아니오 | 아니오(CodeInterpreter만) |
| OpenAI Agents SDK | 예 | 제한적 | 제한적 | 예(handoffs) | 아니오 | 아니오 |
| AutoGen | 예 | 예 | 예 | 예(group chat) | 아니오 | 코드에만 Docker |
이 프레임워크들의 상세한 보안 및 아키텍처 비교는 AI 에이전트 프레임워크 비교를 참조하세요.
OpenLegion의 견해
에이전트 워크플로우는 대부분의 프레임워크의 보안 부채가 프로덕션에서 드러나는 곳입니다. 단계 예산이 없는 ReAct 루프는 5자리, 6자리 예상치 못한 API 청구서를 생성했습니다. CVE-2025-64168(Agno, CVSS 7.1, 2025년 10월)은 Python 프로세스를 공유하는 동시 에이전트 워크플로우가 높은 비동기 부하 하에서 한 사용자의 세션 상태를 다른 사용자에게 노출할 수 있음을 증명했습니다. OWASP LLM02(프롬프트 인젝션, 2025 Top 10)는 도구 결과 인젝션을 ReAct 기반 에이전트 워크플로우에 대한 주요 공격 벡터로 식별합니다.
OpenLegion은 세 가지 속성을 아키텍처적으로 다룹니다: 하드 단계 예산(오케스트레이터가 적용하는 최대 반복 횟수), 에이전트별 컨테이너 격리(병렬 브랜치 간 공유 가변 상태 없음), 볼트 프록시 자격증명 인젝션(위임 핸드오프가 Zone 2를 통해 라우팅됨). 이것들은 구성 옵션이 아니라 기본 아키텍처입니다.
트레이드오프: OpenLegion은 LangGraph의 약 25,200개, CrewAI의 약 44,600개와 비교해 약 59개의 GitHub 스타를 가집니다. 이 패턴들이 프레임워크에서 어떻게 구현되는지 비교는 AI 에이전트 프레임워크 비교를 참조하세요.
희망하는 스톱 조건이 아닌 하드 스톱 조건으로 에이전트 워크플로우를 구축하세요.
자주 묻는 질문
에이전트 워크플로우란 무엇인가요?
에이전트 워크플로우는 하나 이상의 에이전트가 도구를 자율적으로 선택하고, 다른 에이전트에게 서브태스크를 위임하며, 중간 결과를 바탕으로 실행 계획을 조정하는 다단계 AI 프로세스입니다. 고정 단계를 가진 정적 파이프라인과 달리, 에이전트 워크플로우의 실행 경로는 모델 추론에 의해 런타임에 결정됩니다. 네 가지 핵심 패턴은 ReAct 루프, 계획-실행, 성찰 루프, 병렬 팬아웃으로, 각각 고유한 장애 모드와 보안 의미를 가집니다.
에이전트 워크플로우에서 ReAct 패턴이란 무엇인가요?
ReAct(Reason + Act)는 2023년 Yao et al.이 도입했으며, 단일 루프에서 추론 트레이스와 도구 호출을 교차합니다. 각 단계에서 모델은 Thought(추론), Action(도구 호출), Observation(도구 결과)을 생성합니다. ReAct는 LangGraph, OpenAI Agents SDK, AutoGen, OpenLegion의 기본 에이전트 워크플로우 패턴입니다. 주요 장애 모드는 무제한 반복과 도구 결과를 통한 프롬프트 인젝션입니다.
에이전트 워크플로우의 폭주 루프를 방지하는 방법은?
폭주 루프를 방지하는 유일하게 신뢰할 수 있는 방법은 모델 자체가 멈추는 것에 의존하지 않고 인프라 수준에서 스톱 조건을 강제하는 것입니다. 두 가지 제어가 필요합니다: 단계 예산(오케스트레이터가 적용하는 최대 반복 또는 도구 호출 횟수)과 토큰 예산(코스트 트래커가 적용하는 최대 지출). 토큰 예산만으로는 저렴한 도구의 고빈도 루프를 막을 수 없습니다. 단계 예산만으로는 반복당 비싼 LLM 비용을 제한할 수 없습니다. OpenLegion은 에이전트별로 하드 한도로 둘 다 적용합니다.
에이전트 워크플로우에서 계획-실행이란 무엇인가요?
계획-실행은 에이전트 워크플로우를 두 단계로 나눕니다: 플래너 에이전트가 사전에 완전한 태스크 분해를 생성하고, 하나 이상의 실행자 에이전트가 재계획 없이 각 단계를 수행합니다. 이는 ReAct에 비해 토큰 비용을 줄이며(매 단계가 아닌 한 번의 무거운 추론), 실행 전에 실행 경로를 검사 가능하게 합니다. 주요 장애 모드는 계획 드리프트입니다. 실행자가 예상치 못한 결과를 만나면 불일치를 표시하는 대신 오래된 계획을 계속 진행할 수 있습니다.
에이전트 워크플로우에서 주요 보안 위험은 무엇인가요?
주요 공격 벡터는 도구 결과를 통한 프롬프트 인젝션(OWASP LLM02, 2025 Top 10)입니다. 에이전트가 웹 페이지, 파일, 데이터베이스 레코드, 외부 API 응답을 읽을 때 그 콘텐츠는 신뢰할 수 있는 입력으로 도착합니다. 악의적인 문서는 에이전트를 의도치 않은 행동으로 유도하는 명령을 포함할 수 있습니다. 완화 조치에는 도구 결과 수집 시 유니코드 정제, 단계 경계에서의 출력 스키마 검증, 성공적인 인젝션의 폭발 반경을 제한하는 컨테이너 격리가 포함됩니다.
에이전트 워크플로우에서 병렬 팬아웃은 어떻게 작동하나요?
병렬 팬아웃은 여러 에이전트가 독립적인 서브태스크에서 동시에 작업하게 하고, 합성 단계에서 결과를 병합합니다. 독립적인 작업 흐름으로 분해할 수 있는 태스크의 벽시계 시간을 줄입니다. 장애 모드는 비용 증폭(N 에이전트는 N배 더 비쌈), 합성 오염(악의적인 브랜치 출력이 병합된 결과를 손상), 동시 에이전트가 가변 프로세스 상태를 공유하는 프레임워크의 공유 상태 충돌입니다. OpenLegion은 각 병렬 에이전트를 자체 상태를 가진 격리된 Docker 컨테이너에서 실행하여 공유 상태 충돌을 방지하고 각 브랜치를 독립적으로 제한합니다.
에이전트 워크플로우에서 계획 드리프트란 무엇인가요?
계획 드리프트는 계획-실행 워크플로우에서 실행자 에이전트가 예상치 못한 중간 결과를 만나지만 불일치를 표시하는 대신 원래 계획을 계속 실행할 때 발생합니다. 완화 조치에는 명시적 계획 검증 체크포인트, 중요한 계획 단계의 사람 승인 게이트, 진행하기 전 불일치를 드러내는 구조화된 핸드오프 프로토콜이 포함됩니다. OpenLegion fleet-model 조정은 모든 핸드오프 포인트에서 채널 통합을 통한 사람 참여 루프 체크포인트를 지원합니다.
에이전트 워크플로우 설계는 AI 에이전트 오케스트레이션과 어떻게 다른가요?
에이전트 워크플로우 설계는 단계 수준의 구조에 초점을 맞춥니다: 어떤 패턴(ReAct, 계획-실행, 성찰, 팬아웃), 어떤 스톱 조건, 도구 결과가 어떻게 검증되는지, 각 단계에서 자격증명이 어떻게 범위 지정되는지. AI 에이전트 오케스트레이션은 fleet 수준의 조정에 초점을 맞춥니다: 여러 워크플로우가 어떻게 시퀀스되는지, 에이전트가 서로 어떻게 작업을 전달하는지, 멀티에이전트 시스템 전체에서 공유 상태가 어떻게 관리되는지. AI 에이전트 오케스트레이션 가이드는 여기서 설명된 워크플로우 패턴 위에서 작동하는 fleet 수준 조정 기본 요소를 다룹니다.