Conductor OSS — durable execution для воркфлоу и AI-агентов

· 2 мин чтения
workflow-orchestration durable-execution ai-agents mcp
📂 Исходный код на GitHub

Open-source движок durable execution для микросервисов и AI-агентов. Продолжение Netflix Conductor под лицензией Apache 2.0, развивается Orkes и сообществом.

Conductor OSS — durable execution для воркфлоу и AI-агентов

Conductor OSS — открытая платформа durable execution для воркфлоу, микросервисов и AI-агентов. Проект родился в Netflix как внутренний оркестратор микросервисов. Позже Netflix передал его открытому сообществу, а сейчас развитием занимается компания Orkes вместе с контрибьюторами. Лицензия — Apache 2.0, так что платформу можно развернуть у себя без каких-либо ограничений.

Главная идея Conductor — превратить неустойчивую логику в надежное исполнение. Циклы, ветвления, параллельные вызовы, обращения к инструментам, ожидание одобрения человека, повторы после сбоев — всё это движок выполняет как durable execution. Каждый шаг сохраняется, и его можно посмотреть, перезапустить или остановить.

Что такое durable execution

Обычный воркфлоу умирает вместе с процессом. Упал сервер, оборвалась сеть, кончилась память — и состояние потеряно. Conductor решает это иначе: каждый шаг выполнения записывается в базу данных. Если что-то ломается, выполнение возобновляется с места сбоя. Повторы, таймауты и обработка ошибок настраиваются для каждой задачи.

Отсюда два важных следствия.

Во-первых, воркфлоу могут жить долго. Выполнение может ждать одобрения человека, внешний сигнал или таймер недели и месяцы — а потом продолжиться ровно с того места, где остановилось. В памяти ничего хранить не нужно.

Во-вторых, агенты становятся устойчивыми. Если двенадцатая итерация цикла агента три недели ждет проверки человеком, тринадцатая стартует без потерь. Тот же механизм, который делает надежными обычные воркфлоу, работает и для AI-агентов.

Важное отличие от code-first движков: там детерминированным должен быть ваш код, чтобы фреймворк мог его «проигрывать» заново. В Conductor всё наоборот. Детерминирован сам движок, а код воркеров может быть любым — с любыми побочными эффектами и внешними вызовами.

Оркестрация отдельно от кода

Воркфлоу в Conductor — это версионируемый JSON-граф. Его можно прочитать, показать в UI, проверить и изменить. Бизнес-логика при этом живет отдельно — в воркерах.

Воркер — это обычный код на Java, Python, Go, JavaScript, C#, Ruby или Rust. Воркер опрашивает сервер за задачами, выполняет их и возвращает результат. Где его запускать — на вашем сервере, в контейнере или в другом регионе — движку все равно.

Такое разделение дает практические преимущества. Разработчики пишут логику на привычном языке с полноценным IDE и отладкой. Операторы управляют воркфлоу как версионируемым артефактом: смотрят историю выполнения, вводы и выводы каждой задачи, время и повторы. Новая версия определения не ломает уже идущие выполнения — они продолжают работать на той версии, с которой стартовали.

Запуск за минуту

Нужны Node.js 16+ и Java 21+:

npm install -g @conductor-oss/conductor-cli
conductor server start

Сервер с веб-интерфейсом поднимется на http://localhost:8080. Дальше можно создать первый воркфлоу:

curl -s https://raw.githubusercontent.com/conductor-oss/conductor/main/docs/quickstart/workflow.json -o workflow.json
conductor workflow create workflow.json
conductor workflow start -w hello_workflow --sync

Есть и готовый Docker-образ: API на порту 8080, UI на порту 5000.

docker run -p 5000:5000 -p 8080:8080 conductoross/conductor:next

У каждой команды CLI есть эквивалент в REST API. Полное руководство — в Quickstart.

Оркестрация AI-агентов

Conductor подходит не только для микросервисов. В движок встроены нативные задачи для работы с LLM: чат-завершения, вызовы инструментов через MCP, ожидание одобрения человеком и векторные воркфлоу для RAG.

Классический паттерн «думай — действуй» собирается из встроенных задач. Схема такого агента выглядит так:

{
  "name": "autonomous_agent",
  "tasks": [
    { "type": "LIST_MCP_TOOLS", "name": "discover_tools" },
    {
      "type": "DO_WHILE",
      "name": "agent_loop",
      "loopCondition": "$.think['done'] != true && $.loop['iteration'] < 10",
      "loopOver": [
        { "type": "LLM_CHAT_COMPLETE", "name": "think" },
        { "type": "SWITCH", "name": "act" },
        { "type": "CALL_MCP_TOOL", "name": "execute_tool" }
      ]
    }
  ]
}

Агент находит доступные инструменты через MCP-сервер, LLM решает, что делать дальше, движок вызывает выбранный инструмент — и так по кругу, пока задача не решена или не кончатся итерации. Каждый виток цикла сохранен. Если агент упадет на середине, выполнение продолжится, а не начнется с нуля.

Пошаговое руководство — в статье Build Your First AI Agent. Для production-сценариев есть паттерн governed adaptive graph: агент планирует действия, план проверяется на соответствие разрешенным возможностям, затем идет ограниченный распараллеливание, одобрение человеком и оценка результата.

Динамические графы

Статического описания мало, когда путь выполнения нельзя знать заранее. Conductor умеет разрешать части воркфлоу во время выполнения: динамические форки создают переменное число параллельных задач, динамические задачи и подворкфлоу выбираются по имени на ходу.

Здесь помогает JSON-формат. Раз определения машинно-читаемые, их может генерировать и LLM. Воркфлоу, созданный моделью на лету, валидируется до запуска — так динамичность не превращается в хаос.

Встроенных задач хватает и для сложной логики: SWITCH для ветвлений, DO_WHILE для циклов с настраиваемой очисткой итераций, FORK_JOIN для параллелизма, SUB_WORKFLOW для композиции. Их можно вкладывать друг в друга. У каждой задачи есть повторы, таймауты и компенсирующие действия.

SDK для воркеров

Язык Репозиторий Установка
Java conductor-oss/java-sdk Maven Central
Python conductor-oss/python-sdk pip install conductor-python
JavaScript conductor-oss/javascript-sdk npm install @io-orkes/conductor-javascript
Go conductor-oss/go-sdk go get github.com/conductor-sdk/conductor-go
C# conductor-oss/csharp-sdk dotnet add package conductor-csharp
Ruby conductor-oss/ruby-sdk в разработке
Rust conductor-oss/rust-sdk в разработке

Серверы и воркеры масштабируются независимо. Для контроля под нагрузкой есть домены задач, лимиты частоты и параллелизма, а также метрики.

Самостоятельный хостинг

Conductor не требует проприетарных сервисов. Поддерживаются пять вариантов хранения: Redis, Postgres и MySQL в сочетании с Elasticsearch, OpenSearch или без них — и шесть брокеров сообщений. Платформа запускается везде, где работает Docker или JVM.

Есть и навыки для AI-ассистентов: проект Conductor Skills позволяет Claude Code, Gemini CLI и другим агентам создавать, управлять и развертывать воркфлоу прямо из терминала.

Кому подходит Conductor

Платформа нужна там, где выполнение не должно теряться: оркестрация микросервисов, долгие бизнес-процессы с ожиданием людей, конвейеры обработки данных и AI-агенты, которые ходят в LLM и внешние инструменты. Если вы хотите управлять агентными системами не через код фреймворка, а через прозрачный версионируемый граф — Conductor дает именно такой подход.

История проекта внушает доверие: движок годами гонял продакшн-нагрузки Netflix, а сегодня развивается под крылом Orkes с полной обратной совместимостью. Оригинальный репозиторий Netflix Conductor остался в прошлом — актуальный код живет в conductor-oss/conductor.

Источник: https://github.com/conductor-oss/conductor