Агенты

Агент — экземпляр Pastukhov Agent на управляемом сервере. MultiAgent генерирует для каждого агента собственный compose.yml, разворачивает контейнер и следит за его жизненным циклом, а чаты агента собирает в централизованный интерфейс.

Создание агента

Кнопка «Новый агент» открывает мастер: сначала выбирается тип — Standalone (автономный экземпляр Agent) либо один из продуктов (Research Agent, Analytics Agent, Data Agent, Proxy Agent, MultiAgent). Затем форма: имя, сервер, образ (для продукта подставляется автоматически) и порт — он подбирается автоматически из диапазонов (5000+ для агентов, 6000+ для продуктов), поэтому конфликты исключены. Дополнительно задаются теги и лицензия (по умолчанию наследуется от сервера).

Продукты разворачиваются со связанным агентом: у переменной «Linked agent» по умолчанию выбран пункт «Create new agent» — мастер создаёт полноценного агента тем же механизмом, а приложение получает его адрес и ключ для обратной связи. Учётные данные (пароль пользователя, пароль менеджера, JWT-секрет, API-ключ) генерируются сами. Подробнее — Продукты.

Жизненный цикл

  • Развернуть (provision) — сгенерировать compose.yml, скачать образ и поднять контейнер;
  • Запустить / Остановить / Перезапустить — управление контейнером;
  • Пересоздать (recreate) — единое действие обновления: перерисовывает compose, тянет свежий образ и пересоздаёт контейнер. Отдельной операции Pull нет;
  • Удалить — удалить запись управления и зеркальные чаты; контейнер и данные на сервере не затрагиваются.

Все операции выполняются в фоновом режиме, а прогресс приходит в интерфейс в реальном времени — виден каждый шаг: подключение к серверу, подготовка файла настройки, загрузка образа, запуск контейнера. Развёртывание, пересоздание и удаление обновляют и Nginx-роутинг сервера.

Для автономных агентов доступен переключатель «Graceful updates» на вкладке «Общие» (выключен по умолчанию, у продуктов отсутствует). Пока он включён, «Пересоздать» не останавливает работающий чат: если агент что-то обрабатывает или последняя активность была меньше 5 минут назад, обновление откладывается (тост «Agent update scheduled»), а фоновый сервис запустит его сам, как только чаты замолчат на 5 минут. Внутренние изменения конфигурации (база, SSL, git) пересоздание не откладывают.

Статус контейнера агента берётся у Docker напрямую: running, restarting, stopped, paused, exited или dead.

Вкладки редактирования

  • Статус — потребление CPU, RAM и диска контейнером;
  • Журналы — последние 300 строк логов контейнера;
  • Общие — имя, теги, образ, опции;
  • Git — привязка репозитория Forgejo, ветки;
  • Подключение — порт, URL, шаблон адреса;
  • Учётные данные — пароли доступа к агенту;
  • Порты — список проброшенных портов;
  • Тома — монтирования поверх автогенерируемых;
  • Окружение — дополнительные переменные окружения (extra-env);
  • compose.yml — предпросмотр итогового файла с подсветкой синтаксиса;
  • Модели — модели и лимиты параллельных чатов;
  • Файлы — файловый менеджер на сервере, привязанный к агенту;
  • Project Settings — настройки проекта агента;
  • Навыки (Skills) и MCP-серверы — диалоги конфигурации агента, открываются со страницы агента;
  • Задачи (Tasks) и Боты (Bots) — расписания и боты агента;
  • Промпты (Prompts) — очередь промптов агента.

compose.yml

Файл настройки генерируется по шаблону сервера: порты — из записей агента, тома и переменные окружения — слияние автоматических (папки сервера, строка Postgres, лицензия) и ваших явных значений. Предпросмотр показывает итоговый файл до развёртывания — ошибки конфигурации видны заранее.

Учётные данные

Для каждого агента доступны две операции с паролями: генерация пользовательского пароля (для входа в веб-интерфейс агента) и смена пароля менеджера (rotating manager password) — пароля, под которым MultiAgent обращается к API агента. Смена пароля менеджера пересоздаёт контейнер агента с новым значением в окружении.

Docker.sock и развёртывание

Агенту можно подключить /var/run/docker.sock хост-сервера (по умолчанию выключено, включается на каждого агента отдельно). Это нужно, когда сам агент должен управлять контейнерами — например, для деплоя сервисов из своего проекта. Учитывайте: с docker.sock агент получает полный контроль над Docker хоста, поэтому включайте его только доверенным агентам.

Импорт агентов

Если на сервере уже работают агенты, развёрнутые вручную, их не нужно пересоздавать. Команда «Импортировать агентов» сканирует сервер, находит контейнеры агентов, разбирает их compose-файлы и регистрирует агентов в MultiAgent с сохранением портов, томов и переменных окружения.

Обратный прокси и адрес агента

Основной способ доступа — подпапка на Nginx сервера. Каждый агент получает свой адрес вида {база}/{слаг}/: Nginx-контейнер сервера (ставится с вкладки Nginx) проксирует подпапку на контейнер агента по внутренней docker-сети, а сертификат — самоподписанный, собственная пара или Let’s Encrypt — закрывает HTTPS. Приложения соединяются контейнер-контейнер, публиковать порты наружу не нужно: неразвёрнутый или упавший агент отдаёт 502 только на своей подпапке. Подробнее — на странице Маршруты.

Прежняя схема тоже работает как запасная: каждый агент доступен напрямую по адресу http://{сервер}:{порт} (для шифрования можно включить самоподписанный сертификат одним переключателем), а поле «Адрес» на вкладке подключения позволяет задать любой свой URL — например, когда агент спрятан за внешним туннелем. Переопределённый адрес учитывается везде: тест API, прокси-запросы, синхронизация чатов и генерация compose.yml.

MultiAgent также работает как передаточный пункт между браузером и API управляемых агентов: запросы вида /api/agents/{agentId}/proxy/... пересылаются на API агента от имени менеджера (если вход устарел, он обновляется сам и запрос повторяется). Благодаря этому браузер и внешние интеграции общаются с агентами через MultiAgent — открывать порты агентов наружу не требуется.

Каталог образов

Вместо фиксированного каталога образов — каталог продуктов: из мастера «Новый агент» одним диалогом ставятся пять продуктов семейства — MultiAgent (порт 6000), Research Agent (6010), Analytics Agent (6020), Data Agent (6030) и Proxy Agent (6040) — каждый со своим реальным логотипом, портом из диапазона продукта и генерируемыми учётными данными. Шаблоны продуктов лежат на диске MultiAgent в папке AGENT_PRODUCTS и добавляются простым помещением новой папки. Для автономного агента образ выбирается из каталога сервера — его можно пополнять своими образами.

Репозитории Forgejo

Каждому агенту можно привязать git-репозиторий: существующий на Git-сервере Forgejo или новый, который MultiAgent создаст сам. Ключ доступа выпускается и хранится автоматически. Репозиторий монтируется агенту как папка проекта — все коммиты агента сразу попадают в git.

← Оглавление документации