Orchestra — функциональные характеристики, установка и эксплуатация
Orchestra — платформа оркестрации автономных программных агентов на больших языковых моделях. Правообладатель — ООО «СИДОН». На странице собраны описание функциональных характеристик, сведения об установке и эксплуатации, предусмотренные подпунктом «д» пункта 11 Правил формирования и ведения единого реестра российских программ для ЭВМ и баз данных (постановление Правительства РФ от 16.11.2015 № 1236).
Описание функциональных характеристик
Редакция от 24.09.2026
| Поле | Значение |
|---|---|
| Наименование программного обеспечения | Orchestra |
| Правообладатель | Общество с ограниченной ответственностью «СИДОН» |
| ИНН / КПП / ОГРН | 2463138169 / 246301001 / 1262400004481 |
| Адрес правообладателя | 660062, Красноярский край, г. Красноярск, ул. Лесопарковая, д. 33, кв. 324 |
| Язык реализации | Python (реализация CPython 3.12) |
| Условия распространения | Открытая лицензия GNU Affero General Public License версии 3, а также возмездная лицензия на условиях правообладателя |
| Дата составления документа | 24.09.2026 |
1. Назначение программного обеспечения
Orchestra — платформа оркестрации автономных программных агентов, построенных на больших языковых моделях. Программа предназначена для организации в компании постоянно работающей команды таких агентов и для управления ею так же, как руководитель управляет сотрудниками: владелец формулирует цель, а разбиение цели на задачи, назначение исполнителей, контроль результата и приём работы выполняет агент-оркестратор.
Программа решает задачу, которую средства единичного вызова языковой модели не решают: удержание рабочего контекста и состояния исполнителя на протяжении суток и недель, изоляцию параллельно работающих исполнителей друг от друга, машинно-проверяемый приём результата и воспроизводимый учёт израсходованных ресурсов.
Область применения — автоматизация рутинных процессов организации: разработка и сопровождение программного обеспечения, обработка обращений клиентов, подготовка и согласование документов, ведение задач и отчётности, аналитические разборы.
2. Перечень функциональных характеристик
2.1. Управление парком агентов
- создание агента с заданием роли, модели, каталога проекта и границ ответственности;
- сохранение состояния агента в базе данных: агент переживает перезапуск платформы, продолжает прерванный диалог и восстанавливает историю;
- перевод простаивающего агента в спящий режим с освобождением дерева процессов и автоматическое пробуждение при поступлении сообщения;
- принудительная остановка агента с сохранением рабочей копии и сессии, а также полная архивация агента с проверкой незавершённой работы;
- переименование агента, смена его модели, смена системной подсказки и описания роли;
- ручное уплотнение рабочего контекста агента.
2.2. Иерархия и обмен сообщениями
- двухуровневая и трёхуровневая иерархия: владелец → оркестратор → суб-оркестраторы → исполнители;
- прямой обмен сообщениями между агентами без участия человека;
- надёжная доставка сообщений с квитанцией: отправитель получает идентификатор доставки и может проверить её фактический исход;
- доставка задания вновь создаваемому агенту с сохранением квитанции и возможностью повторной отправки, если доставка не состоялась;
- доставка сообщения агенту, находящемуся в работе, со вставкой в текущий ход.
2.3. Изоляция работ и сборка результата
- для каждого исполнителя создаётся отдельная рабочая копия репозитория системы контроля версий Git на собственной ветке;
- запрет на создание двух исполнителей с пересекающимися каталогами ответственности;
- проверка конфликтности работ двух исполнителей до слияния;
- слияние ветки исполнителя в основную ветку одним сжатым коммитом, с фиксацией связи между задачей и вошедшими в неё изменениями;
- ограничение на объём вставленных строк в одном слиянии с возможностью явного и записываемого отступления от него;
- запуск платформой (а не агентом) подмножества автоматических проверок, от результата которых зависит допуск слияния;
- блокировка слияния при отсутствии квитанции о проведённом ревью на точный снимок работы.
2.4. Взаимная проверка результата моделями разных поставщиков
- запуск ревью результата работы моделью другого поставщика, чем тот, что выполнял работу;
- многораундовый спор исполнителя с ревьюером в рамках одной сохранённой сессии;
- сохранение вердикта ревью в виде файла-артефакта и квитанции в базе данных.
2.5. Ведение задач
- создание, изменение и просмотр задач с полями «название», «описание», «исполнитель», «приоритет», «стоимость», «статус»;
- автоматическая привязка задачи к агенту при выдаче задания и её закрытие при успешном приёме работы;
- связывание задачи с фактическими коммитами, вошедшими в основную ветку;
- приёмочные условия задачи: команда приёмки, перечень обязательных артефактов, закреплённый приёмочный оракул.
2.6. Фоновые задания и расписания
- отложенный запуск по таймеру;
- периодический запуск по расписанию в формате cron;
- наблюдение за файлом, за выводом команды и за потоком удалённой команды с пробуждением агента по совпадению с образцом;
- выполнение длительной команды с пробуждением агента по её завершении с кодом возврата;
- наблюдение за простоем собственного дерева агентов.
2.7. Рабочие места оператора
- веб-интерфейс («дашборд») с потоковым обновлением: список агентов, их состояние, диалог, файлы рабочей копии, задачи, фоновые задания, коммиты;
- управление из мессенджера Telegram: текстовые сообщения, голосовые сообщения с автоматической расшифровкой, изображения и документы; отдельные темы группы под агентов;
- отправка оператору файлов, альбомов файлов и построенных платформой диаграмм;
- публикация защищённого от индексирования HTML-артефакта по ссылке с ограниченным сроком жизни.
2.8. Учёт ресурсов и ограничение расхода
- учёт израсходованных ходов, токенов и расчётной стоимости по каждому агенту, модели и периоду;
- панель квот поставщиков с прогнозом исчерпания;
- автоматический отказ в создании новых агентов при приближении к пределу подписки, с жёстким пределом, который не снимается;
- временное снятие мягкого ограничения оператором на срок не более шести часов.
2.9. Память и знания проекта
- лексическая база знаний проекта в каталоге репозитория, оглавление которой платформа вставляет в системную подсказку агента;
- личная память агента, подключаемая к его подсказке;
- поиск по базе знаний, по личным заметкам и по журналам.
2.10. Расширение набора инструментов
- подключение внешних инструментов по протоколу Model Context Protocol как на уровне проекта, так и на уровне отдельного агента;
- запрет отдельных инструментов конкретному агенту, сохраняющийся при перезапуске.
2.11. Однократные параллельные сценарии
- описание сценария на языке Python с параллельным и конвейерным запуском одноразовых агентов, с ограничением числа вызовов, степени параллельности и бюджета;
- журнал прогона с возможностью продолжения после прерывания без повторного выполнения уже завершённых шагов.
3. Требования к системе
| Параметр | Значение |
|---|---|
| Тип программы | серверное приложение с веб-интерфейсом |
| Операционная система | Linux (проверено на Ubuntu 24.04 LTS и 26.04 LTS) |
| Среда исполнения | CPython версии 3.12 или новее |
| Дополнительно | Node.js версии 18 или новее — для внешних агентских клиентов командной строки |
| Хранилище данных | SQLite, файл в каталоге данных приложения |
| Минимальные ресурсы | 2 вычислительных ядра, 4 ГиБ оперативной памяти, 10 ГиБ дискового пространства |
| Рекомендуемые ресурсы | 8 вычислительных ядер, 16 ГиБ оперативной памяти, 100 ГиБ дискового пространства |
| Сетевые требования | исходящий доступ к выбранному поставщику языковых моделей |
4. Входные и выходные данные
Входные данные. Текст задания от оператора; голосовые сообщения, изображения и документы, поступающие из мессенджера; содержимое файлов рабочего репозитория; ответы внешних инструментов, подключённых по протоколу Model Context Protocol.
Выходные данные. Изменения в рабочем репозитории, оформленные коммитами и ветками; сообщения оператору и другим агентам; записи задач и их статусов; файлы-артефакты отчётов и вердиктов ревью; записи журнала работы и учёта израсходованных ресурсов.
5. Язык интерфейса
Графический пользовательский интерфейс программного обеспечения реализован на русском языке. Проверка 22.09.2026 охватила 41 экран; после исключения имён собственных, идентификаторов и путей, ответов моделей, служебных строк сервера и единиц измерения латинских надписей, требующих перевода, не обнаружено.
6. Ограничения
Программа не предназначена для обработки сведений, составляющих государственную тайну. Программа не относится к средствам защиты информации; защита конфиденциальной информации не является её основной функцией.
Инструкция по установке
Редакция от 24.09.2026
1. Требования к аппаратному и программному обеспечению
| Параметр | Минимально | Рекомендуется |
|---|---|---|
| Процессор | 2 ядра x86-64 | 8 ядер x86-64 |
| Оперативная память | 4 ГиБ | 16 ГиБ |
| Дисковое пространство | 10 ГиБ | 100 ГиБ |
| Операционная система | Linux с ядром 5.15 и новее | Ubuntu 24.04 LTS или 26.04 LTS |
| Интерпретатор | CPython 3.12 или новее | CPython 3.12 |
| Дополнительно | Node.js 18 или новее, Git 2.35 или новее | Node.js 20, Git 2.43 |
Установка производится от имени отдельной непривилегированной учётной записи операционной системы. Права суперпользователя нужны только для установки системных пакетов и для регистрации службы.
2. Состав поставляемого экземпляра
Экземпляр программного обеспечения представляет собой каталог с исходным текстом на языке Python и сопровождающими файлами:
| Каталог или файл | Назначение |
|---|---|
app/ |
исходный текст серверной части, включая веб-интерфейс |
scripts/ |
служебные сценарии обслуживания |
deploy/ |
файлы установки: сценарий установки, шаблон конфигурации веб-сервера, файл описания службы |
tests/ |
автоматические проверки |
pyproject.toml, uv.lock |
описание зависимостей и зафиксированные версии |
.env.example |
образец файла параметров запуска |
LICENSE, NOTICE |
условия использования |
Технические средства защиты авторских прав в экземпляре отсутствуют, лицензионные ключи не применяются, активация не требуется.
3. Установка на одном узле
3.1. Подготовка системы
sudo apt-get update
sudo apt-get install -y python3.12 python3.12-venv git nginx curl
curl -LsSf https://astral.sh/uv/install.sh | sh
uv — средство управления виртуальным окружением и зависимостями. Допускается любой иной
способ создания виртуального окружения, воспроизводящий состав uv.lock.
3.2. Размещение исходного текста
sudo useradd --system --create-home --shell /bin/bash orchestra
sudo mkdir -p /opt/orchestra
sudo chown orchestra:orchestra /opt/orchestra
sudo -u orchestra git clone <адрес репозитория> /opt/orchestra
Адрес репозитория выдаётся правообладателем. Для экспертной проверки он передаётся в составе заявления.
3.3. Установка зависимостей
cd /opt/orchestra
sudo -u orchestra uv sync --frozen
Флаг --frozen требует точного соответствия зафиксированным в uv.lock версиям. Установка
завершается созданием виртуального окружения /opt/orchestra/.venv.
3.4. Файл параметров
sudo -u orchestra cp .env.example .env
sudo -u orchestra chmod 600 .env
Обязательные к заполнению параметры:
| Параметр | Назначение |
|---|---|
DASHBOARD_USER, DASHBOARD_PASSWORD |
учётные данные входа в веб-интерфейс |
INTERNAL_TOKEN |
внутренний токен проверки обратных вызовов инструментов |
COOKIE_SECURE=1 |
признак работы за защищённым соединением |
Необязательные параметры (часовой пояс, символ валюты, пороги квот, путь к файлу базы
данных, подключение мессенджера) описаны комментариями в самом файле .env.example.
3.5. Первый запуск в тестовом режиме
cd /opt/orchestra
sudo -u orchestra .venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8888
Успешный запуск подтверждается строкой Started server process в выводе и ответом 200
на запрос страницы входа:
curl -sL -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8888/
База данных SQLite создаётся автоматически при первом запуске в каталоге data/.
3.6. Регистрация службы
sudo cp deploy/orchestra.service.template /etc/systemd/system/orchestra.service
sudo systemctl daemon-reload
sudo systemctl enable --now orchestra
sudo systemctl status orchestra
Служба запускается от имени учётной записи orchestra, рабочий каталог /opt/orchestra,
параметры читаются из /opt/orchestra/.env, перезапуск при сбое — автоматический.
3.7. Публикация через веб-сервер
Шаблон конфигурации — deploy/nginx.conf.template. Он проксирует запросы на
127.0.0.1:8888 и содержит параметры, необходимые для длительных соединений потока событий
(Server-Sent Events): proxy_buffering off, proxy_read_timeout 600s, proxy_http_version 1.1
и заголовки Upgrade/Connection. Предельный размер загружаемого файла — 50 МБ
(client_max_body_size 50M).
sudo cp deploy/nginx.conf.template /etc/nginx/sites-available/orchestra
sudo ln -s /etc/nginx/sites-available/orchestra /etc/nginx/sites-enabled/orchestra
sudo nginx -t && sudo systemctl reload nginx
3.8. Автоматизированная установка
Сценарий deploy/install.sh <учётная_запись>@<адрес> выполняет шаги 3.1–3.7 на удалённом
узле по протоколу SSH. Сценарий требует прав суперпользователя на целевом узле.
4. Подключение поставщика языковых моделей
Программа не содержит собственной языковой модели и обращается к внешнему поставщику. Поддерживаются два способа подключения:
- Через клиент командной строки поставщика. Клиент устанавливается отдельно средствами Node.js и настраивается по документации поставщика; Orchestra запускает его как внешний процесс.
- Напрямую по протоколу HTTP, совместимому со спецификацией OpenAI Chat Completions.
Адрес конечной точки задаётся параметром
OPENROUTER_BASE_URL, ключ доступа — параметромOPENROUTER_API_KEY. Этот способ позволяет подключить любого поставщика, реализующего указанную спецификацию, в том числе размещённого на территории Российской Федерации.
5. Проверка работоспособности после установки
| Проверка | Команда | Ожидаемый результат |
|---|---|---|
| Служба запущена | systemctl is-active orchestra |
active |
| Веб-интерфейс отвечает | curl -sL -o /dev/null -w '%{http_code}' http://127.0.0.1:8888/ |
200 |
| База данных создана | ls -l /opt/orchestra/data/orchestra.db |
файл существует |
| Автоматические проверки | uv run --frozen python -m pytest tests -q |
прогон завершается без ошибок сборки |
6. Обновление и удаление
Обновление: остановить службу, выполнить git pull и uv sync --frozen, запустить службу.
Файл .env и каталог data/ при обновлении не затрагиваются.
Удаление: остановить и отключить службу, удалить файл описания службы, удалить каталог
/opt/orchestra и учётную запись orchestra.
Руководство по эксплуатации
Редакция от 24.09.2026
1. Доступ к экземпляру, предоставленному для экспертной проверки
Экземпляр развёрнут на сервере правообладателя в Российской Федерации и доступен удалённо по HTTPS. Адрес экземпляра и учётные данные для входа передаются эксперту в составе заявления — в подписанном электронной подписью документе «Руководство по эксплуатации». Контакт по развёртыванию: maxim@seedon.ru, +7 929 356-16-50.
2. Запуск, работа и завершение программы
2.1. Запуск
Программа работает как служба операционной системы и запускается автоматически при старте узла. Ручное управление:
sudo systemctl start orchestra # запуск
sudo systemctl stop orchestra # завершение
sudo systemctl restart orchestra # перезапуск
sudo systemctl status orchestra # состояние
journalctl -u orchestra -n 200 # журнал работы
При запуске программа открывает базу данных, восстанавливает сохранённые сессии агентов и
начинает принимать подключения на локальном адресе 127.0.0.1:8888.
2.2. Вход в веб-интерфейс
Открыть адрес экземпляра в браузере и ввести учётные данные, заданные параметрами
DASHBOARD_USER и DASHBOARD_PASSWORD. Завершение сеанса — кнопкой выхода в шапке
интерфейса.
2.3. Основные операции оператора
| Операция | Последовательность действий |
|---|---|
| Создать оркестратора | В левой панели нажать кнопку создания оркестратора → указать имя, путь к каталогу проекта и модель → подтвердить создание |
| Поставить задачу | Выбрать агента в списке → ввести текст задания в поле сообщения → отправить |
| Посмотреть ход работы | Диалог агента обновляется в реальном времени; вызовы инструментов и их результаты отображаются в ленте |
| Остановить агента | Кнопка остановки над полем сообщения; рабочая копия и сессия сохраняются |
| Посмотреть файлы рабочей копии | Вкладка файлов агента; файл открывается на просмотр, доступна выгрузка |
| Посмотреть задачи | Вкладка задач: номер, название, статус, исполнитель, приоритет |
| Посмотреть фоновые задания | Вкладка заданий: тип, состояние, команда, вывод, отмена |
| Посмотреть расход ресурсов | Панель учёта: ходы, токены, расчётная стоимость по агентам и моделям, полосы квот поставщиков |
| Просмотреть системную подсказку агента | Кнопка просмотра системной подсказки в карточке агента |
2.4. Управление из мессенджера
При заданных параметрах подключения Telegram оператор управляет теми же агентами из мессенджера: текстовое сообщение передаётся агенту как задание, голосовое сообщение расшифровывается и передаётся текстом, изображения и документы передаются вложением. Ответы агентов и их отчёты приходят в отдельные темы группы.
2.5. Завершение работы
Корректное завершение — командой systemctl stop orchestra. Незавершённые ходы агентов
прерываются, состояние сессий сохраняется в базе данных, при следующем запуске агенты
восстанавливаются.
3. Формат команд оператора и ответы программы
Взаимодействие с агентом ведётся на естественном языке: оператор формулирует цель или задание обычным текстом, программа отвечает текстом, файлами, диаграммами и изменениями в рабочем репозитории. Формализованного командного языка нет.
Управляющие действия (создание агента, остановка, слияние ветки, закрытие задачи, отмена фонового задания) выполняются элементами графического интерфейса, перечисленными в пункте 2.3.
4. Хранение данных и резервное копирование
| Что | Где |
|---|---|
| База данных платформы | data/orchestra.db (SQLite) |
| Рабочие копии агентов | worktrees/<проект>/<агент> |
| Файлы параметров | .env в корне установки |
| Журнал работы | журнал systemd (journalctl -u orchestra) |
Резервная копия базы данных снимается средствами SQLite без остановки службы:
sqlite3 data/orchestra.db ".backup '/путь/к/резервной/копии.db'"
Копирование файла базы обычным cp при работающей службе не допускается: файл может быть
скопирован в несогласованном состоянии.
5. Типовые ситуации и действия оператора
| Ситуация | Признак | Действие |
|---|---|---|
| Служба не поднимается | systemctl is-active возвращает failed |
Посмотреть journalctl -u orchestra -n 200; наиболее частая причина — отсутствующий обязательный параметр в .env |
| Веб-интерфейс недоступен снаружи | curl на 127.0.0.1:8888 отвечает 200, а внешний адрес — нет |
Проверить конфигурацию веб-сервера и nginx -t |
| Агент не отвечает на сообщение | Состояние агента не меняется | Проверить фактический исход доставки по её идентификатору; при необходимости остановить и снова разбудить агента |
| Исчерпана квота поставщика | Отказ в создании новых агентов, полоса квоты у предела | Дождаться нового окна подписки либо подключить другого поставщика |
| Нехватка дискового пространства | Ошибки записи в журнале | Удалить рабочие копии завершённых агентов |
6. Ограничения эксплуатации
Программа не предназначена для обработки сведений, составляющих государственную тайну. Рабочая копия изолирует файлы, но не исполнение команд: агенту следует предоставлять отдельную учётную запись операционной системы с минимально необходимыми правами.
Подписанные документы
PDF с откреплённой электронной подписью генерального директора (PKCS#7, .sgn)
Руководство по эксплуатации в формате PDF содержит учётные данные проверочного экземпляра и передаётся только в составе заявления; его содержание, кроме учётных данных, приведено на этой странице выше.