Воркфлоу
Воркфлоу в Moira — это направленный граф узлов, определяющий многошаговый процесс для выполнения AI-агентами.
Структура воркфлоу
Заголовок раздела «Структура воркфлоу»Каждый воркфлоу состоит из:
{ "id": "my-workflow", "metadata": { "name": "Мой воркфлоу", "version": "1.0.0", "description": "Описание того, что делает этот воркфлоу" }, "nodes": [ // Массив определений узлов ]}Метаданные
Заголовок раздела «Метаданные»| Поле | Обязательное | Описание |
|---|---|---|
name | Да | Человекочитаемое имя воркфлоу |
version | Да | Строка семантической версии |
description | Да | Что выполняет воркфлоу |
Массив узлов
Заголовок раздела «Массив узлов»Узлы — это шаги вашего воркфлоу. Каждый узел имеет id и type, определяющий его поведение.
Выполнение воркфлоу
Заголовок раздела «Выполнение воркфлоу»При запуске воркфлоу:
- Движок создает экземпляр выполнения с уникальным
processId - Находит start узел (type:
start) - Возвращает первую директиву агенту
- Агент выполняет и возвращает результат
- Движок оценивает соединения и переходит к следующему узлу
- Повторяет до достижения 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, определяющий поток. Каждый тип узла имеет специфические типы соединений:
Agent Directive Node
Заголовок раздела «Agent Directive Node»{ "id": "analyze-task", "type": "agent-directive", "directive": "Проанализируй требования к задаче", "completionCondition": "Анализ завершен", "connections": { "success": "next-step", "error": "error-handler" }}Condition Node
Заголовок раздела «Condition Node»{ "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 — Все пользователи могут запустить воркфлоу
Лучшие практики
Заголовок раздела «Лучшие практики»- Начинайте со start — Каждый воркфлоу должен иметь start узел
- Заканчивайте end — Используйте end узлы для отметки завершения
- Четкие директивы — Пишите недвусмысленные инструкции
- Измеримые условия — Условия завершения должны быть проверяемы
- Обработка ошибок — Включайте error соединения для graceful failures
- Документация — Добавляйте описания к сложным узлам