Перейти к содержимому

Воркфлоу

Воркфлоу в Moira — это направленный граф узлов, определяющий многошаговый процесс для выполнения AI-агентами.

Каждый воркфлоу состоит из:

{
"id": "my-workflow",
"metadata": {
"name": "Мой воркфлоу",
"version": "1.0.0",
"description": "Описание того, что делает этот воркфлоу"
},
"nodes": [
// Массив определений узлов
]
}
ПолеОбязательноеОписание
nameДаЧеловекочитаемое имя воркфлоу
versionДаСтрока семантической версии
descriptionДаЧто выполняет воркфлоу

Узлы — это шаги вашего воркфлоу. Каждый узел имеет id и type, определяющий его поведение.

При запуске воркфлоу:

  1. Движок создает экземпляр выполнения с уникальным processId
  2. Находит start узел (type: start)
  3. Возвращает первую директиву агенту
  4. Агент выполняет и возвращает результат
  5. Движок оценивает соединения и переходит к следующему узлу
  6. Повторяет до достижения end узла (type: end)

Каждое выполнение поддерживает объект контекста:

{
variables: Record<string, unknown>; // Пользовательские переменные
nodeStates: Record<string, unknown>; // Состояние по узлам
executionId: string; // Уникальный ID выполнения
workflowId: string; // ID исходного воркфлоу
currentNodeId: string; // Текущая позиция
}

Moira поддерживает 7 типов узлов:

ТипНазначение
startТочка входа для выполнения воркфлоу
endТерминальный узел, отмечающий завершение
agent-directiveЗадача агента с директивой и условием завершения
conditionВетвление на основе структурированных условий
expressionВычисление значений с помощью арифметических выражений
subgraphДелегирование другому воркфлоу
telegram-notificationОтправка уведомлений через Telegram

Подробная документация по каждому типу в разделе Узлы.

Узлы связываются через объект connections, определяющий поток. Каждый тип узла имеет специфические типы соединений:

{
"id": "analyze-task",
"type": "agent-directive",
"directive": "Проанализируй требования к задаче",
"completionCondition": "Анализ завершен",
"connections": {
"success": "next-step",
"error": "error-handler"
}
}
{
"id": "check-status",
"type": "condition",
"condition": {
"type": "equals",
"left": { "type": "variable", "path": "status" },
"right": { "type": "literal", "value": "success" }
},
"connections": {
"true": "success-path",
"false": "retry-path"
}
}
{
"id": "simple-workflow",
"metadata": {
"name": "Простой воркфлоу задачи",
"version": "1.0.0",
"description": "Базовый воркфлоу, демонстрирующий соединения узлов"
},
"nodes": [
{
"id": "start",
"type": "start",
"connections": { "default": "main-task" }
},
{
"id": "main-task",
"type": "agent-directive",
"directive": "Выполни назначенную задачу",
"completionCondition": "Задача успешно выполнена",
"connections": { "success": "end" }
},
{
"id": "end",
"type": "end"
}
]
}

Воркфлоу имеют настройки видимости:

  • private — Только владелец имеет доступ
  • public — Все пользователи могут запустить воркфлоу
  1. Начинайте со start — Каждый воркфлоу должен иметь start узел
  2. Заканчивайте end — Используйте end узлы для отметки завершения
  3. Четкие директивы — Пишите недвусмысленные инструкции
  4. Измеримые условия — Условия завершения должны быть проверяемы
  5. Обработка ошибок — Включайте error соединения для graceful failures
  6. Документация — Добавляйте описания к сложным узлам
  • Узлы — Типы узлов и конфигурация
  • Шаблоны — Динамический контент в воркфлоу