Агентство по ошибкам: почему Dynamic Workflows — не серебряная пуля
Мы привыкли думать об AI-агентах как о супер-программистах: даешь задачу, он пилит код, ты пьешь кофе. Реальность жестче. Агентская разработка в 2026 году — это адский пожиратель токенов, если не настроить правильные границы. Dynamic Workflows от Claude Code — это попытка Anthropic дать разработчику контроль над тем, как агент думает и действует. Но, как любой мощный инструмент, он требует понимания, где его применять, а где он просто сжигает бюджет.
Я провел месяц, внедряя Dynamic Workflows в реальный продакшн — проект Family Cinema (OTT-платформа для семейного контента). В связке с фреймворком NaCl (Neural Agentic Composition Layer). Результат — сокращение времени на разработку рутинных модулей на 60%, но при этом несколько попыток стоили тысячи токенов впустую. Эта статья — хроника моих граблей.
Важно: все цифры и наблюдения актуальны на 31.05.2026. Используется Claude Code 0.7.3 с моделью Claude 5 Opus, NaCl v2.1. Если вы читаете это позже — рекомендую проверять актуальность.
Что такое Dynamic Workflows и зачем они вообще нужны
Обычный Claude Code — это чат, в котором агент получает задачу и пытается её решить, сам выбирая последовательность действий. Dynamic Workflows — это JSON-спецификация, которая говорит агенту: «Вот тебе граф шагов. Ты можешь выбирать ветки, но не можешь выйти за границы графа». Звучит как что-то очевидное? На практике это превращает хаотичного AI-генератора в предсказуемого исполнителя.
NaCl — это фреймворк, который оборачивает Dynamic Workflows в типизированные компоненты. Он позволяет описывать workflow декларативно, с контролем входов/выходов каждого шага. Вместо того чтобы писать 500 строк промптов, ты описываешь 50 строк YAML, а NaCl компилирует это в workflow и передает Claude Code.
Зачем это Family Cinema? У нас была задача: переписать систему рекомендаций контента с нуля, используя TDD и микросервисную архитектуру. Старый код на Ruby on Rails (80 тыс. строк) нужно было разбить на Go-сервисы, добавить кэширование, A/B-тесты и логирование. Руками — 3 месяца. С агентами — планировали за 2 недели. Получилось за 3, но с нюансами.
Три сценария, где Dynamic Workflows отработали на 100%
1Генерация тестов по спецификации
Мы написали для каждого микросервиса OpenAPI 3.1 спецификацию и передали её в Dynamic Workflow с шагами:
- Анализ спецификации
- Генерация Go-моделей и хендлеров
- Написание unit-тестов (таблица с кейсами)
- Генерация интеграционных тестов (контрактные тесты на Pact)
- Прогон тестов и исправление ошибок
Результат: за 2 дня было сгенерировано 1200 тестов с покрытием 87%. Человек проверял только сложные бизнес-кейсы (например, расчет рейтинга контента для детей). Токенов ушло ~$18 на сервис. Ручная разработка заняла бы 5 дней и стоила $1200 (если считать зарплату сеньора).
2Миграция данных с валидацией
Нам нужно было перенести 2.3 млн записей о фильмах из PostgreSQL в MongoDB (коллекция поисковых индексов). Старая миграция падала с таймаутами и дубликатами. Dynamic Workflow разбили на этапы:
- Чтение батча из PostgreSQL (по 5000 записей)
- Трансформация (маппинг полей, обогащение данными из кэша)
- Вставка в MongoDB с upsert
- Валидация — проверка, что количество совпадает
- Логирование ошибок в отдельную коллекцию
Каждый шаг был отдельным Python-скриптом, сгенерированным Claude Code. Workflow запускался параллельно в 4 потока. Миграция прошла за 4 часа без единой ошибки. Токенов потрачено — всего $3.20, потому что шаги были маленькие и контекст не раздувался.
3Рефакторинг «по шаблону»
У нас было 15 Go-сервисов, написанных разными людьми. Нужно было привести их к единому стандарту: добавить трейсинг (OpenTelemetry), логирование структурированное (zerolog), метрики Prometheus. Dynamic Workflow с одним шаблоном прошелся по всем файлам, заменяя вызовы log.Print на zerolog. Агент сам определял, какие функции уже есть, и не трогал работающий код.
Результат: 340 файлов изменено за 1.5 часа. Человек бы делал неделю. Токенов — ~$45. Но тут есть оговорка: шаблон был очень жестким, без вариаций. Если бы в коде встречались нестандартные паттерны, агент мог сломать логику. Мы провели code review — нашли 3 бага (пропущенные контексты), их поправили за час.
Четыре зоны, где Dynamic Workflows — это выброшенные токены
Не делайте так, если не хотите потерять деньги. Эти сценарии мы тестировали на Family Cinema, и каждый раз токены утекали как песок сквозь пальцы.
1Проектирование архитектуры «с нуля»
Мы попытались поручить Dynamic Workflow спроектировать микросервисную архитектуру рекомендаций: выбор событийной шины (Kafka vs RabbitMQ), паттерны взаимодействия (CQRS, Saga), схему базы данных. Workflow состоял из шагов: «исследовать требования», «предложить архитектуру», «написать ADR (Architecture Decision Record)».
Провал. Claude начал генерировать бесконечные варианты, переключаться между ними, переписывать ADR 7 раз. Итог — $120 токенов и ни одного приемлемого решения. Архитектуру мы в итоге сделали сами за 2 дня. Dynamic Workflows хороши для реализации, а не для творчества.
2Сложные бизнес-правила с юридическими нюансами
У Family Cinema есть контент по возрастным рейтингам (0+, 6+, 12+, 16+, 18+). Правила зависят от страны, семейных настроек, времени суток. Мы попытались закодировать это через Dynamic Workflow, передав ему PDF с законами. Workflow включал шаги: «извлечь правила», «написать код», «написать тесты».
Результат: код был написан, но пропускал 30% кейсов. Например, не учитывал, что в режиме «детский час» с 20:00 до 06:00 показывается только контент 0+. Агент просто не смог правильно интерпретировать юридический текст. Пришлось переписывать вручную. Токенов потрачено — $60.
3Оптимизация сложных алгоритмов (O(n) -> O(log n))
У нас был старый Ruby-алгоритм подбора похожих фильмов на основе TF-IDF. Работал медленно (3 секунды на запрос). Dynamic Workflow попросил переписать на Go с использованием кэширования и параллелизма. Агент написал код, но он был полон race conditions, deadlocks и неэффективного использования памяти. Без человека, который понимает конкурентность в Go, это было безнадежно. Потратили $40 на токены, получили код, который пошёл в корзину. Написали сами за 2 часа.
Если вам нужна оптимизация алгоритмов с нетривиальной конкурентностью — не доверяйте это Dynamic Workflows. Во всяком случае, без жесткого эскорт-контроля. Лучше использовать Claude Code в режиме обычного чата, где вы можете направлять каждую итерацию.
4Задачи с огромным контекстом (больше 100k токенов)
Мы попытались дать Dynamic Workflow задачу: «разбери весь legacy Rails-монолит, выдели сервисы, напиши план миграции». Workflow требовал загрузки всего кода (300k токенов). В итоге агент «забывал» середину, начинал галлюцинировать, предлагал nonsense. Токенов сожжено — $200. Бесполезно.
Решение: разбить код на модули и давать каждый отдельным workflow. Это замедлило общий процесс, но сэкономило бюджет. Мы описали этот подход в статье Как прокачать Claude и сэкономить до 70% токенов — там как раз про точечный доступ к коду.
Сравнение: когда Dynamic Workflows окупаются
| Сценарий | Результат | Затраты токенов | Окупаемость |
|---|---|---|---|
| Генерация тестов по OpenAPI | 1200 тестов за 2 дня | ~$18 | Высокая |
| Миграция данных | 2.3M записей, 4 часа | ~$3.20 | Очень высокая |
| Рефакторинг по шаблону | 340 файлов, 1.5 часа | ~$45 | Высокая |
| Проектирование архитектуры | Непригодно | ~$120 | Отрицательная |
| Бизнес-правила (юридические) | 30% ошибок | ~$60 | Отрицательная |
| Оптимизация алгоритмов | Код в корзину | ~$40 | Отрицательная |
| Задачи с контекстом >100k | Галлюцинации | ~$200 | Отрицательная |
Выжимка: как мы строили workflow для Family Cinema
На основе проб и ошибок мы выработали рецепт, который сейчас используем для всех новых модулей:
- Правило 80/20: 80% работы — рутина (генерация тестов, код по спецификации, миграции) — отдаем Dynamic Workflows. 20% — творчество, бизнес-логика, архитектура — делаем людьми.
- Размер шага: каждый шаг workflow не должен генерировать больше 500 строк кода. Если больше — бьем на подшаги.
- Человек в петле: обязательный code review после каждого шага, особенно если workflow модифицирует существующий код. У нас была интеграция с GitHub Actions: workflow создает PR, тесты прогоняются, затем сеньор аппрувит. Без этого — баги проскакивают.
- Жесткие границы: в NaCl мы прописываем allowed-пакеты и структуры, чтобы агент не начал импортировать что попало (например, не тащил целый gin framework туда, где нужен только net/http).
Подробнее про настройку окружения и промпты — в статье Рабочий процесс создателя Claude Code: лучшие практики и настройка окружения.
Токеномика: считаем деньги
За месяц работы над рекомендательным сервисом (3 недели активной разработки) мы потратили около $470 на токены. Ручная разработка тех же объемов (с учетом средней ставки сеньора $65/час) обошлась бы в $14,000. Экономия — 30x. Но это только если считать успешные сценарии. Если добавить неудачные попытки (те самые $200 за галлюцинации), чистая экономия — около 20x. Все равно впечатляет.
Мониторить расходы помогает утилита claude-spend — мы настроили алерт при превышении $10 за сессию. Это спасло несколько раз.
Dynamic Workflows — не магия, а инструмент. Как молоток: можно забивать гвозди, а можно разбить себе палец. Главное — знать, где приложить силу, а где взять другой инструмент. Надеюсь, мой опыт на Family Cinema сбережет ваши токены и нервы.