TrendShift #3 딥다이브 · 슈퍼 에이전트 · 2026-06-04 분석

DeerFlow 2.0 딥다이브
— ByteDance의 LangGraph 기반 슈퍼 에이전트 하네스

DeerFlow는 ByteDance(TikTok 모회사)가 MIT 라이선스로 공개한 풀스택 AI 에이전트 프레임워크입니다. 서브에이전트 오케스트레이션·Docker 샌드박스·퍼시스턴트 메모리·MCP 통합·스킬 시스템을 하나로 묶어 리서치·코딩·콘텐츠 생성을 수 분~수 시간에 걸쳐 자율 수행합니다. ⭐ 70,184 · Python + TypeScript · MIT · bytedance/deer-flow
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

DeerFlow가 정확히 무엇을 하는 물건인가

DeerFlow 2.0은 ByteDance가 만든 LangGraph 기반 "슈퍼 에이전트 하네스"입니다. 단순 에이전트 라이브러리가 아니라, 에이전트·도구·메모리·샌드박스·스킬·메시징 채널을 총괄하는 통합 런타임입니다. v1.0(Deep Research 프레임워크)에서 v2.0으로 완전 재설계(ground-up rewrite)되어 아키텍처 성숙도가 높습니다. 2026년 2월 28일 GitHub Trending 1위 달성 후 폭발적으로 성장했습니다.

한 컷 비유

"에이전트를 위한 오케스트라 지휘석 — 모든 악기(도구)가 여기서 조율된다"

LangGraph가 바이올린·첼로·피아노(에이전트 로직)를 만드는 악기라면, DeerFlow는 전체 오케스트라를 지휘하는 공연장입니다. 무대(샌드박스), 악보(스킬), 방음실(메모리), 통신(IM 채널)까지 공연에 필요한 모든 것을 갖춥니다.

특히 다수의 미들웨어(15개+)가 파이프라인으로 순차 실행되는 구조가 핵심입니다. 각 미들웨어가 관심사를 분리하여 코어를 건드리지 않고 기능을 추가·제거할 수 있습니다.

2왜 주목받는가

트렌딩 이유와 경쟁 프레임워크 대비 강점
DeerFlow의 핵심 차별점 3가지
하네스 개념 + 미들웨어 체인 + Harness/App 분리

1. 하네스 개념: 에이전트·도구·메모리·샌드박스·스킬을 총괄하는 통합 런타임. 단순 프레임워크보다 상위 개념.
2. 미들웨어 체인: 다수의 미들웨어(15개+)가 파이프라인으로 동작 — 관심사 분리가 극도로 깔끔.
3. Harness/App 분리: 에이전트 코어(deerflow-harness)와 애플리케이션(app)의 경계를 CI 테스트로 강제.

경쟁 프레임워크 대비 비교

비교 항목DeerFlow 2.0AutoGenCrewAILangGraph 단독
서브에이전트 오케스트레이션내장 (리드→서브 위임)멀티에이전트 대화크루/태스크 기반직접 구현 필요
샌드박스 격리Docker/K8s 네이티브제한적없음없음
퍼시스턴트 메모리LLM 기반 팩트 추출 + JSON제한적없음직접 구현
MCP 통합OAuth 포함 다중 서버없음없음없음
스킬 시스템마크다운 기반 프로그레시브 로딩없음없음없음
IM 채널 통합7개 채널 (Telegram/Slack/Feishu/Discord/DingTalk/WeCom/WeChat)없음없음없음
프론트엔드Next.js 풀스택 웹 UI별도없음별도
GitHub 스타⭐ 70,18436k+25k+별도 카운트

3기술 스택 전체 지도

백엔드 / 프론트엔드 / 인프라 각각 상세

① 백엔드

카테고리기술역할
언어Python 3.12+타입 힌트 전면 활용
에이전트 프레임워크LangGraph + LangChain워크플로우 그래프 기반 에이전트 실행
API 서버FastAPI + UvicornGateway API (포트 8001)
LLM 통합OpenAI, Anthropic, Google, DeepSeek 등YAML 설정으로 교체 가능
MCP 클라이언트langchain-mcp-adaptersstdio/SSE/HTTP + OAuth 지원
패키지 관리uv빠른 Python 패키지 관리
코드 품질ruff린트 + 포맷팅 통합
문서 변환markitdownPDF/PPT/Excel/Word → 마크다운

② 프론트엔드

카테고리기술역할
프레임워크Next.js 16.2.6+ + React 19SSR + Turbo 개발 서버
언어TypeScript엄격 타입 체크
UI 컴포넌트Radix UI접근성 기반 헤드리스 컴포넌트
스타일링Tailwind CSS유틸리티 퍼스트
코드 에디터CodeMirror 6JS/Python/HTML/CSS/JSON/MD 지원
AI SDKVercel AI SDK + LangGraph SDK스트리밍 에이전트 통신
시각화XYFlow노드 기반 그래프 렌더링
마크다운Remark + Rehype + KaTeX + ShikiGFM + 수학 + 코드 하이라이팅
패키지 관리pnpm 10.26.2효율적 의존성 관리

③ 인프라

카테고리기술역할
리버스 프록시Nginx (포트 2026)통합 진입점, API 라우팅
컨테이너Docker + Docker Compose개발/프로덕션 배포
오케스트레이션Kubernetes (옵션)프로비저너 모드 샌드박스
빌드 시스템Makefile전체 서비스 관리
상태 저장SQLite / PostgreSQL체크포인트 (선택)

4아키텍처 심화 분석

시스템 구조도와 핵심 설계 패턴 5가지

시스템 구조도

┌────────────────────────────────────────────────────────────┐ │ Nginx (포트 2026) │ │ 통합 리버스 프록시 │ │ /api/langgraph/* /api/* /* (기타) │ │ ↓ ↓ ↓ │ │ Gateway API (포트 8001) Frontend (Next.js) │ │ (LangGraph 인프로세스) (포트 3000) │ └────────────────────┬──────────────────────────────────────┘ │ ┌──────────┴──────────────────────────────┐ │ deerflow-harness (코어) │ │ │ │ Lead Agent ─▶ Middleware Chain (15개+) ─▶ Tool System │ │ │ │ Subagent System Memory System MCP System │ (최대 3동시) (JSON 저장) (OAuth) │ │ │ ┌────┴─────────────────────────────┐ │ │ Sandbox System │ │ │ Local │ Docker │ K8s Provisioner │ │ └──────────────────────────────────┘ └─────────────────────────────────────────┘ │ ┌──────────┴──────────────────────────────┐ │ IM Channels (선택적, 7개) │ │ Telegram │ Slack │ Feishu │ Discord │ │ DingTalk │ WeCom │ WeChat │ └──────────────────────────────────────────┘

패턴 1 — Harness/App 분리 (핵심 아키텍처)

# 허용: app → deerflow (단방향 의존)
from deerflow.config import get_app_config   # OK

# 금지: deerflow → app (CI 테스트로 강제)
from app.gateway.routers import ...           # test_harness_boundary.py 실패!

코어 에이전트 로직을 독립 패키지로 배포 가능하게 만드는 패턴입니다. Django와 Django REST Framework의 관계처럼, 하네스는 어떤 앱에서든 재사용 가능합니다.

패턴 2 — 미들웨어 체인 (15개+)

요청 → ThreadData → Uploads → Sandbox → DanglingToolCall → Summarization → TodoList → Title → Memory → ViewImage → SubagentLimit → Clarification → LLM 호출 각 미들웨어의 핵심 역할: ThreadDataMiddleware : 스레드별 디렉토리 생성 (threads/{id}/user-data/) SandboxMiddleware : 샌드박스 획득, sandbox_id 상태 저장 DanglingToolCallMiddleware : 인터럽트 시 orphan tool_call에 placeholder 주입 SummarizationMiddleware: 토큰 한도 접근 시 자동 컨텍스트 축소 MemoryMiddleware : 대화를 비동기 메모리 업데이트 큐 등록 SubagentLimitMiddleware: 동시 서브에이전트 3개 초과 시 tool_call 절단 ClarificationMiddleware: ask_clarification 감지 → Command(goto=END) 인터럽트

패턴 3 — 가상 경로 시스템

에이전트가 보는 경로실제 물리 경로
/mnt/user-data/workspacebackend/.deer-flow/threads/{id}/user-data/workspace
/mnt/user-data/uploadsbackend/.deer-flow/threads/{id}/user-data/uploads
/mnt/user-data/outputsbackend/.deer-flow/threads/{id}/user-data/outputs
/mnt/skillsdeer-flow/skills/

replace_virtual_path() / replace_virtual_paths_in_command() 함수가 양방향 변환을 처리합니다.

패턴 4 — 디바운스 메모리 업데이트

대화 → MemoryMiddleware → 큐 등록 → 30초 디바운스 대기 → LLM이 팩트 추출 (category: preference/knowledge/context/behavior/goal) → 중복 제거 (whitespace 정규화) → 원자적 저장 (tmp + rename) → 다음 대화에서 상위 15개 팩트를 시스템 프롬프트에 주입

패턴 5 — 리플렉션 기반 동적 로딩

config.yaml의 클래스 경로 문자열을 런타임에 실제 객체로 변환하는 시스템입니다. 누락된 패키지는 자동으로 설치 힌트를 제공합니다.

# config.yaml
models:
  - use: "langchain_openai:ChatOpenAI"  # → 런타임에 동적 import
sandbox:
  use: "deerflow.sandbox.local:LocalSandboxProvider"
# 누락 시: "uv add langchain-google-genai" 힌트 자동 제공

5디렉토리 구조 해부

핵심 디렉토리와 각 파일의 역할
deer-flow/ ├── Makefile # 전체 서비스 관리 (dev, stop, docker-start) ├── config.example.yaml # 설정 템플릿 (모델, 도구, 샌드박스, 메모리) ├── extensions_config.example.json # MCP 서버 + 스킬 활성화 설정 │ ├── backend/ │ ├── packages/harness/deerflow/ │ │ ├── agents/ │ │ │ ├── lead_agent/ # 리드 에이전트 (팩토리 + 시스템 프롬프트) │ │ │ ├── middlewares/ # 15개+ 미들웨어 컴포넌트 │ │ │ ├── memory/ # 메모리 추출·큐·프롬프트 │ │ │ └── thread_state.py # ThreadState 스키마 │ │ ├── sandbox/ │ │ │ ├── local/ # 로컬 파일시스템 프로바이더 │ │ │ ├── sandbox.py # 추상 Sandbox 인터페이스 │ │ │ └── tools.py # bash, ls, read/write, str_replace │ │ ├── subagents/ │ │ │ ├── builtins/ # general-purpose, bash 에이전트 │ │ │ ├── executor.py # 백그라운드 실행 엔진 │ │ │ └── registry.py # 에이전트 레지스트리 │ │ ├── mcp/ # MCP 통합 (도구, 캐시, 클라이언트) │ │ ├── models/ # 모델 팩토리 (thinking/vision 지원) │ │ ├── skills/ # 스킬 디스커버리·로딩·파싱 │ │ ├── community/ │ │ │ ├── tavily/ # 웹 검색 (5개 결과) + fetch (4KB 제한) │ │ │ ├── jina_ai/ # Jina reader API │ │ │ └── firecrawl/ # Firecrawl 스크래핑 │ │ └── client.py # 임베디드 Python 클라이언트 │ │ │ ├── app/ │ │ ├── gateway/ # FastAPI Gateway API (6개 라우트) │ │ └── channels/ # IM 플랫폼 통합 │ │ ├── message_bus.py # 비동기 pub/sub 허브 │ │ ├── slack.py / feishu.py / telegram.py │ │ │ └── tests/ │ ├── test_harness_boundary.py # Harness→App 임포트 방화벽 │ └── test_client.py # 77개 유닛 테스트 │ ├── frontend/ # Next.js 프론트엔드 │ └── skills/ └── public/ # 공개 스킬 22개 ├── deep-research/ ├── data-analysis/ ├── ppt-generation/ ├── podcast-generation/ └── skill-creator/ ...

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있는가

6.1 LangGraph — 에이전트 그래프 설계

AgentState를 확장하여 커스텀 ThreadState를 만들고, make_lead_agent() 팩토리 패턴으로 동적 에이전트를 생성하는 방법을 배울 수 있습니다. RunnableConfig를 통한 런타임 설정 주입, Command(goto=END)로 그래프 실행을 인터럽트하는 패턴도 포함됩니다.

6.2 FastAPI — Gateway API 설계

라우터 모듈 분리 패턴(6개 라우트 모듈이 각각 독립적), SSE(Server-Sent Events) 스트리밍 응답, Pydantic 응답 모델을 활용한 Gateway Conformance 테스트를 배울 수 있습니다.

6.3 미들웨어 아키텍처 — 관심사 분리

before_model / after_model 훅 패턴, 미들웨어 순서의 중요성(ClarificationMiddleware가 반드시 마지막이어야 하는 이유), 상태 변환 체인에서의 부작용 관리를 배울 수 있습니다.

6.4 샌드박스 시스템 — 코드 실행 격리

추상 Sandbox 인터페이스 → Provider 패턴(Local, Docker, K8s), 가상 경로 시스템으로 에이전트와 호스트 파일시스템 분리, acquire → get → release 라이프사이클 관리를 배울 수 있습니다.

6.5 MCP(Model Context Protocol) 통합

langchain-mcp-adaptersMultiServerMCPClient 활용법, stdio/SSE/HTTP 3가지 트랜스포트 모드, OAuth 토큰 플로우 + 자동 갱신, mtime 기반 캐시 무효화를 배울 수 있습니다.

6.6 메모리 시스템 — LLM 기반 자동 기억

LLM으로 대화에서 팩트 자동 추출(category: preference/knowledge/context/behavior/goal), 디바운스 큐로 효율적 배치 처리, 원자적 파일 I/O, whitespace 정규화 기반 중복 제거를 배울 수 있습니다.

6.7 설정 시스템 — 환경변수 + YAML + 런타임

Config 버전 관리(config_version 필드), $VARIABLE_NAME 문법으로 환경변수 해석, mtime 기반 자동 리로드(프로세스 재시작 없이 설정 반영), 4단계 설정 우선순위를 배울 수 있습니다.

7하드웨어 / 시스템 요구사항

로컬 실행 최소 사양
항목최소 사양권장 사양
Python3.12+3.12+
Node.js22+22+
패키지 매니저pnpm, uvpnpm 10.26+, uv 최신
DockerDocker EngineDocker Desktop 최신
RAM8GB+ (로컬 개발)16GB+ (Docker 샌드박스 포함)
디스크5GB+ (의존성 + Docker 이미지)10GB+
LLM API 키OpenAI 또는 호환 API 1개Claude/GPT-4/Gemini 중 1개
네트워크LLM API 접속 필수안정적 인터넷

권장 LLM 모델 조건: 100k+ 토큰 컨텍스트 윈도우 / 추론(reasoning) 기능 지원 / 멀티모달 입력 지원 / 강력한 tool-use 능력

8직접 해볼 수 있는 실습 과제

난이도별 실습
과제 1

로컬에서 DeerFlow 실행하기 ⭐⭐ 초급

git clone https://github.com/bytedance/deer-flow.git
cp config.example.yaml config.yaml  # API 키 설정
make check && make install && make dev

http://localhost:2026 접속 → 간단한 대화 테스트 → 메모리 시스템 동작 확인(이름을 알려주고 다음 대화에서 기억하는지 테스트)

과제 2

커스텀 스킬 만들기 ⭐⭐⭐ 중급

skills/custom/my-skill/ 디렉토리를 생성하고 SKILL.md를 작성합니다(YAML frontmatter: name, description, allowed-tools). 에이전트에게 해당 도메인 질문을 해보고 스킬이 로딩되는지 확인합니다.

과제 3

MCP 서버 연동하기 ⭐⭐⭐ 중급

간단한 MCP 서버를 만들고 extensions_config.json에 등록합니다. 에이전트에게 MCP 도구를 사용하는 작업을 요청하고, GET /api/mcp/config로 MCP 설정을 확인합니다.

과제 4

커스텀 미들웨어 추가하기 ⭐⭐⭐⭐ 고급

packages/harness/deerflow/agents/middlewares/에 새 미들웨어 파일을 생성합니다. 대화 로그를 외부 서비스(예: Supabase)에 저장하는 미들웨어를 구현하고, 미들웨어 체인에 적절한 위치에 삽입합니다. make test로 기존 테스트 통과를 확인합니다.

과제 5

임베디드 클라이언트로 자동화 파이프라인 ⭐⭐⭐⭐⭐ 심화

DeerFlowClient를 사용하는 Python 스크립트를 작성합니다. 여러 리서치 주제를 순차적으로 에이전트에게 보내고, 결과를 마크다운 파일로 자동 저장하며, stream() 메서드로 실시간 진행 상황을 출력합니다.

9관련 기술 심화 학습 로드맵

주차별 학습 계획
주차주제핵심 학습 내용
1주차LangGraph 기초공식 튜토리얼 완주 / AgentState·StateGraph·ToolNode / thread_state.py 분석
2주차에이전트 아키텍처lead_agent/agent.py 정독 / 미들웨어 체인 이해 / Harness/App 분리 원칙
3주차샌드박스 & 도구Docker SDK 학습 / 가상 경로 시스템 / MCP 스펙 읽기 / langchain-mcp-adapters
4주차메모리 & 상태 관리메모리 시스템 코드 분석 / LLM 기반 팩트 추출 / SQLite vs PostgreSQL 체크포인터
5주차프론트엔드 & 통합Next.js 16 + React 19 새 기능 / Vercel AI SDK 스트리밍 / XYFlow 시각화
6주차프로덕션 배포Docker Compose 멀티서비스 / Nginx 리버스 프록시 / Kubernetes 프로비저너 / IM 채널 봇 통합

10핵심 키워드 사전

처음 보면 낯선 용어들 정리
키워드설명
Super Agent Harness에이전트·도구·메모리·샌드박스·스킬을 통합 관리하는 런타임. 단순 에이전트 라이브러리보다 상위 개념
Lead AgentDeerFlow의 메인 에이전트. 사용자 요청을 받아 직접 처리하거나 서브에이전트에게 위임
Subagent리드 에이전트가 task() 도구로 생성하는 하위 에이전트. general-purpose와 bash 두 종류 내장
Middleware Chain15개+ 미들웨어가 순서대로 실행되는 처리 파이프라인. before_model/after_model 훅으로 요청/응답 변환
ThreadStateLangGraph의 AgentState를 확장한 스레드별 상태 스키마. sandbox, artifacts, todos 등 포함
Sandbox Provider코드 실행 환경의 추상화. Local(직접 실행), Docker(격리), K8s(프로비저너) 세 가지 구현
Virtual Path System에이전트가 보는 경로(/mnt/user-data/)와 실제 경로를 매핑하는 추상화 계층
MCPModel Context Protocol. LLM이 외부 서비스와 상호작용하기 위한 프로토콜. stdio/SSE/HTTP + OAuth
SkillsSKILL.md로 정의되는 에이전트 능력 모듈. 태스크 요구에 따라 프로그레시브 로딩
deerflow-harness퍼블리셔블 Python 패키지. 에이전트 코어 로직을 담으며 앱 계층과 엄격히 분리
Gateway APIFastAPI 기반 REST API. 모델·MCP·스킬·메모리·업로드·아티팩트 6개 영역 관리
Reflection Systemconfig.yaml의 문자열 경로를 런타임에 실제 클래스/변수로 변환하는 동적 로딩 시스템
Memory FactsLLM이 대화에서 추출한 개별 사실. id, content, category, confidence, createdAt, source 구조
Debounce Queue메모리 업데이트를 30초 지연 후 배치 처리하는 큐. 스레드별 중복 제거 포함
Config Versioningconfig_version 필드로 설정 스키마 변경 추적. make config-upgrade로 자동 마이그레이션
IM Channel7개 메시징 플랫폼 통합 (Telegram/Slack/Feishu/Discord/DingTalk/WeCom/WeChat). MessageBus 기반 pub/sub 아키텍처
DeerFlowClientHTTP 없이 인프로세스로 DeerFlow를 사용하는 임베디드 Python SDK
Gateway Conformance임베디드 클라이언트 응답이 Gateway API의 Pydantic 모델과 일치하는지 검증하는 테스트
XYFlowReact 기반 노드/엣지 그래프 라이브러리. 에이전트 워크플로우 시각화에 사용

11참고 링크

더 깊이 공부하고 싶다면