Skip to content

Agents & Processes

Agent в OPORA — это не ИИ-модель сама по себе, это контейнер workflow’а + metadata + лимиты. Одна и та же LLM может обслуживать десять разных агентов, которые друг о друге не знают.

ПолеЧто значит
nameHuman-readable имя (показывается в списке)
goalОписание цели одной строкой; используется LLM-нодами если они «понимают контекст»
roleoperations / sales / support / analytics / custom — влияет на default’ы template’ов
processIdОдин процесс per агент (1:1, enforce’ится на уровне схемы)
templateIdЕсли агент создан из template’а — ссылка сохраняется для upgrade’ов
workingHoursCron + timezone + enforcement (hard = блокировать runs вне часов; soft = только warning)
costCapОпциональный месячный лимит в рублях/токенах
kpiGranularitynone / per_agent / per_channel — уровень детализации KPI’ек
ownerUserIdКто создал. owner + admin’ы space’а могут править

Process — это directed acyclic graph нод:

trigger (ровно один на процесс)
processing nodes (0..N — можно fan-out'ить)
terminal nodes (output — отдача во внешний мир)

Рёбра могут быть условными (condition на expression-DSL’е OPORA):

ai.classify
├─ output == "hot" → telegram.message.send (to: manager)
└─ output == "cold" → email.send (template: drip campaign)

Fan-out через control.foreach порождает паралельные run-branches, которые потом join’ятся.

Каждое изменение в editor’е — это revision. Revisions:

  • immutable (revision не меняется после сохранения)
  • numbered sequentially (1, 2, 3…)
  • хранят полный snapshot графа (не diff)
  • подписаны createdBy + timestamp’ом

Deployment — это связка revision + environment (sandbox / production). Production-deployment — это то, что runs’ы фактически используют.

  1. Revision 1: вы создали workflow webhook → amocrm.lead.create. Published. Production uses revision 1.
  2. Вы поправили workflow, добавили ai.classify между ними. Сохранили — revision 2 создалась, но не активна.
  3. Потестировали revision 2 в sandbox-environment’е — окей.
  4. Publish revision 2 → production deployment переключается. Новые webhook’и идут через revision 2, старые running runs продолжают на revision 1 (как создались).
  5. Что-то сломалось? Rollback → revision 1 снова production. Новые runs идут через revision 1. Ничего в rerun’е не нужно.

Ноды ссылаются на предыдущие через template-syntax:

{{trigger.<field>}} — payload trigger-ноды
{{<nodeKey>.<path>}} — output ноды с данным ключом
{{secrets.<secretName>}} — plain-text значение secret'а (runtime-only)
{{agent.name}} — metadata агента
{{run.id}} — id текущего run'а

Пример:

yookassa.payment.create
description = "Заказ #{{trigger.order_id}} от {{trigger.customer_name}}"
metadata = {order_id: "{{trigger.order_id}}"}

Resolver работает на runtime’е, не на publish’е — если trigger.order_id отсутствует, нода упадёт с понятной ошибкой UNRESOLVED_TEMPLATE, а не тихо пройдёт с пустой строкой.

Полная спецификация resolver’а — в AGENTS.md § 8.11.

Template — это готовый процесс без конкретных secrets / connection’ов. При instantiate’е:

  1. Template выбирается из catalog’а (GET /templates)
  2. Wizard просит заполнить configSchema (для lead-qualifier’а — amoCRM-connection, для weekly-digest’а — Telegram-chat_id и cron)
  3. OPORA создаёт agent + process + revision с уже подставленными configSchema-значениями
  4. Agent готов к publish’у

Template KPI-цели наследуются с дефолтами; operator уточняет позже.

Если template не подходит — Start from blank:

  1. Имя + goal
  2. OPORA создаёт агента с пустым процессом (один webhook.trigger по умолчанию)
  3. Переходите в editor и собираете workflow с нуля

Template нельзя «добавить позже» — если нужно переключиться, проще создать второго агента из template’а и удалить первого.

  • 1 agent per user-role-level в free tier; unlimited в pro
  • 1 process per agent (ну вот серьёзно 1, не 0 и не 2)
  • Revisions — unlimited, но storage-quota space’а суммарная
  • costCap опционален; при срабатывании агент приостанавливается до следующего billing-cycle’а или увеличения cap’а
  • workingHours — hard-enforcement блокирует starts вне часов (running run’ы доезжают до конца даже если вышли за границу)
  • Runs & Traces — что происходит когда process исполняется
  • KPIs — как агент считает собственные метрики
  • CreateAgentWizard в коде — если хотите посмотреть изнутри