Альтернатива LangGraph
Рантайм для агентских воркфлоу, а не библиотека внутри вашего приложения.
LangGraph — хороший способ выразить агентский граф в коде. Dagu представляет собой слой исполнения: один self-hosted бинарник, где workflow описан в YAML, агенты являются обычными шагами, а расписания, очереди, ретраи, надёжная приостановка и история запусков встроены в движок.
# triage.yaml
schedule: "*/15 * * * *"
steps:
- id: fetch
run: ./scripts/fetch-new-issues.sh
output: ISSUES
- id: classify
action: harness.run
with:
provider: claude
prompt: Classify each issue in ${ISSUES}. Return JSON.
output_schema:
type: object
additionalProperties: false
required: [labels]
properties:
labels:
type: array
items:
type: string
retry_policy:
limit: 3
interval_sec: 30
depends: [fetch]
- id: apply_labels
run: ./scripts/apply-labels.sh
depends: [classify]
Execution order
Воркфлоу описаны в YAML, а не в коде приложения
Шаг является процессом, поэтому подходит любой язык и любой CLI
Расписания, очереди, ретраи и история идут внутри бинарника
Ожидающий запуск освобождает процесс и продолжается позже
At a glance
LangGraph и Dagu глазами тех, кто это эксплуатирует
Движок воркфлоу, который вы запускаете как бинарник.
Библиотека, встраиваемая в приложение на Python или JavaScript.
Декларативный YAML, версионируемый рядом с кодом, который он запускает.
Построение графа в коде приложения.
Расписания, очереди, ретраи, артефакты и история запусков идут вместе с движком.
Checkpointer хранит состояние графа; расписание и обслуживание берут на себя ваш сервис или LangGraph Platform.
Процесс: любой язык, любой CLI, при необходимости внутри контейнера.
Функция внутри хост-процесса.
In depth
Where each tool fits
Библиотеке нужно приложение, а движку нет
LangGraph строит граф. Но кто-то всё ещё должен ставить его в расписание и очередь, повторять при сбое, хранить состояние и показывать, что произошло. Этот кто-то — ваш сервис или LangGraph Platform. Dagu уже закрывает этот слой.
- Запускается один бинарник. Не нужно писать веб-сервис и проектировать пул воркеров
- Расписания, очереди, ретраи и история запусков являются возможностями движка, а не интеграциями
- Одно и то же определение работает на ноутбуке, на одной VM и в связке coordinator с воркерами
Шаги как процессы: воркфлоу не привязан к языку
Узлы LangGraph — это функции на Python или JavaScript в вашем процессе. Шаг Dagu является командой, поэтому единицей работы становится то, что уже запускается в вашей среде.
- Вызывайте shell-скрипты, бинарники, контейнеры, SSH-команды, HTTP-эндпоинты и SQL из одного воркфлоу
- Запускайте кодовых агентов через harness.run: Claude, Codex, Gemini, OpenCode или внутренний CLI
- Дайте любому шагу контейнерную песочницу с явными монтированиями, тулчейном и правилами egress
Рисуйте граф, когда можете, и отдавайте порядок, когда не можете
LangGraph просит нарисовать каждый путь. Это верно ровно до момента, когда порядок начинает зависеть от того, что сказал ревьюер. Dagu оставляет type: graph значением по умолчанию и добавляет type: agent для работы, которая никогда не помещалась в один граф.
- Agent DAG-воркфлоу объявляет критерии завершения, а следующее действие выбирает модель
- Модель выбирает только среди объявленных шагов, поэтому радиус поражения равен файлу
- Оба типа дают один и тот же запуск: те же логи, ретраи, артефакты и история
FAQ
Practical questions before adopting Dagu
Является ли Dagu прямой заменой LangGraph?
Нет, это разные слои. LangGraph хорош, когда вы хотите собирать вызовы модели на Python или JavaScript с тонким контролем состояния графа. Dagu подходит лучше, когда работа — это набор команд и агентских CLI, которым нужны расписания, ретраи, approvals и аудит.
Можно ли продолжать использовать LangGraph внутри Dagu?
Да. Оставьте приложение на LangGraph скриптом или контейнером и запускайте его как шаг. Dagu добавит вокруг расписание, политику ретраев, логи, артефакты и историю запусков.
Как Dagu работает с human-in-the-loop?
Человеческие задачи и ask_user внутри Agent DAG-воркфлоу надёжно приостанавливают запуск. Процесс завершается, слот воркера освобождается, а после ответа человека запуск продолжается в новом процессе.
Нужна ли Dagu база данных?
Нет. Dagu — единый бинарник, который хранит определения воркфлоу, историю запусков и логи в файлах, поэтому до первого запуска не нужно поднимать ни базу метаданных, ни брокер сообщений.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.