OpenDev: 순차 실행이 기본인 에이전트 프레임워크에 던지는 반론

DAG 기반 태스크 그래프로 AI 에이전트를 동시에 실행하는 오픈소스 프레임워크 OpenDev의 아키텍처와 LangChain·AutoGen·CrewAI 대비 위치를 정리한다.

2026-08-12 · 최초 발행 2026-03-17

"새 기능을 구현하라"는 요청 하나에도 여러 독립적인 하위 작업이 숨어 있다. 기존 코드베이스 분석, 관련 문서 검색, 단위 테스트 작성, 구현 코드 작성, 코드 리뷰. 순차 실행 방식의 에이전트 시스템은 이 작업들을 하나씩 처리하지만, 코드베이스 분석과 문서 검색은 서로 독립적이라 동시에 돌릴 수 있고 단위 테스트 작성도 구현 초안 생성과 병행될 수 있다. 올바르게 병렬화하면 전체 실행 시간을 이론적으로 최대 60-70%까지 단축할 수 있다. OpenDev는 바로 이 지점 — 순차 실행이 기본값인 에이전트 프레임워크들의 구조적 병목 — 을 해결하려는 오픈소스 프로젝트다.

병렬성을 기본값으로

OpenDev는 Python으로 작성된 오픈소스 프레임워크로 2026년 초 GitHub에 공개됐다. 설계 원칙은 네 가지로 요약된다. 순차 실행이 기본인 기존 프레임워크와 달리 가능한 모든 태스크를 병렬로 돌리는 것을 기본값으로 삼고(병렬성 우선), 에이전트 태스크 간 의존 관계를 방향성 비순환 그래프(DAG)로 표현해 병렬화 가능한 태스크를 자동 식별하며(DAG 기반 태스크 그래프), OpenAI·Anthropic·Google·로컬 Ollama 등 어떤 LLM 백엔드와도 연동되고(LLM 불가지론), Python의 asyncio 위에서 I/O 바운드 LLM API 호출을 효율적으로 처리한다(비동기 우선 설계).

의존 관계가 곧 실행 계획이 되는 구조

사용자는 에이전트 태스크와 그 의존 관계를 선언적으로 정의하고, OpenDev의 스케줄러가 실행 순서와 병렬화 계획을 자동으로 세운다.

사용자 요청 입력태스크 A코드베이스 분석태스크 B문서 검색태스크 C요구사항 파싱태스크 D구현 코드 생성태스크 E테스트 케이스 생성태스크 F코드 리뷰최종 결과물

의존성이 없는 태스크(A, B, C)는 동시에 실행되고, 선행 태스크가 끝난 것들끼리(D, E)는 그다음 단계에서 병렬 실행되며, D와 E가 모두 끝나야 하는 태스크(F)만 마지막에 실행된다.

에이전트 인스턴스는 풀 단위로 관리된다. 풀 크기는 LLM API의 동시 요청 제한과 가용 컴퓨팅 자원에 맞춰 자동 조정되고, 태스크 수에 따라 인스턴스 수도 동적으로 늘고 준다. 각 LLM 제공사의 분당 요청 제한은 자동으로 관리되며, 하나의 에이전트가 실패해도 전체 파이프라인이 멈추지 않도록 격리되고, 실패한 태스크는 설정된 횟수만큼 자동으로 재시도된다.

병렬로 실행된 결과를 다시 하나로 모으는 것도 별개의 문제다. OpenDev는 세 가지 집계 전략을 제공한다. 여러 에이전트의 출력을 단순히 합치는 Merge는 독립적인 리서치 결과를 통합할 때, 집계 에이전트가 여러 출력을 검토해 하나의 결론으로 만드는 Synthesize는 상충하는 관점을 조율할 때, 여러 에이전트가 같은 태스크를 수행하고 다수결로 결과를 정하는 Vote는 정확성이 중요한 사실 확인 태스크에 쓰인다.

LangChain·AutoGen·CrewAI와 나란히 놓으면

LangChain은 LLM 애플리케이션 구축의 사실상 표준이지만 에이전트 실행은 기본적으로 순차적이다. LangGraph를 쓰면 병렬 실행이 가능하지만 설정이 상대적으로 복잡하다. OpenDev는 병렬 실행을 기본 동작으로 설계해 이 설정 부담을 줄이는 대신, LangChain이 갖춘 100개 이상의 도구·벡터 스토어·메모리 통합 생태계는 아직 따라잡지 못했다.

Microsoft의 AutoGen은 에이전트들이 서로 대화하며 협력하는 멀티에이전트 대화 패턴에 강점이 있다. OpenDev는 대화형 협력보다 태스크 병렬화에 집중한다 — 에이전트가 서로 대화하는 게 아니라 독립적인 태스크를 동시에 처리하고 결과를 모으는 패턴에 맞춰져 있다.

CrewAI는 역할 기반 에이전트 팀을 직관적으로 구성할 수 있어 사용 편의성이 높지만, 실제 병렬 실행 지원은 제한적이다. OpenDev는 편의성보다 성능과 병렬성을 우선한다. 설정이 더 복잡한 대신 대규모 병렬 워크플로우에서 성능 이점이 뚜렷하다.

설치와 기본 사용

pip install opendev-agents

# 선택적: LLM 제공사별 추가 패키지
pip install opendev-agents[openai]      # OpenAI 지원
pip install opendev-agents[anthropic]   # Anthropic 지원
pip install opendev-agents[ollama]      # 로컬 Ollama 지원
export OPENAI_API_KEY="your-key"
export ANTHROPIC_API_KEY="your-key"

에이전트와 태스크를 정의하고 그래프로 묶어 실행하는 기본 흐름은 다음과 같다.

from opendev import Agent, TaskGraph, Task

researcher = Agent(
    name="researcher",
    role="Research specialist",
    llm="gpt-4o",
    tools=["web_search", "arxiv_search"]
)

writer = Agent(
    name="writer",
    role="Technical writer",
    llm="claude-3-5-sonnet"
)

research_task = Task(
    agent=researcher,
    description="Research the latest advances in quantum computing",
    expected_output="Structured research summary"
)

writing_task = Task(
    agent=writer,
    description="Write a blog post based on the research",
    depends_on=[research_task]
)

graph = TaskGraph(tasks=[research_task, writing_task])
results = await graph.run()

독립적인 여러 태스크를 병렬로 묶고 싶다면 depends_on에 태스크 리스트를 넘기고 동시 실행 수를 max_workers로 제한하면 된다.

parallel_tasks = [
    Task(agent=agent1, description="Analyze codebase"),
    Task(agent=agent2, description="Search documentation"),
    Task(agent=agent3, description="Generate test cases"),
]

synthesis_task = Task(
    agent=synthesizer,
    description="Integrate all findings",
    depends_on=parallel_tasks  # 세 태스크 모두 완료 후 실행
)

graph = TaskGraph(tasks=parallel_tasks + [synthesis_task])
result = await graph.run(max_workers=10)  # 최대 10개 동시 에이전트

벤치마크가 말하는 것

OpenDev 팀이 공개한 벤치마크에서는 순차 실행 프레임워크 대비 명확한 성능 차이가 나타났다.

병렬 실행 (OpenDev)태스크 115초태스크 218초태스크 312초태스크 4(의존: 1,2,3 완료 후)20초 38초 (42% 단축)순차 실행 (LangChain)태스크 115초태스크 218초태스크 312초태스크 420초 65초

5개 파일 분석과 통합 보고서를 묶은 코드 리뷰 시나리오는 순차 실행 평균 127초에서 병렬 실행 평균 41초로(68% 단축), 7개 소스를 검색해 종합하는 리서치 요약 시나리오는 189초에서 63초로(67% 단축), 멀티 데이터셋을 다루는 데이터 분석 시나리오는 95초에서 34초로(64% 단축) 줄었다. 다만 이 수치는 태스크가 실제로 얼마나 병렬화 가능한지, LLM API의 레이트 리밋이 얼마나 빡빡한지에 크게 좌우된다는 점은 감안해야 한다 — 태스크 간 의존성이 강하면 이점은 그만큼 줄어든다.

어디에 쓰는가

소프트웨어 개발 자동화에서는 코드베이스의 여러 모듈을 병렬로 분석하면서 각 모듈의 테스트와 문서를 동시에 생성할 수 있고, 연구 보고서 작성에서는 여러 데이터 소스를 병렬로 검색·분석한 뒤 통합 에이전트가 일관된 보고서로 묶는다. 콘텐츠 생성 파이프라인에서는 키워드 리서치·경쟁사 분석·개요 작성을 병렬로 돌려 작성 에이전트에 넘기고, 데이터 품질 검증에서는 대용량 데이터셋의 여러 배치를 병렬로 검증한 뒤 결과를 집계한다.

프로젝트에 기여하고 싶다면 opendev/llm_adapters/ 디렉토리에서 기존 어댑터를 참고해 새 LLM 제공사용 어댑터를 추가하거나, 웹 검색·파일 읽기·API 호출 같은 도구 라이브러리를 확장하거나, DAG 실행 스케줄러의 성능을 개선하거나, 튜토리얼과 API 문서를 보강하는 식으로 참여할 수 있다.

git clone https://github.com/opendev-ai/opendev
cd opendev
python -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
pytest tests/  # 기여 전 테스트 통과 확인

LangChain, AutoGen, CrewAI가 각자 자리를 잡은 영역이 있듯, OpenDev는 병렬 처리가 성능을 좌우하는 워크플로우에서 자신의 자리를 찾아가는 중이다. 오픈소스 커뮤니티가 성장하면서 LLM 통합과 도구 생태계가 두터워진다면, 병렬 AI 에이전트 처리의 표준 프레임워크로 자리잡을 잠재력은 충분해 보인다.

Sources

AI에이전트프레임워크병렬처리태스크그래프오픈소스멀티에이전트