DeerFlow 2.0 от ByteDance: разбираем архитектуру «суперагентского» фреймворка
Введение
DeerFlow (Deep Exploration and Efficient Research Flow) — open-source проект от ByteDance, который начинался как фреймворк для автоматизированного глубокого исследования (Deep Research), а во второй версии превратился в универсальную платформу для запуска AI-агентов. В феврале 2026 года DeerFlow 2.0 занял первое место в GitHub Trending — на момент написания статьи у проекта более 2000 коммитов и активное сообщество.
Ключевая идея: DeerFlow — это не библиотека, которую нужно собирать по кусочкам, а готовый «harness» (обвязка) для агентов. Из коробки он даёт агенту файловую систему, память, навыки, песочницу для выполнения кода и возможность порождать суб-агентов. Построен поверх LangGraph и LangChain.
Зачем переписали с нуля? Первая версия была заточена под research-сценарии. Но сообщество стало использовать DeerFlow для генерации слайдов, дашбордов, data-пайплайнов, контентных конвейеров. Стало ясно, что нужна не research-утилита, а универсальный runtime для агентов. Вторая версия не содержит общего кода с первой — это полная переработка архитектуры.
Архитектура
Общая схема
DeerFlow 2.0 состоит из трёх слоёв:
- Frontend — веб-интерфейс на Next.js для взаимодействия с агентами
- Gateway — API-сервер (FastAPI), который управляет тредами, аутентификацией, маршрутизацией запросов
- Harness — ядро системы: оркестрация агентов, инструменты, песочница, память
Lead Agent и оркестрация
В центре — Lead Agent (ведущий агент). Это LangGraph-граф с состоянием (ThreadState), который принимает запрос пользователя и решает, как его выполнить. У него четыре режима работы:
- Flash — быстрый ответ без дополнительных шагов
- Standard — стандартное выполнение с использованием инструментов
- Pro (Plan Mode) — агент сначала составляет план (todo-лист), затем выполняет шаги последовательно
- Ultra — с порождением суб-агентов для параллельного выполнения подзадач
Lead Agent создаётся через фабрику create_deerflow_agent(), которая принимает модель, инструменты, системный промпт и набор middleware. Важная деталь: сама фабрика не читает конфиг-файлы — это чистая функция, что упрощает тестирование и встраивание.
Суб-агенты
Для сложных задач Lead Agent порождает суб-агентов через SubagentExecutor. Каждый суб-агент:
- Получает изолированный контекст — не видит историю основного агента и других суб-агентов
- Имеет свой набор инструментов и условия завершения
- Может работать параллельно с другими суб-агентами
- Возвращает структурированный результат (
SubagentResult) со статусом, текстом ответа, трейс-айди
Суб-агенты запускаются в отдельном ThreadPoolExecutor. Lead Agent синтезирует результаты всех суб-агентов в финальный ответ. Типичный сценарий: исследовательская задача раскладывается на 10-12 суб-агентов, каждый исследует свой аспект, затем результаты сводятся в один отчёт, презентацию или сайт.
Middleware-архитектура
Агенты оборачиваются цепочкой middleware:
- DanglingToolCallMiddleware — восстанавливает сломанные последовательности tool-call, когда провайдер прерывает цикл
- ClarificationMiddleware — позволяет агенту задать уточняющий вопрос пользователю
- ToolErrorHandlingMiddleware — обработка ошибок инструментов
- SummarizationMiddleware — сжатие контекста при длинных сессиях
- GuardrailsMiddleware — проверка безопасности запросов и ответов
Это позволяет гибко настраивать поведение агента без изменения его основной логики.
Skills: навыки агентов
Что такое Skill
Skill (навык) в DeerFlow — это Markdown-файл (SKILL.md) с YAML-метаданными в начале. Он описывает методологию выполнения определённого типа задач: какие шаги делать, какие best practices соблюдать, на какие ресурсы опираться.
Проект поставляется с набором готовых навыков:
- deep-research — систематическое исследование с многоуровневым поиском
- ppt-generation — создание презентаций
- web-design-guidelines — создание веб-страниц
- image-generation — генерация изображений
- data-analysis — анализ данных
- podcast-generation — генерация подкастов
- code-documentation — документирование кода
- skill-creator — создание новых навыков (мета-навык)
Как это работает
Навыки хранятся в файловой системе:
/mnt/skills/public/ ← встроенные навыки
/mnt/skills/custom/ ← пользовательские навыки
Ключевой принцип — прогрессивная загрузка: навыки подтягиваются в контекст агента только когда задача в них нуждается, а не все разом. Это критично для экономии контекстного окна, особенно с моделями с ограниченным числом токенов.
Каждый SKILL.md парсится из YAML-фронтматтера: извлекаются name, description, опционально version, author, compatibility. Навыки можно устанавливать через Gateway как .skill-архивы. Есть security scanner для проверки сторонних навыков.
Инструменты (Tools)
Помимо навыков, агент имеет набор инструментов:
- web_search — поиск в интернете (Tavily, InfoQuest от BytePlus и др.)
- web_fetch — получение содержимого веб-страниц
- file operations — чтение, запись, редактирование файлов
- bash — выполнение shell-команд (в песочнице)
- MCP-серверы — подключение внешних инструментов через Model Context Protocol
MCP-интеграция поддерживает HTTP/SSE-транспорт и OAuth-потоки (client_credentials, refresh_token).
Память и Context Engineering
Долгосрочная память
Большинство агентов забывают всё после завершения диалога. DeerFlow — нет. Система ведёт персистентную память между сессиями:
Структура памяти (файл memory.json):
- user.workContext — рабочий контекст пользователя
- user.personalContext — личный контекст
- user.topOfMind — текущие приоритеты
- history.recentMonths — саммари за последние месяцы
- history.earlierContext — более ранний контекст
- history.longTermBackground — долгосрочный фон
- facts — массив фактов с confidence-скором (до 100 фактов, порог confidence ≥ 0.7)
Память хранится локально, per-user, с поддержкой per-agent хранилищ. Обновления происходят через debounce (по умолчанию 30 секунд) — LLM анализирует переписку и извлекает новые факты.
Хук суммаризации
Когда middleware суммаризации сжимает историю сообщений, перед удалением старых сообщений срабатывает memory_flush_hook — он извлекает полезные факты из удаляемых сообщений и добавляет их в очередь обновления памяти. Система также детектирует коррекции (пользователь исправил агента) и reinforcement (пользователь подтвердил поведение).
Context Engineering
Управление контекстом — одна из сильных сторон DeerFlow:
- Изоляция контекста суб-агентов — каждый суб-агент работает в своём контексте, не отвлекается на посторонний шум
- Агрессивная суммаризация — промежуточные результаты сжимаются и выгружаются в файловую систему
- Строгое восстановление tool-call — при сбоях DeerFlow автоматически чистит метаданные и вставляет placeholder-результаты, чтобы модель не падала на невалидной истории
- Инъекция памяти — релевантные факты из долгосрочной памяти вставляются в системный промпт (до 2000 токенов)
Sandbox и безопасность
Три режима песочницы
DeerFlow поддерживает три уровня изоляции:
-
Local — код выполняется прямо на хосте. Файловые операции привязаны к per-thread директориям. Bash по умолчанию выключен (не является безопасной границей). Включать только для доверенных сценариев.
-
Docker — каждая задача запускается в изолированном Docker-контейнере. Полноценная изоляция файловой системы и процессов.
-
Kubernetes — контейнеры запускаются как поды через provisioner-сервис. Подходит для продакшен-деплоя с масштабированием.
Файловая система внутри песочницы
/mnt/user-data/
├── uploads/ ← файлы пользователя
├── workspace/ ← рабочая директория агента
└── outputs/ ← финальные результаты
Агент может читать, писать, редактировать файлы, просматривать изображения. Абстрактный класс Sandbox определяет интерфейс: execute_command, read_file, write_file, list_dir, grep. Конкретные провайдеры (AioSandboxProvider, LocalSandboxProvider) реализуют этот интерфейс.
Guardrails
Система guardrails обеспечивает:
- Фильтрацию запросов и ответов через configurable middleware
- Security scanner для сторонних навыков
- Валидацию имён агентов (защита от path traversal)
- File operation lock для предотвращения race conditions
Интеграции
MCP (Model Context Protocol)
DeerFlow поддерживает подключение внешних MCP-серверов для расширения набора инструментов. Это стандартизированный протокол от Anthropic для подключения внешних capability к агентам. Поддерживается кэширование инструментов и OAuth-авторизация.
Claude Code
Специальный навык claude-to-deerflow позволяет управлять DeerFlow прямо из терминала Claude Code — отправлять задачи, проверять статус, управлять тредами. Также DeerFlow поддерживает Claude Code как провайдер модели через OAuth.
IM-каналы
DeerFlow можно подключить к мессенджерам как бота:
- Telegram — через Bot API (long-polling), самый простой вариант
- Slack — через Socket Mode
- Feishu/Lark — через WebSocket
- WeChat — через Tencent iLink
- WeCom — через WebSocket
- DingTalk — через Stream Push
Все каналы работают через long-polling или WebSocket — публичный IP не нужен. Поддерживаются команды (/new, /status, /models, /memory, /help) и per-user настройки сессий.
Поддержка моделей
DeerFlow работает с широким набором моделей через LangChain:
- OpenAI (GPT-4o, GPT-5, Responses API)
- Anthropic (Claude через Claude Code OAuth)
- DeepSeek
- Qwen (через vLLM)
- Doubao-Seed от ByteDance
- Любые OpenAI-совместимые провайдеры (OpenRouter и др.)
Практическое применение
DeerFlow 2.0 подходит для нескольких категорий задач:
Исследования и аналитика. Основной сценарий: дать задачу вроде «проанализируй рынок X» — агент раскладывает её на подзадачи, запускает суб-агентов для параллельного исследования, собирает результаты в отчёт. Навык deep-research реализует систематическую методологию: широкий поиск → выделение измерений → глубокое погружение по каждому → синтез.
Генерация контента. Презентации, статьи, веб-страницы, видео, подкасты. Агент сначала исследует тему, затем генерирует контент с использованием профильного навыка.
Автоматизация рабочих процессов. Через IM-каналы DeerFlow становится рабочим ассистентом в Telegram или Slack. Пользователь пишет задачу в чат — агент выполняет её с доступом к поиску, файлам и коду.
Разработка. Интеграция с Claude Code, документирование кода, анализ данных, деплой на Vercel — всё это готовые навыки.
Кастомные агенты. Благодаря системе навыков и конфигурируемым агентам можно создать специализированных ботов для конкретных бизнес-процессов.
Выводы и что взять на вооружение
1. Skill-as-Markdown — элегантный подход. Навыки — это просто Markdown-файлы с методологией. Никакого кода, никаких API — чистый промпт-инжиниринг в структурированном формате. Это делает создание и редактирование навыков доступным для не-программистов.
2. Прогрессивная загрузка контекста решает реальную проблему. Вместо того чтобы пихать всё в системный промпт, навыки подгружаются по мере необходимости. Это критично для работы с моделями с небольшим контекстным окном.
3. Суб-агенты с изолированным контекстом — правильная абстракция для сложных задач. Каждый суб-агент фокусируется на своей подзадаче без шума от остальных. Параллельное выполнение ускоряет работу.
4. Память между сессиями превращает агента из одноразового инструмента в долгосрочного ассистента. Структурированное хранение фактов с confidence-скором и автоматическим извлечением при суммаризации — зрелый подход.
5. Sandbox-first архитектура. Агент не просто «вызывает функции» — у него есть полноценная файловая система и среда выполнения. Это принципиальная разница между чат-ботом с tools и настоящим агентом.
6. IM-интеграция из коробки. Шесть мессенджеров с единым API — это реальная экономия времени для команд, которые хотят развернуть агента в корпоративном чате.
7. Middleware-паттерн для агентов хорошо масштабируется. Guardrails, суммаризация, обработка ошибок — всё это отдельные слои, которые можно комбинировать.
DeerFlow 2.0 — один из наиболее зрелых open-source фреймворков для мультиагентных систем. Он подходит как для быстрого прототипирования (всё работает из коробки), так и для продакшен-деплоя (Docker/K8s, аутентификация, guardrails). Если вы строите систему на основе AI-агентов — стоит изучить как минимум их подходы к context engineering и skill-системе.
Проект: github.com/bytedance/deer-flow | Лицензия: MIT | Язык: Python (backend) + TypeScript (frontend)
← Назад к Ссылки и заметки