---
title: "Агенты"
id: "1306"
type: "page"
slug: "agents"
published_at: "2026-08-15T21:48:48+00:00"
modified_at: "2026-09-22T23:59:06+00:00"
url: "https://pastukhov.com/agents/multiagent/docs/agents"
markdown_url: "https://pastukhov.com/agents/multiagent/docs/agents.md"
excerpt: "Агент — экземпляр Pastukhov Agent на управляемом сервере. MultiAgent генерирует для каждого агента собственный compose.yml,…"
---

# Агенты

[https://pastukhov.com/agents/multiagent/docs/agents.md](https://pastukhov.com/agents/multiagent/docs/agents.md)

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

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

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

Продукты разворачиваются **со связанным агентом**: переменная «Linked agent» по умолчанию указывает на первый отдельный агент сервера, а если агентов на сервере нет — предлагается «Создать нового агента», и мастер создаёт полноценного агента тем же механизмом, а приложение получает его адрес и ключ для обратной связи. Учётные данные (пароль пользователя, пароль менеджера, JWT-секрет, API-ключ) генерируются сами. Подробнее — [Продукты](/agents/multiagent/docs/products)
.

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

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

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

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

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

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

Имя агента или продукта меняется прямо в шапке страницы — клик по нему открывает поле правки: введите новое имя и нажмите Enter, Escape отменяет. Новое имя сразу попадает в заголовок вкладки браузера и в навигацию. Остальные настройки собраны на вкладках:

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

## compose.yml

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

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

Для каждого агента доступны две операции с паролями: **генерация пользовательского пароля** (для входа в веб-интерфейс агента) и **смена пароля менеджера** (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 только на своей подпапке. Подробнее — на странице [Маршруты](/agents/multiagent/docs/routes)
.

Когда на сервере включён [центральный вход](/agents/multiagent/docs/servers)
, агенты и продукты закрываются «за центральным входом» **по умолчанию**: посетитель один раз входит на странице входа сервера, и подпапка агента уже открыта — собственный логин агента не требуется. Снять защиту с конкретного агента (или продукта) можно переключателем **«Защита SSO»** на вкладке «Подключение». Служебные машинные пути `/{слаг}/api/…` и `/{слаг}/svelteChatHub` при этом не закрываются — у них своя авторизация (JWT или API-ключ), поэтому управление агентами через MultiAgent продолжает работать. Прямое обращение по адресу `host:port` в обход nginx тоже не закрывается: там действует собственный вход агента. Подробнее о защите — в разделе «Защита приложений» на странице [Маршруты](/agents/multiagent/docs/routes)
.

Прежняя схема тоже работает как запасная: каждый агент доступен напрямую по адресу `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), Chatbot Agent (6050), Telegram Agent (6060), UI Agent (6070) и CRM Agent (6080) — каждый со своим реальным логотипом, портом из диапазона продукта и генерируемыми учётными данными. Шаблоны продуктов лежат на диске MultiAgent в папке `AGENT_PRODUCTS` и добавляются простым помещением новой папки. Для автономного агента образ выбирается из каталога сервера — его можно пополнять своими образами.

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

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

## Дополнительные ссылки

На карточке агента или продукта на домашней странице сервера можно добавить свои значки — быстрые ссылки на связанные с приложением места. Ссылка задаётся на вкладке **«Ссылки»** и состоит из четырёх частей: **заголовок** (всплывающая подсказка), **маршрут с портом** — тогда ссылка открывается на сервере по адресу `{база}/{слаг}/` и ведёт на указанный порт; **внешний адрес** — когда маршрут не нужен, значок просто открывает этот адрес; **значок и цвет** — из набора значков Material Symbols или свой цвет. Так на карточке агента появляются, например, ссылки на его панель управления или на страницу состояния без ручной правки веб-сервера. Рядом с кнопкой добавления есть **«Применить конфигурацию»**: она сразу применяет маршруты ссылок к веб-серверу сервера.

## Перенос базы данных

Автономному агенту можно перенести данные из базы на другом сервере. На вкладке **«Postgres»** выберите сервер-источник, контейнер с базой (обычно `agents-postgres`) и нужную базу, затем нажмите **«Перенести»** и подтвердите действие. MultiAgent сам снимет копию базы, перенесёт её на целевой сервер, очистит целевую базу, восстановит данные и вернёт их агенту — каждый шаг виден в ленте прогресса. Контейнер агента на время переноса останавливается: после успешного завершения просто запустите агента снова. Если что-то пошло не так, обработается сбойный шаг, а целевая база останется нетронутой.

[← Оглавление документации](/agents/multiagent/docs)
