Action-Based Workflow Engine: архитектурный паттерн

Когда строишь агента с несколькими десятками шагов, логика быстро превращается в кашу условий и ветвлений. Action-Based Workflow Engine — это способ структурировать логику агента через набор атомарных действий, который можно оркестрировать в любом порядке.

Паттерн популярен в продуктах вроде n8n, Zapier, GitHub Actions и любых системах автоматизации. В контексте AI-агентов он особенно важен: агент сам решает, какое действие вызвать — но сами действия чётко определены заранее.


Основная идея

Центральная мысль: вся логика системы разбивается на атомарные действия, каждое из которых делает ровно одну вещь. Агент (или оркестратор) выбирает действия из набора и вызывает их по цепочке или параллельно.

Отличие от процедурного подхода (где логика зашита в одном большом скрипте): каждое действие независимо, переиспользуемо и тестируется отдельно.


Структура действия

Каждое действие описывается четырьмя параметрами:

  • name — уникальный идентификатор (например: read_page, send_message, update_status)
  • description — что делает действие и зачем оно нужно агенту
  • parameters — что подаётся на вход (с типами и описаниями)
  • handler — функция, которая выполняет логику

Пример на TypeScript:

const actions = {
  read_notion_page: {
    name: "read_notion_page",
    description: "Прочитать страницу Notion по URL",
    parameters: {
      url: { type: "string", description: "URL страницы Notion" }
    },
    handler: async ({ url }) => {
      return await notionClient.pages.retrieve({ page_id: extractId(url) });
    }
  },
  
  send_telegram: {
    name: "send_telegram",
    description: "Отправить сообщение в Telegram",
    parameters: {
      chat_id: { type: "string" },
      text: { type: "string" }
    },
    handler: async ({ chat_id, text }) => {
      return await telegram.sendMessage(chat_id, text);
    }
  }
};

Оркестратор: как агент выбирает действия

Оркестратор — это центральный цикл, который выбирает следующее действие на основе текущего состояния и контекста.

Сценарий выбора действия:

  1. Агент получает задачу и контекст
  2. LLM выбирает одно или несколько действий из набора
  3. Действия выполняются, результат добавляется в контекст
  4. LLM снова анализирует состояние — подходит ли он для завершения задачи или нужно ещё действие
  5. Цикл повторяется до завершения или до достижения лимита шагов

Очередь выполнения

Действия могут выполняться по-разному:

  • Последовательно (chain): каждое действие запускается только после завершения предыдущего. Простой и предсказуемый поток.
  • Параллельно (parallel): несколько действий запускаются одновременно, результаты собираются после. Ускоряет выполнение, но требует аккуратной балансировки нагрузки.
  • По условию (conditional): агент выбирает действие в зависимости от результата предыдущего. Например: если парсинг вернул ошибку — попробовать обходной маршрут.

Пример реального пайплайна

Контент-агент, который обрабатывает новые задачи из Notion-инбокса, может использовать пайплайн из десяти действий:

read_inbox_card
  → check_status              # проверить, что карточка новая
  → set_status_processing     # статус → «В обработке»
  → read_source_url           # прочитать исходную страницу
  → classify_content          # определить целевую базу
  → write_draft               # написать черновик
  → create_page               # создать страницу в CMS
  → link_result               # привязать результат к инбокс-карточке
  → set_status_done           # статус → «Обработан»

Каждый шаг — отдельная функция. Если что-то сломалось, легко понять — где именно.


Почему это важно

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

  • что он умеет делать (набор действий)
  • как правильно их сочетать (оркестратор)
  • какие параметры передавать (схема действий)

Это делает систему предсказуемой, надёжной и легко расширяемой: добавить новое действие можно, не переписывая всю инструкцию.


Когда использовать

Паттерн оправдан, если агент выполняет более 5–10 разных шагов, разные действия повторяются в разных сценариях или нужна прозрачность в отладке. Если агент делает два-три действия — достаточно простой инструкции.

Есть вопросы по архитектуре AI-агентов или хотите обсудить, как выстроить подобное под ваши задачи — Telegram: t.me/pimenov


По теме

© 2026 ИП Пименов Сергей Викторович ИНН 616271176890 ОГРН 316619600255641