---
title: "Окружения"
id: "2054"
type: "page"
slug: "environments"
published_at: "2026-09-28T07:41:10+00:00"
modified_at: "2026-11-06T09:29:18+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`. В итоге получится `A=1`, `B=2`, `C=3` — импортированное значение победило на общем ключе, остальное осталось нетронутым.

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

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

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

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

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

## Выгрузка на фабрики

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

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

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

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

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

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