---
title: "Окружения"
id: "2054"
type: "page"
slug: "environments"
published_at: "2026-09-28T07:41:10+00:00"
modified_at: "2026-10-15T17:05:16+00:00"
url: "https://pastukhov.com/agents/multiagent/docs/environments"
markdown_url: "https://pastukhov.com/agents/multiagent/docs/environments.md"
excerpt: "У каждого агента и каждого сервера есть свой набор переменных окружения — строк вида КЛЮЧ=значение,…"
---

# Окружения

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

У каждого агента и каждого сервера есть свой набор переменных окружения — строк вида `КЛЮЧ=значение`, которые передаются приложению при запуске. Там лежат адреса сервисов, ключи доступа, параметры подключений. Пока агентов и серверов мало, эти строки можно копировать руками. Когда их десятки, один и тот же набор приходится вручную повторять много раз — и легко ошибиться или забыть обновить где-то.

**«Окружения»** — это библиотека именованных наборов таких переменных. Набор заводится один раз, а потом выгружается на выбранные агенты и серверы. Меняете значение в одном месте — рассылаете нужным агентам, вместо того чтобы обходить их по очереди.

## Что такое набор окружения

Набор — это имя и упорядоченный список строк `КЛЮЧ=значение`. Хранится он в том же виде, в каком живут окружения серверов и агентов, поэтому выгруженные значения ведут себя ровно как введённые вручную на вкладке «Окружение».

- **Значения зашифрованы.** В списке и при просмотре видны только названия ключей и их количество — сами значения скрыты. Полный текст показывается только при явном раскрытии, и только в окне редактирования. Так секреты не мелькают на экране и не попадают в чужие руки;
- **Имя уникально.** Два набора с одинаковым именем не создать: сохранение отклонится с понятным сообщением;
- **Пустые ключи отбрасываются**, а пустые значения сохраняются — так работает передача окружения агентам. Строку вида `ПАРОЛЬ=` иногда нужно оставить намеренно.

## Страница «Окружения»

Страница «Окружения» открывается отдельным пунктом боковой панели. Она показывает таблицу наборов: имя и число переменных в каждом. У строки есть три действия:

- **«Выгрузить»** — отправить набор на выбранные агенты или серверы;
- **«Редактировать»** — открыть набор, поправить строки, раскрыть или скрыть значения;
- **«Удалить»** — убрать набор из библиотеки (с подтверждением).

Там же кнопка **«Новое окружение»** создаёт пустой набор, а **«Импорт»** сразу создаёт новый набор из переменных другого источника. Если наборов ещё нет, страница предлагает создать первый.

Удаление важно понимать правильно: оно убирает только сам набор из библиотеки. **Ни на одном сервере и ни у одного агента ничего не меняется** — выгруженные когда-то значения остаются на месте. Учёт того, куда набор выгружался, не ведётся, как и у похожих библиотек (например, навыков и моделей).

## Импорт из сервера или агента

Чтобы не набирать переменные заново, их можно забрать из уже существующей записи: выбрать источник — общее окружение сервера или дополнительное окружение агента, — посмотреть его переменные (значения скрыты до раскрытия), отметить нужные и импортировать. То же самое, только в новый набор, делает кнопка «Импорт» на странице.

При импорте переменные сливаются по ключу: если такой ключ в наборе уже есть, его значение заменяется импортированным; новые ключи добавляются в конец, а остальные переменные набора сохраняются. Импорт читает уже сохранённые значения, поэтому работает независимо от того, доступен ли сейчас сервер или агент-источник.

Пример: в наборе есть `B=старое` и `C=3`, а из агента импортируются `A=1` и `B=2`. В итоге получится `B=2`, `C=3`, `A=1` — импортированное значение победило на общем ключе, остальное осталось нетронутым.

## Выгрузка на агентов

Выгрузка на выбранных агентов добавляет переменные набора в их дополнительное окружение. Слияние идёт по ключу: значение из набора побеждает, остальные переменные агента сохраняются. Это именно добавление, а **не замена**: набор никогда не стирает то, чего в нём нет. Записи продуктов (готовых приложений из каталога) в число получателей не входят.

Дальше всё зависит от состояния агента, и каждая строка отчитывается о своём результате отдельно:

- **Работающий агент**, у которого значения действительно изменились, пересоздаётся без скачивания образа — это быстрее обычного обновления, и новые значения сразу вступают в силу. В строке отчёта будет сказано, что пересоздание запущено;
- **Остановленный агент** просто получает обновлённое окружение, и значения применятся при следующем запуске или пересоздании;
- **Если ничего не изменилось**, ничего не пишется и не пересоздаётся — в строке будет сказано, что переменные уже на месте. Повторная выгрузка того же набора безопасна.

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

## Выгрузка на серверы

Выгрузка на выбранные серверы добавляет переменные в их общее окружение — с тем же слиянием по ключу: значение из набора побеждает, остальные переменные сервера сохраняются.

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

## Что важно знать

- **Выгрузка только добавляет.** Набор не удаляет ключи, которых в нём нет. Если переменную нужно убрать у агента, это делается на его собственной вкладке «Окружение»;
- **Свой набор важнее общего.** Если один и тот же ключ задан в нескольких местах, побеждает то, что ближе к приложению: на вкладке «Окружение» самого агента или приложения, затем в шаблоне развёртывания и только потом в общем окружении сервера. Поэтому общую переменную можно задать для всех сразу и при этом переопределить её у отдельного приложения;
- **Ещё один источник — файл `.env` в корне проекта.** Его значения важнее заданных при развёртывании и подхватываются на лету;
- **Через программный Agent API наборы пока не выгружаются** — эта возможность работает из интерфейса;
- **«Окружения» — это про переменные запуска**, а не про модели. Прежний раздел с таким названием превратился в каталог моделей и поставщиков; нынешние «Окружения» — про обычные переменные окружения контейнеров.

О том, как задать окружение прямо у агента или сервера, — на страницах [Агенты](/agents/multiagent/docs/agents)
 и [Серверы](/agents/multiagent/docs/servers)
; о каталоге моделей — на странице [Аккаунты](/agents/multiagent/docs/accounts)
.

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