Donna: детерминированные стейт-машины для стабильных AI-агентов | AiManual
AiManual Logo Ai / Manual.
10 Фев 2026 Инструмент

Donna: как стейт-машины спасают AI-агентов от хаоса

Обзор Donna — инструмента для создания детерминированных AI-агентов через стейт-машины. Решает проблему накопления ошибок в многошаговых процессах.

Вы запускаете AI-агента на сложную задачу. Он делает первый шаг. Второй. На третьем — странный халлюцинационный ответ. На четвёртом — забывает контекст. К пятому шагу процесс превращается в цифровую свалку. Знакомо? Это классическая проблема недетерминированных агентов, где каждая ошибка множит следующие.

В 2026 году, когда все говорят про Gemini 3 Flash и её способности к автономной работе, проблема стабильности стала критической. Особенно для production-ready систем, где каждая галлюцинация стоит денег.

Что такое Donna и зачем она вообще нужна

Donna — это не очередной фреймворк для агентов. Это Python-библиотека, которая заставляет AI-агентов работать как стейт-машины. Представьте: вместо того чтобы позволять агенту свободно бродить по задаче, вы определяете конечный автомат. Состояния. Переходы. Чёткие условия.

На 10.02.2026 Donna активно развивается на GitHub, с последним релизом 0.3.2. Проект набирает популярность среди разработчиков, уставших от непредсказуемости сложных агентных систем.

Основная идея проста: вы описываете процесс как последовательность состояний. Агент может переходить между ними только по определённым правилам. Нет состояния «заблудился в своих мыслях». Нет перехода «решил сделать что-то совершенно другое». Только то, что вы явно разрешили.

Как это работает на практике

Возьмём классический пример — обработку клиентского запроса в службе поддержки. В традиционном подходе с planner/executor архитектурой агент может:

  • Сначала понять запрос
  • Потом искать в базе знаний
  • Потом генерировать ответ
  • Или... вдруг решить, что нужно сначала уточнить детали у пользователя
  • Или... попытаться исправить грамматику в исходном запросе
  • Или... зациклиться на уточнении несущественной детали

С Donna вы определяете:

states = [
    "parse_query",
    "search_knowledge_base",
    "generate_response",
    "ask_for_clarification",
    "finalize"
]

transitions = [
    ("parse_query", "search_knowledge_base", "if_query_understood"),
    ("parse_query", "ask_for_clarification", "if_query_unclear"),
    ("search_knowledge_base", "generate_response", "always"),
    ("ask_for_clarification", "parse_query", "after_clarification_received"),
    ("generate_response", "finalize", "response_valid"),
    ("generate_response", "search_knowledge_base", "response_insufficient")
]

Агент физически не может перескочить из «parse_query» сразу в «finalize». Не может застрять в бесконечном цикле уточнений (если вы явно не разрешили). Каждое состояние — это отдельный вызов LLM с чётким промптом и ожидаемым форматом вывода.

Чем Donna отличается от других подходов

Подход Детерминизм Сложность Где ломается
Классический ReAct (как в этом гайде) Низкий Средняя В сложных цепочках рассуждений
Sub-agents (как в этих сценариях) Средний Высокая При координации между агентами
Donna (стейт-машины) Высокий Низкая/Средняя При неучтённых edge-cases
Полностью хардкодные workflow Максимальный Высокая При изменении требований

Главное преимущество Donna — предсказуемость. Вы знаете все возможные состояния системы. Можете протестировать каждый переход. Можете добавить мониторинг и логирование в ключевых точках. Это не «агент как чёрный ящик», а «агент как конечный автомат с наблюдаемыми состояниями».

Важный нюанс: Donna не заменяет память агента. Для работы с долгосрочным контекстом всё равно понадобится что-то вроде подходов из статьи про agent memory state. Но она гарантирует, что агент не забудет, на каком этапе процесса находится.

Реальные сценарии, где Donna спасает ситуацию

1 Многоэтапная обработка документов

Извлечение данных из PDF → валидация → преобразование в JSON → отправка в API. Каждый этап может сломаться. С Donna вы ловите ошибки на этапе валидации и возвращаетесь к извлечению, а не генерируете битый JSON и не ломаете downstream-системы.

2 Диалоговые системы с бизнес-логикой

Пользователь хочет изменить заказ. Агент должен: понять запрос → проверить возможность изменения → рассчитать новую стоимость → подтвердить у пользователя → внести изменения. Пропуск любого шага или изменение порядка = проблемы с бизнес-процессами.

3 Сборка агентов из компонентов

Интересно, что подход Donna хорошо сочетается с концепцией сборки агентов из LEGO. Каждый skill может быть представлен как состояние или группа состояний. Переходы между skills становятся явными и контролируемыми.

Подводные камни, о которых молчат в README

Donna — не серебряная пуля. Вот что бесит на практике:

  • Взрывной рост числа состояний. Для сложного процесса легко нарисовать автомат с 50+ состояниями. А потом поддерживать эту схему.
  • Жёсткость. Если забыли предусмотреть какой-то переход — агент застревает. Нужно либо добавлять состояние «аварийного выхода», либо мириться с ограничениями.
  • Сложность отладки циклов. Разрешили переход из состояния A в B и из B в A? Поздравляю, вы создали потенциальный бесконечный цикл. Donna не предотвращает логические ошибки в проектировании автомата.

И главное: Donna не делает агентов умнее. Она делает их предсказуемее. Если ваша LLM постоянно генерирует мусор на этапе «понимания запроса», Donna лишь гарантирует, что этот мусор не попадёт в следующие этапы. Но не исправит сам мусор.

Кому стоит смотреть в сторону Donna в 2026 году

Если вы делаете:

  • Бизнес-критические процессы, где ошибка на раннем этапе ломает весь pipeline
  • Системы с чёткими регуляторными требованиями (нужно доказать, что агент следует определённому workflow)
  • Комплексные агенты, которые уже выросли из простых ReAct-подходов
  • Интеграции, где следующий шаг зависит от успешности предыдущего (цепочки API-вызовов, трансформаций данных)

Тогда Donna может быть тем, что нужно. Особенно если вы уже сталкивались с проблемами, описанными в статье про агентные workflow на практике.

Если же вы прототипируете идею, делаете исследовательский проект или ваш агент выполняет одну простую операцию — Donna добавит ненужной сложности. Иногда достаточно классического подхода с ReAct и инструментами.

💡
Совет от практика: начните с малого. Возьмите самый болезненный многошаговый процесс в вашей системе. Реализуйте его на Donna. Сравните стабильность до и после. Только так поймёте, стоит ли овчинка выделки.

Что дальше? Будущее детерминированных агентов

На 10.02.2026 тренд ясен: мир устал от непредсказуемых AI-агентов. Инструменты вроде Donna, подходы с явными workflow, системы наподобие OpenEnv Hub — всё это попытки ввести порядок в хаос.

Но настоящий прорыв будет, когда детерминизм станет не дополнительной опцией, а базовой частью агентных фреймворков. Когда стейт-машины будут генерироваться автоматически из описания задачи. Когда инструменты вроде Donna будут не отдельной библиотекой, а встроенным модулем в LangChain, LlamaIndex и других популярных фреймворках.

Пока же — Donna остаётся нишевым, но мощным инструментом для тех, кому критически важна предсказуемость. Не для всех. Но для тех, кто строит продакшен-системы, а не прототипы.

И да, если после этого обзора вам захотелось попробовать — не забудьте глянуть репозиторий на GitHub. Там есть примеры, которые сэкономят пару часов понимания, как именно описывать состояния и переходы. А эти часы лучше потратить на проектирование своего автомата. Потому что в Donna, как и в любой стейт-машине, самое сложное — не написать код, а спроектировать правильные состояния.