Skip to content
2.12.0

Пакеты и рантайм ​

Как устроены исполняемые пакеты: два вида, хранилище с черновиком и версиями, установка зависимостей, вызов навыков, жизнь фоновых сервисов и виджетов. Для разработчиков пакетов и платформы.

Два вида пакетов ​

eva.kindЧто этоТочка входа
skillsНабор навыков для чата, агентов и Студииeva.tools[] в манифесте и defineSkill в коде
backgroundФоновый сервисЭкспорт main(ctx), опционально eva.widgets[]

У пакета навыков есть области видимости eva.scopes: chat, agent, studio. Например, пакет только для агентов не появится в чате.

Агенты пакетами не являются. Это отдельный реестр флоу в базе: Флоу агентов.

Хранилище ​

text
package-store/<имя>/draft/      черновик, его правит Студия
package-store/<имя>/1.2.0/      опубликованная версия, неизменяемая
package-store/<имя>/1.3.0/

Чат и агенты работают с активной версией. До первой публикации активной считается черновик.

Установка зависимостей ​

API сам является npm-реестром: пакеты @eva/* отдаёт из своей поставки, остальные зависимости проксирует на upstream из Админ → Настройки. Поэтому пакетам не нужен доступ в интернет, если корпоративный реестр доступен API.

Вызов навыка ​

Настройки пакета, общие и личные, сливаются в ctx.settings. Если обязательной личной настройки нет, ход ждёт, пока пользователь её заполнит.

Фоновые сервисы и виджеты ​

  • Фоновый сервис запускается при публикации или кнопкой и живёт в Package-pool как отдельный процесс.
  • Сбой процесса фиксируется как последняя ошибка, перезапуском управляет платформа.
  • Сервис может запустить агента через ctx.startAgentJob.
  • HTTP виджетов идёт через API: /internal/bg-service/<пакет>/... для активной версии и /internal/bg-service-debug/<пакет>/... для debug-запуска черновика.
  • Логи фонового сервиса пишутся в файл в томе данных и видны в Студии.

Режимы запуска кода ​

EVA_PACKAGE_ISOLATEЧто происходит
hostПо умолчанию. Node-процесс в папке пакета
secure-execВключается явно. Строгая изоляция кода
stubУстаревший режим для тестов

Пакеты считаются доверенными: их ставит администратор. Главный механизм защиты от зависшего кода это таймаут и принудительное завершение процесса.

Документация экосистемы EVA 2.1