Pipeline в betool — это граф узлов, который вы собираете в визуальном редакторе. Каждый тип узла объявляет на стороне сервера свою конфигурацию и ключи, которые он производит; редактор проверяет граф и конфигурацию, прежде чем разрешить публикацию.
Анатомия pipeline
[Start]──▶[agent]──▶[router]──┬──▶[agent]
└──▶[webhook_action]
- Узел Start создаётся автоматически вместе с моделью; он несёт приёмники (входные каналы), которые запускают pipeline. Один Start может объявить несколько приёмников.
- Каждый нижестоящий узел читает ключи, произведённые вышестоящими узлами, в контексте выполнения.
- Маршрутизатор или фильтры создают ветви; каждое выполнение оставляет просматриваемую трассу.
Ключевые понятия
Ключ потока
Ключ — это именованный фрагмент данных, который передаётся между узлами. Пример: узел agent может записать свой результат под exchange.intent, а нижестоящий узел (фильтр, маршрутизатор) проверяет этот ключ.
То, что узел производит, объявляется его контрактом в двух формах:
- Фиксированный ключ (
fixed_key) — всегда один и тот же, определяется типом узла (например,input.entry_kindдля Start). - Настраиваемый ключ (
configurable_key) — выбирается в конфигурации узла (например, выходной ключ агента).
То, что узел читает, задаётся в его конфигурации (поле, проверяемое фильтром, входы агента…).
Контракт
Каждый тип узла раскрывает контракт, объявленный на стороне сервера: его поля конфигурации (тип, допустимые значения, обязательные поля, значения по умолчанию) и ключи, которые он производит. Редактор опирается на этот контракт, чтобы построить панель конфигурации и проверить то, что вы вводите.
Конфигурация
Узел также имеет статические параметры (свою конфигурацию) — например, для узла agent: его роль, миссия, инструменты, LLM-модель.
Секреты
Поля, которые контракт узла или приёмника объявляет секретными (HMAC-секрет входящего webhook, токен или пароль HTTP-вызова, токен доступа Страницы, секрет подконвейера…), после сохранения никогда не возвращаются в открытом виде: ни в редактор, ни через API, ни инструментам MCP и агентам, которые читают pipeline, ни в предложениях.
В инспекторе такое поле показывает «•••••• сохранено — введите, чтобы заменить»:
- если оставить его пустым, оно сохраняет записанный секрет;
- ввод нового значения его заменяет;
- кнопка Удалить его стирает (для HMAC-секрета проверка подписи тогда отключается).
Копирование-вставка или дублирование узла не копирует его секреты: введите их заново в копии.
Создание pipeline
- Модели → Новая — в betool ваш pipeline содержится в модели.
- Открывается холст с узлом Start. Настройте его, чтобы выбрать один или несколько входных каналов.
- Добавляйте узлы кнопкой Добавить узел при наведении на связь или правым щелчком по узлу (Добавить узел перед / после), затем выберите их тип в каталоге модулей (поиск по имени).
- Соединяйте узлы между собой. Pipeline — это дерево: у каждого узла только один родитель.
- Щёлкните по узлу, чтобы открыть его конфигурацию в инспекторе.
- Запустить тест — выполните опубликованную версию на произвольно введённой полезной нагрузке, в реальном режиме или в режиме симуляции (узлы с внешним эффектом пропускаются).
- Публикация — сообщение коммита обязательно; pipeline проверяется, после чего новая версия становится той, которую выполняет runtime.
Версионирование
Каждая публикация создаёт версию. В разделе Версии вы можете:
- Сравнить версию с текущим состоянием (добавленные, удалённые, изменённые узлы и связи).
- Загрузить версию в редактор (черновик перезаписывается, без публикации).
- Опубликовать заново более раннюю версию (откат).
Из истории прошлое выполнение, пришедшее от приёмника, также можно воспроизвести на опубликованной версии, при необходимости с изменённой полезной нагрузкой и в режиме симуляции.
Валидация
При публикации валидатор проверяет граф:
- Блокирующие ошибки — цикл в графе; узел с несколькими родителями; неподключённый обязательный выход (тело цикла
foreach, дочерние узлыparallel, каждый объявленный маршрутrouter); неверное количество Start; ошибки, специфичные для типа узла (например, несуществующая роль или миссия агента). - Предупреждения (не блокируют) — узел, недостижимый из Start; расхождение существующей конфигурации с контрактом её узла.
При записи конфигурации (редактор, предложения, API) значение вне допустимых или отсутствующее обязательное поле отклоняются с указанием ожидаемого исправления.
В результате опубликованный pipeline прошёл эти структурные проверки. Оставшиеся ошибки относятся к выполнению (сбой вызова стороннего API, неожиданный результат разбора).