Веб-консоль
Консоль — это то место, где Vrio настраивают. Всё, что не относится к самому диалогу с агентом, делается здесь: кто имеет доступ, какими моделями пользуется, к каким базам подключена служба, что происходило в системе.
Открывается по адресу службы с добавлением /console — например http://ваш-сервер:8765/console/.
Часть разделов платная — это отмечено ниже у каждого из них. Разделы отображаются в меню независимо от редакции; недоступные сообщают об ошибке при открытии, а полный перечень модулей с их состоянием приведён в разделе «Лицензия».
Каждое действие продублировано командой. Они приведены рядом с описанием, в таком виде:
docker compose exec agent python -m vrio_agent.admin.<модуль> <команда> [ключи]
Команды выполняются на сервере, из папки со службой. Это нужно, когда установку разворачивают по
письменной инструкции, воспроизводят на втором сервере или автоматизируют. Список ключей любой
команды покажет --help после её имени.
Сокращений вида
vrio-ib-adminне существует: модуль запускается только черезpython -m. Ограничения редакции действуют и в командной строке: она разрешает ровно то же, что консоль, и на возможность вне вашей лицензии отвечает отказом. Лицензию, введённую в консоли, она видит — отдельно прописывать ключ в.envне нужно.
Вход
Учётные записи консоли — отдельные от пользователей 1С. Это разные вещи: в 1С человек работает, в консоли администратор настраивает.
Первая учётная запись создаётся из командной строки на сервере (шаг 3 инструкции по установке), дальше администраторов можно заводить прямо в консоли.
Пароль хранится в виде хеша (argon2id) и обратно не читается. Забыли — можно только задать новый.
# создать первую учётную запись (пароль спросит интерактивно)
docker compose exec agent python -m vrio_agent.admin.user_admin create-admin --username admin
# задать новый пароль
docker compose exec agent python -m vrio_agent.admin.user_admin set-password --user admin
Пароль можно передать ключом
--password, но не следует: он останется в истории команд оболочки.
Разделы
Пользователи
Люди, которым разрешено разговаривать с агентом, и их настройки.

У каждого на карточке видно всё сразу: в каких он группах, какие модели ему назначены, какие MCP-серверы доступны и с какими базами 1С он связан. Оттуда же меняется пароль, выдаются и снимаются права администратора консоли, удаляется учётная запись.
Один человек — несколько баз
Одна служба Vrio работает сразу с несколькими базами 1С, и практическая польза от этого одна, но существенная: человек, работающий в двух базах, может спросить из одной про другую. Бухгалтер сидит в БГУ и спрашивает «сколько сотрудников числится в ЗКГУ» — агент выполняет запрос в ЗКГУ и отвечает в том же окне БГУ. Открывать вторую 1С и повторять вопрос не нужно.
Для 1С Иванов в БГУ и Иванов в ЗКГУ — две разные личности. Для Vrio они должны стать одним человеком. Делается это в карточке сотрудника, блок «Информационные базы»:

В блоке перечислены все личности, привязанные к этой учётной записи: префикс базы, логин в ней и
principal — постоянный идентификатор личности, который база присылает о себе сама. На снимке один
человек связан с двумя базами: bgu — бухгалтерия, zkgu — зарплата и кадры.
Как это работает. Каждая строка означает «в базе bgu этот человек — Иванова Мария Сергеевна».
Пока строка одна, агент работает только с этой базой. Как только строк становится две, у агента появляются
инструменты для обеих, и вопрос, заданный в одной базе, может быть выполнен в другой.
Права при этом не расширяются. Запрос во вторую базу выполняется от имени того же человека, каким он в ней заведён, и с его правами в ней. Если в ЗКГУ ему не видны зарплаты, то и через агента из БГУ они ему не будут видны. Меняется только одно — не нужно переключаться между окнами.
Выпадающий список внизу блока добавляет личность, кнопка «Отозвать» — убирает.
Личность принадлежит ровно одному человеку. Если выбрать в списке личность, уже привязанную к другой учётной записи, она не скопируется, а переедет сюда — у прежнего владельца пропадёт. Это же и штатный способ исправить ошибку, когда одного сотрудника по недосмотру завели дважды.
Возможность платная. В бесплатной редакции служба работает с одной базой.
После связывания перезапустите службу —
docker compose restart agent. Связывание не доходит до уже работающих сеансов: список баз человек получает в момент подключения, поэтому открытая 1С продолжает работать со старым списком, и агент отвечает, что второй базы у него нет. Перезапуск службы заставляет все 1С подключиться заново; связь они восстанавливают сами, до двух с половиной минут.
Сами кандидаты на доступ живут не здесь, а в разделе «Информационные базы» — там ростер, присланный базой. Присылается он не сам: администратор базы запускает в ней команду «Отправить реестр пользователей». Пока её не выполнили, ростер пуст.
# список учётных записей
docker compose exec agent python -m vrio_agent.admin.user_admin list
# завести пользователя, задать ему логин
docker compose exec agent python -m vrio_agent.admin.user_admin create --name "Иванов И.И."
docker compose exec agent python -m vrio_agent.admin.user_admin set-username --user <id> --username ivanov
# выдать и снять права администратора консоли
docker compose exec agent python -m vrio_agent.admin.user_admin set-admin --user <id> --on
docker compose exec agent python -m vrio_agent.admin.user_admin set-admin --user <id> --off
# запретить вход, не удаляя запись
docker compose exec agent python -m vrio_agent.admin.user_admin clear-password --user <id>
# удалить учётную запись со всеми её связями
docker compose exec agent python -m vrio_agent.admin.user_admin delete --user <id>
# связи человека с базами 1С
docker compose exec agent python -m vrio_agent.admin.ib_admin users
Везде, где нужен --user, принимается и идентификатор, и логин.
Группы
Объединения пользователей, позволяющие не выдавать доступы по одному. Модель или MCP-сервер выдаётся группе и появляется у всех, кто в неё входит.

Платный раздел.
docker compose exec agent python -m vrio_agent.admin.group_admin create --name "Бухгалтерия"
docker compose exec agent python -m vrio_agent.admin.group_admin list
docker compose exec agent python -m vrio_agent.admin.group_admin add-member --group <id> --user <id>
docker compose exec agent python -m vrio_agent.admin.group_admin remove-member --group <id> --user <id>
docker compose exec agent python -m vrio_agent.admin.group_admin members --group <id>
docker compose exec agent python -m vrio_agent.admin.group_admin delete --group <id>
Модели
Каталог языковых моделей: какая модель, у какого поставщика, по какому адресу, каким ключом.
Назначение раздела — в том, что у разных сотрудников могут быть разные модели: бухгалтеру назначается более быстрая и дешёвая, разработчику — более мощная. Модель назначается сотруднику или группе; у каждого есть модель по умолчанию.

Ключи поставщиков хранятся в базе зашифрованными. Ключ шифрования служба выпускает сама при
первом запуске и кладёт в папку secrets рядом с docker-compose.yml — отдельно от базы, так что
копия базы без этой папки бесполезна. Настраивать для этого ничего не нужно.
В карточке модели есть поле «размышления»: сколько модель думает перед каждым шагом ответа.
Варианты — «как у модели», «выключены», «мало», «средне», «много». Чем меньше размышлений, тем
быстрее ответ, а на сложных вопросах полные размышления дают более точный результат, поэтому по
умолчанию стоит «как у модели». Поле передаётся моделям, подключённым через routerai или OpenRouter.
В командной строке это флаг --reasoning у add-model: off, low, medium или high.
Платный раздел.
Откуда служба берёт модель: env и catalog
Настройка VRIO_MODEL_AUTHORITY в .env отвечает на один вопрос — откуда берётся модель. От неё
зависит, работает этот раздел вообще или нет.
env (по умолчанию) | catalog | |
|---|---|---|
| Откуда модель | VRIO_LLM_* в .env | из каталога, под каждого сотрудника |
| Одна на всех | да | нет |
| Раздел «Модели» | не читается вовсе | работает |
| Выбор модели в чате | не появляется | появляется, если назначено больше одной |
| Откуда ключ поставщика | из .env | из каталога, где хранится зашифрованным |
| Как сменить модель | правкой .env и перезапуском | в консоли |
Пока стоит
env, этот раздел декоративен. Модели можно завести и раздать людям — служба в каталог не заглянет. Ошибки не будет, просто ничего не произойдёт, и принять это за неполадку легко. Поэтому в таком режиме раздел показывает предупреждение прямо над списком моделей.
В режиме catalog модель выбирается на каждый вопрос, по порядку:
- та, что сотрудник выбрал в чате, — если она ему назначена;
- иначе его модель по умолчанию из каталога;
- иначе глобальная из
VRIO_LLM_*.
Третий пункт означает, что переключение никого не ломает: человек без назначенных моделей
продолжает работать на общей, как и раньше. Поэтому включать catalog можно до того, как раздали
модели.
Значение по умолчанию в самой службе — env, чтобы обновление не меняло поведение у тех, кто
каталогом не пользуется. В комплекте для установки в .env сразу вписан catalog: при новой
установке раздел работает, а те, кому модель не назначена, всё равно отвечают моделью из VRIO_LLM_*.
Вот что появляется у сотрудника, когда режим включён и моделей ему назначено несколько, — выбор внизу панели «Диалоги»:

Названия в списке задаёте вы: как назвали модель в каталоге, так сотрудник её и увидит. Его выбор действует до закрытия чата и не сохраняется — при следующем открытии вернётся та, что вы назначили по умолчанию.
Модель помощников
Длинную задачу из нескольких частей ассистент может разделить и поручить части помощникам: они
работают одновременно, каждый над своей частью, а ассистент собирает итог. Помощники работают на одной
модели для всей службы. По умолчанию это модель из VRIO_LLM_* в .env.
Другую модель для помощников выбирают в списке «Помощники» вверху раздела, из моделей каталога.
Выбор действует со следующего запроса, перезапуск не нужен. Модель, добавленную или включённую после
запуска службы, помощники получат после перезапуска, а до тех пор работают на модели из .env.
Сотрудник, которого лимиты перевели на запасную модель, остаётся на ней и в работе помощников.
Когда изменения доходят
Изменения применяются не мгновенно. Добавленная или удалённая модель подхватывается при перезапуске службы: пул соединений собирается при старте. Назначение модели человеку или группе доходит при следующем подключении его 1С — то есть после того, как он закроет и откроет 1С, либо после перезапуска службы.
docker compose exec agent python -m vrio_agent.admin.model_admin list-models
# добавить модель; --secret шифруется при записи и обратно не читается
docker compose exec agent python -m vrio_agent.admin.model_admin add-model \
--id fast --provider openai_compatible --model some-model-name \
--title "Быстрая" --base-url https://api.example.com/v1 --secret sk-...
docker compose exec agent python -m vrio_agent.admin.model_admin enable-model --id fast
docker compose exec agent python -m vrio_agent.admin.model_admin disable-model --id fast
# назначить человеку или группе, задать модель по умолчанию
docker compose exec agent python -m vrio_agent.admin.model_admin attach --user <id> --model fast
docker compose exec agent python -m vrio_agent.admin.model_admin attach --group <id> --model fast
docker compose exec agent python -m vrio_agent.admin.model_admin set-default --user <id> --model fast
docker compose exec agent python -m vrio_agent.admin.model_admin detach --user <id> --model fast
# что назначено человеку
docker compose exec agent python -m vrio_agent.admin.model_admin models --user <id>
docker compose exec agent python -m vrio_agent.admin.model_admin remove-model --id fast
MCP-серверы
Подключение сторонних инструментов по протоколу MCP: агент получает возможности, которых у него не было — своя база знаний, чужой API, что угодно совместимое.
Для каждого сервера задаётся политика: выполнять сразу или спрашивать подтверждение на каждый вызов. Доступ выдаётся человеку или группе, как и модели.

Платный раздел.
docker compose exec agent python -m vrio_agent.admin.mcp_admin list-servers
docker compose exec agent python -m vrio_agent.admin.mcp_admin add-server --name kb --url https://kb.example.com/mcp --transport http
docker compose exec agent python -m vrio_agent.admin.mcp_admin enable-server --name kb
docker compose exec agent python -m vrio_agent.admin.mcp_admin disable-server --name kb
# доступ человеку или группе
docker compose exec agent python -m vrio_agent.admin.mcp_admin grant --user <id> --server kb
docker compose exec agent python -m vrio_agent.admin.mcp_admin grant --group <id> --server kb
docker compose exec agent python -m vrio_agent.admin.mcp_admin revoke --user <id> --server kb
# кому выдан сервер и что выдано человеку
docker compose exec agent python -m vrio_agent.admin.mcp_admin users --server kb
docker compose exec agent python -m vrio_agent.admin.mcp_admin grants --user <id>
docker compose exec agent python -m vrio_agent.admin.mcp_admin remove-server --name kb
Форматы файлов
Какие файлы сотрудник вправе приложить к сообщению в чате. Список привязан к человеку, а не к базе целиком: бухгалтеру можно открыть таблицы, разработчику — ещё и исходные тексты.

Раздел бесплатный; назначение профиля группе — платное.
Что разрешено сразу после установки
Пока не создано ни одного профиля, действует базовый набор:
| Расширение | Что с ним делает агент |
|---|---|
pdf | извлекает текст; если текстового слоя нет — распознаёт |
png, jpg, jpeg | распознаёт текст на изображении |
xlsx, csv | читает как таблицу |
docx | читает текст и таблицы документа Word |
txt, md, html, xml | читает как текст |
Распознавание работает из коробки — движок и языковые пакеты (русский и английский) входят в образ службы. Отдельно устанавливать ничего не нужно.
Что можно открыть сверх этого
Служба умеет больше, чем разрешено по умолчанию. Профилем можно добавить:
| Группа | Расширения |
|---|---|
| Данные и разметка | json, yaml, yml, tsv, htm |
| Журналы и конфигурация | log, ini, conf, env |
| Исходные тексты | py, bsl, os, js, sql, css |
Шире этого списка не бывает. В форме профиля отмечаются только эти расширения — что служба читать не умеет, разрешённым не станет. Сужать можно как угодно, вплоть до запрета вложений вообще.
Исходные тексты и
env-файлы намеренно не входят в базовый набор — то есть пока администратор не включит их в чей-нибудь профиль, приложить такой файл не может никто. Открывать их стоит осознанно: агент читает содержимое приложенного файла и передаёт прочитанное языковой модели, а в таких файлах часто лежит то, чему там не место — пароли, ключи, строки подключения. Имя.envтоже попадает под это правило: расширение берётся после последней точки.
Профиль и порядок
Профиль — именованный набор расширений: «Только таблицы», «С исходниками», «Без вложений». Назначается сотруднику или целой группе — например «Бухгалтерия».
Что человеку разрешено, вычисляется по порядку:
- его собственный профиль, если назначен;
- иначе — профили его групп; если групп несколько, наборы складываются;
- иначе — профиль по умолчанию, если он выбран;
- если не задано ничего — базовый набор из первой таблицы.
Собственный профиль перекрывает группу, а не складывается с ней. Это и нужно, чтобы одному человеку из группы с широкими правами запретить вложения, не трогая остальных.
Пустой профиль — это не «всё разрешено», а «нельзя ничего». Чтобы, наоборот, снять ограничение, профиль у человека нужно очистить, а не опустошить.
Как настроить
- Новый профиль — задайте идентификатор латиницей, понятное название и отметьте форматы.
- Откройте карточку сотрудника («Пользователи») или группы («Группы») — внизу есть блок «Форматы файлов». Выберите профиль в списке и нажмите «Назначить».
- В карточке сотрудника видно две строки: «Можно прикладывать» — итоговый набор, и «Откуда» — какой профиль его дал: назначен лично, пришёл из группы или это профиль по умолчанию. Кнопка «Очистить» есть только у личного назначения — группа и профиль по умолчанию снимаются там, где заданы.
- «Сделать основным» в карточке профиля — он подействует на всех, у кого нет ни своего профиля, ни профиля группы.

Отмечать можно только то, что служба умеет читать, — список галочек и есть предел. «Название» видит человек, и его можно менять; «Идентификатор» потом не поменять — под ним профиль виден в командной строке, и на него ссылаются уже сделанные назначения.
docker compose exec agent python -m vrio_agent.admin.file_profile_admin list
docker compose exec agent python -m vrio_agent.admin.file_profile_admin formats
docker compose exec agent python -m vrio_agent.admin.file_profile_admin save \
--id office --title "Документы" --extensions "pdf, xlsx, csv"
# назначение человеку или группе
docker compose exec agent python -m vrio_agent.admin.file_profile_admin assign --user <id> --profile office
docker compose exec agent python -m vrio_agent.admin.file_profile_admin assign --group Бухгалтерия --profile office
docker compose exec agent python -m vrio_agent.admin.file_profile_admin unassign --user <id>
# профиль для всех, кому не назначено своё
docker compose exec agent python -m vrio_agent.admin.file_profile_admin set-default --id office
# что человек получит на самом деле
docker compose exec agent python -m vrio_agent.admin.file_profile_admin effective --user <id>
docker compose exec agent python -m vrio_agent.admin.file_profile_admin show --id office
docker compose exec agent python -m vrio_agent.admin.file_profile_admin remove --id office
Когда изменения доходят
Со следующего подключения 1С. Разрешённый набор вычисляется один раз — в момент, когда база устанавливает связь со службой, — и дальше сеанс работает с тем, что получил на входе.
Значит, после правки профиля сотрудник должен полностью закрыть и открыть 1С. Ни перезапуск службы, ни повторное открытие формы чата не помогут: связь установлена, набор уже передан.
Пределы, о которых стоит знать
| Что | Значение | Настройка |
|---|---|---|
| Размер одного файла | 25 МБ | VRIO_FILE_MAX_BYTES |
| Срок хранения файлов | пока существует чат | VRIO_FILE_TTL_S: 0 — пока жив чат, число — ещё и удалять файлы старше стольких секунд |
| Распознавание изображений | включено | VRIO_FILE_OCR_ENABLED |
Файл больше предела отклоняется до передачи — впустую канал не занимает. Файлы удаляются вместе
с чатом. Каталог vrio_files растёт, пока пользователи не удаляют чаты; если место на диске важнее,
задайте срок в VRIO_FILE_TTL_S — файлы старше него будут удаляться раз в час. Срок хранения касается
самого файла, а не ответа: разговор с уже полученным разбором остаётся в переписке.
Если не работает
| Что видно | Что проверить |
|---|---|
| «Формат не разрешён» на файле, который есть в базовом наборе | Кому-то назначен профиль, где этого расширения нет. Откройте карточку сотрудника — строка «Можно прикладывать» показывает итог, «Откуда» — где его менять |
| Открыли формат в профиле, а он всё равно не принимается | 1С не перезапускали после правки — набор передаётся при подключении. Либо расширения нет в перечне службы (вторая таблица) |
| Приложить нельзя ничего | Назначен пустой профиль — это запрет, а не сбой настройки. Чтобы снять его, профиль надо очистить, а не опустошить |
| Файл принят, но текста в нём агент не увидел | Скан плохого качества либо PDF без текстового слоя и с неразборчивым изображением. Попробуйте пересохранить или увеличить разрешение |
Информационные базы
Базы 1С, к которым подключена служба, и всё, что с ними связано.

Регистрация базы. Кнопка «Зарегистрировать базу» выдаёт одноразовый код, который администратор 1С вводит внутри своей базы. После этого база получает собственный секрет подписи и начинает подключаться к службе сама.
После ввода кода 1С нужно полностью перезапустить. Сеанс, открытый до регистрации, продолжает подключаться по старому и получает отказ, а после отказа перестаёт пытаться до конца сеанса.
Секрет никогда не передаётся руками — ни по почте, ни в мессенджере. По каналу связи ходит только короткоживущий код, а секрет база забирает сама и кладёт в свою константу.
# зарегистрировать базу — команда напечатает такой же одноразовый код
docker compose exec agent python -m vrio_agent.admin.ib_admin register --prefix buh --title "Бухгалтерия"
docker compose exec agent python -m vrio_agent.admin.ib_admin list
Префикс задаётся навсегда: строчные латинские буквы, цифры и _, до 16 символов.
Реестр пользователей базы. Внизу раздела — список людей, которых база предложила как кандидатов на
доступ. База отправляет его по команде, а не сама: в 1С, раздел «Vrio agent» →
«Отправить реестр пользователей». В реестр попадают только обладатели роли «Пользователь агента».
Пока команду не выполнили, список пуст, и связать человека с базой не с чем — а именно из этого списка
берутся principal для связывания.
Кнопки в строке базы:
| Кнопка | Что делает |
|---|---|
| Новый код | Ещё один код регистрации на тот же секрет. Безопасно нажимать в любой момент: база продолжает работать |
| Сменить секрет | Восстановление после утечки. Старый секрет умирает сразу, база отключается до ввода нового кода |
| Отключить | Аварийное отключение: база остаётся зарегистрированной, но агент из неё недоступен |
| Пересканировать | Перечитать состав конфигурации — справочники, документы, реквизиты |
| Персональные данные | Скрывать персональные данные этой базы от модели и добавить свои имена полей |
Разница между первыми двумя существенная. «Новый код» нужен, когда код протух или потерялся, а секрет в порядке. «Сменить секрет» — когда секрет утёк или вы этого не исключаете; она гарантированно отключит базу, пока администратор 1С не введёт новый код.
# «Новый код» и «Сменить секрет» — одна команда, разница в ключе
docker compose exec agent python -m vrio_agent.admin.ib_admin reissue --prefix buh
docker compose exec agent python -m vrio_agent.admin.ib_admin reissue --prefix buh --rotate-secret
# «Отключить» и обратно
docker compose exec agent python -m vrio_agent.admin.ib_admin disable --prefix buh
docker compose exec agent python -m vrio_agent.admin.ib_admin enable --prefix buh
Кнопке «Пересканировать» команды нет — сканирование запускается только из консоли.
Сканирование конфигурации. Служба хранит у себя состав вашей конфигурации, чтобы агент знал, какие объекты и поля существуют, ничего не выполняя для этого на вашем сервере. Снимок нужно обновлять после изменений в конфигурации — это и делает «Пересканировать». Для сканирования база должна быть на связи.
В снимок попадают и объекты расширений — всех, что включены и применены в базе. После установки или обновления расширения нажмите «Пересканировать». Раз в неделю служба сама проверяет, не изменился ли состав, но эта проверка замечает только новые объекты. Реквизит, который расширение добавило в уже существующий справочник или документ, агент без пересканирования не увидит.
Персональные данные. Флажок «Скрывать персональные данные от модели» включает для базы замену ФИО,
ИНН физлица, СНИЛС, паспорта, телефона, e-mail, адреса и даты рождения метками вида [[ФИО_1]] перед
отправкой в модель. Люди и 1С по-прежнему видят настоящие значения. Колонка «Персональные данные» в
таблице показывает, у каких баз скрытие включено. Настройка действует со следующего запроса, перезапуск не
нужен.

Встроенные имена полей и объектов показаны под полями ввода. Если в вашей конфигурации персональные
данные лежат в поле с другим именем, добавьте его строкой в «Дополнительные поля»; Телефон*
означает все имена, которые начинаются с «Телефон». Справочник, у которого наименование — это человек
(например, Справочник.Пациенты), добавьте в «Дополнительные объекты». Если агент работает с
несколькими базами, скрытие действует во всём диалоге, как только оно включено хотя бы для одной из
них. Что именно скрывается, — на странице Безопасность.
Расширение для 1С. Внизу раздела — карточка с файлом Vrio.cfe и кнопкой скачивания. Это та
копия расширения, которая соответствует работающей у вас службе: они версионируются вместе. Искать
письмо от поставщика не нужно.
Одна база бесплатно, несколько — платно.
Мессенджеры
Разговор с агентом из Telegram или MAX — для тех, кому неудобно открывать 1С ради вопроса.
Настраивается бот (токен от BotFather), затем каждому сотруднику выдаётся одноразовая ссылка-привязка: он отправляет её боту, и его чат связывается с его же учётной записью Vrio. Права при этом остаются теми же, что и в 1С — мессенджер это другой вход, а не другой доступ.

Платный раздел. Команд для него нет — настройка мессенджеров выполняется только в консоли. Как настроить бота и выдать сотруднику привязку — в разделе Telegram и MAX.
Память компании
То, что агенту нужно знать о вашей компании и чего он сам знать не может: ваши сокращения («ОС», «КП»), ваши названия («Центральный склад» — это «Склад №1 (Лесная, 12)» в базе), ваши правила («новых физлиц заводим в группу "Читатели"»). Запись делается один раз, а учитывать её агент будет у всех сотрудников: в 1С, Telegram и MAX.

Как агент этим пользуется. К каждому вопросу агент подбирает несколько записей, самых близких по смыслу, и учитывает их в ответе. Остальные записи в этот вопрос не попадают, поэтому длинный глоссарий не мешает. Если подобранного не хватило, агент может поискать в памяти компании сам.
Как писать записи.
- Одна запись — один термин или одно правило, до 1000 символов. Длинный текст разделите на несколько записей: консоль длиннее не примет.
- Синонимы и сокращения пишите прямо в тексте: «ОС, основные средства, основное средство — …». По ним агент и находит запись.
- Если новая запись почти повторяет старую, консоль покажет старую и спросит: сохранить обе или вернуться и поправить.
Кто пишет. Только администратор, в этом разделе. Агент записи читает, но не добавляет и не меняет. Личные просьбы «запомни» агент по-прежнему запоминает, но только для этого сотрудника.
Предложения сотрудников. Сотрудник может предложить запись прямо в разговоре: «запомни для всех: синие заявки — это заявки на кассовый расход». Агент покажет ему текст записи и после согласия отправит администратору. Агент может и сам предложить отправку, если сотрудник рассказал что-то, касающееся всей компании, но без согласия сотрудника не отправит.
Предложения появляются вверху раздела, в блоке «Предложения сотрудников», с именем сотрудника, базой (или ботом) и временем. Число ожидающих видно рядом с пунктом меню. Пока предложение не принято, агент его не использует. Для каждого:
- «Принять» — запись добавляется от вашего имени, с теми же проверками, что при ручном вводе;
- «Изменить», затем «Принять с правкой» — поправить текст перед добавлением;
- «Отклонить» — можно указать причину, она сохранится в журнале.
Агент не отправит предложение, если такая запись уже есть, если такое же предложение уже ждёт или если у сотрудника уже 20 предложений без ответа. Сотруднику о вашем решении пока не сообщается.
Запись может попасть к агенту по вопросу любого сотрудника. Не вносите сюда персональные данные и то, что знать положено не всем.
Загрузить из файла. Готовый глоссарий загружается кнопкой «Загрузить из файла»: таблица .xlsx или .csv в две колонки — термин и что он значит. Первую строку с заголовками можно оставить. Каждая строка станет отдельной записью. Строки, которые консоль не приняла (слишком длинные или похожие на уже внесённые), будут перечислены с номером и причиной: их можно поправить и загрузить ещё раз.
Столбец «Применялась». Сколько раз запись попала к агенту и когда последний раз. Вопрос, над которым агент работал в несколько шагов, считается одним разом. Запись, которая «ни разу» не применялась, агент не находит: допишите в неё слова, которыми сотрудники задают вопросы, или удалите её.
Отключить — запись остаётся в списке, но агент её не учитывает. Удобно, чтобы проверить, как агент отвечает без неё. Каждое изменение записывается в журнал аудита.
Платный раздел. На каждый вопрос приходится один поиск по смыслу, сколько бы записей ни было. Это отдельное обращение к модели эмбеддингов, оно стоит меньше копейки и учитывается в «Расходе» сотрудника.
Скиллы
Скилл — порядок действий, который агент записал из диалога, когда сотрудник попросил запомнить, как
была сделана задача. В нём шаги и рядом файлы: код 1С (.bsl) и запросы (.txt), которые сработали в
том диалоге. В следующий раз агент действует по скиллу, а код запускает как есть, подставляя данные
нового случая.

Личные и общие. Каждый скилл сначала личный: его видит и использует только автор, и только в той базе, где скилл записан. Общим скилл становится только через вас:
- сотрудник пишет агенту «отдай этот скилл всем», и скилл появляется вверху раздела, в блоке предложений, с именем автора, базой и временем. Число ожидающих видно рядом с пунктом меню;
- «Прочитать» показывает скилл целиком — шаги и каждый файл с кодом;
- «Принять» — скилл становится общим. Отметьте «для всех баз», если он подходит не только той базе, где записан;
- «Изменить», затем «Принять с правкой» — поправить шаги или код перед принятием;
- «Отклонить» — скилл остаётся у автора личным.
После принятия личная копия автора заменяется общей, чтобы у скилла была одна версия. Сотрудник может попросить изменить общий скилл, а агент сам предлагает такую правку, если по ходу работы нашёл исправление. Новая версия тоже придёт к вам и заменит старую только после принятия. У такого предложения вместо «Прочитать» кнопка «Что меняется»: предложенная версия рядом с действующей, удалённые строки красным, добавленные зелёным.
Над заявкой бывают два предупреждения:
- автор изменил скилл после заявки — при принятии общей станет версия из заявки, а более новая версия автора останется у него личной, а не удалится;
- общий скилл изменился после этой заявки — принятие откатит более новую правку; она видна красными строками в «Что меняется». Назвать личный скилл так же, как общий в той же базе, нельзя.
Общие скиллы. «Открыть» — правка описания, шагов и файлов, и переключатель «для всех баз». «Отключить» — агент перестаёт предлагать скилл, но он остаётся в списке. «Скачать» — папка скилла одним zip-архивом. «Вернуть прошлую версию» появляется, когда скилл хотя бы раз заменяли — вашей правкой или принятым изменением: она возвращает версию до замены, а текущая становится прошлой, так что возврат можно отменить. Хранится одна прошлая версия.
Код, который вы изменили в консоли, не выполнялся. Такой файл помечен в списке «изменён, ещё не выполнялся»; агент знает об этом, запускает его как обычно и скажет сотруднику, если скрипт не сработает. Пометка снимается после первого успешного запуска. Создать скилл с нуля в консоли нельзя: скилл записывается из диалога, в котором задача уже получилась.
Личные скиллы сотрудников. Их можно прочитать и удалить, но не править: они принадлежат авторам.
Столбец «Применялся». Сколько раз агент открывал скилл. Если скилл «ни разу» не применялся, агент не узнаёт его по описанию: поправьте фразу «когда применять».
Безопасность. Скилл — это текст и код для обычных инструментов агента. Подтверждение перед выполнением, безопасный режим, права пользователя в 1С и журнал аудита действуют как всегда, и скилл не может их отключить. Скрипты бывают только на языке 1С: никакой код вне 1С скилл не запускает. Каждое действие в разделе и каждое сохранение скилла агентом записываются в журнал аудита.
Скиллы хранятся обычными файлами в хранилище данных службы, в папке skills, и попадают в резервную
копию вместе с остальными данными. Платный раздел.
Расход
Сколько стоила работа агента для каждого сотрудника, за 1, 7, 30 или 90 дней: сумма в рублях и число обращений к модели. На один вопрос обычно приходится несколько обращений — агент работает по шагам.
Каждое обращение записывается на того, чей вопрос его вызвал. В счёт идёт всё, что агент сделал ради этого вопроса: ответы в диалоге, работа помощников, сжатие длинной истории и память агента, включая поиск по ней. Один человек — одна строка, даже если он работает в нескольких базах и в мессенджере. Тот, кто ещё не привязан к сотруднику консоли, показан под своим логином 1С.
Нажмите на строку, чтобы увидеть, на что ушли деньги и на какие модели, и сколько токенов каждая модель отправила и получила. Если провайдер не сообщает число токенов, служба считает их приблизительно по длине текста.

Цены
Рубли получаются из цен, которые вы задаёте в том же разделе, ниже отчёта: за миллион токенов на входе и за миллион на выходе.

- Облачная модель — впишите её настоящую цену у провайдера. Если провайдер берёт оплату в долларах, переведите по текущему курсу.
- Модель на вашем сервере своей цены не имеет. Назначьте такую, которая отражает, во что вам обходится её работа.
- Цена по умолчанию действует для любой модели без своей цены. Модели, которые служба берёт из
.env(основная модель и модель векторизации для памяти), тоже есть в списке, их можно оценить отдельно.
Пока цена по умолчанию не задана, вызовы моделей без своей цены в рубли не попадают, и раздел об этом предупреждает. Учёт от этого не прерывается: когда вы зададите цену, прошлые вызовы будут оценены по ней. Вызов, оценённый по собственной цене модели, при её изменении сохраняет прежнюю стоимость; вызовы без цены и по цене по умолчанию пересчитываются. Каждое изменение цены записывается в аудит.
Лимиты
Лимит — это сколько рублей сотрудник может потратить за пять часов и за неделю.

- Пять часов отсчитываются от первого вопроса сотрудника. Когда они истекут, следующий вопрос начнёт новое окно.
- Неделя сбрасывается в понедельник в 00:00 по поясу из
VRIO_USAGE_TIMEZONE(в наборе — московское время). День и час меняются настройкамиVRIO_USAGE_WEEK_START_DAYиVRIO_USAGE_WEEK_START_HOUR.
Лимиты задаются группам и, при необходимости, отдельным сотрудникам. Если сотрудник состоит в нескольких группах, действует самый щедрый из их лимитов. Личный лимит заменяет групповой. Пустое поле значит, что этот лимит не задан. У кого лимита нет нигде, тот не ограничен — как и учётная запись 1С, не привязанная к сотруднику консоли. Лимит 0 ₽ — полный запрет: сотрудник сразу получает отказ или, если назначена запасная модель, сразу работает на ней.
По умолчанию лимиты выключены: расход считается, но никого не ограничивает. Так можно сначала посмотреть реальные траты и только потом выбрать суммы. Включить лимиты можно, только задав цену по умолчанию, иначе модели без цены не тратили бы лимит вовсе.
Когда лимит исчерпан, агент не берётся за новый вопрос и пишет, когда снова будет доступен. Если лимит кончился посреди задачи, агент завершает текущий шаг, останавливается и сообщает то же самое; потом он не продолжит эту задачу сам. Результат фонового задания, начатого раньше, приходит в любом случае.
Вместо отказа группе или отдельному сотруднику можно назначить запасную модель — обычно более дешёвую. Тогда сотрудник с исчерпанным лимитом продолжает работать на ней, и агент один раз говорит об этом в чате. На ней же работают помощники агента. Расход на запасной модели учитывается в отчёте.
У запасной модели может быть свой лимит — сколько рублей сверх основного лимита сотрудник может потратить на ней за пять часов и за неделю. Он задаётся рядом с самой моделью. Когда и он исчерпан, агент отказывает так же, как без запасной модели, и пишет, когда снова будет доступен. Пустое поле — без ограничения: тогда выбирайте недорогую модель. В блоке «Сейчас» видно, сколько из этого лимита уже потрачено.
Запасная модель сотрудника вместе со своим лимитом заменяет групповую; «как в группе» — действуют модель и лимит его группы. Её можно задать и без личного лимита: тогда основная сумма берётся из группы. Если сотрудник состоит в нескольких группах с запасной моделью, действует модель группы, первой по алфавиту.
Запасная модель выбирается из моделей раздела «Модели» и работает, только когда модели назначаются
в консоли (VRIO_MODEL_AUTHORITY=catalog). Модель, добавленную или включённую после запуска службы,
служба увидит после перезапуска; до этого сотрудник с исчерпанным лимитом получает отказ. В обоих
случаях консоль предупреждает об этом прямо под выбранной моделью.
Что видит сотрудник. Рубли — никогда, только проценты. В чате 1С под полем ввода справа есть
значок-спидометр: он открывает панель с текущей сессией (5 часов) и текущей неделей — у каждой полоса,
процент израсходованного и время сброса. С 75 % рядом со значком появляется процент на жёлтом фоне,
с 90 % — на красном.
На 75 % и на 90 % агент один раз предупреждает об этом в чате. В Telegram и MAX те же предупреждения
приходят в бот, а команда /usage показывает ту же панель текстом.
В блоке «Сейчас» видно, сколько каждый потратил в текущих окнах и когда они сбросятся — по времени
службы (VRIO_USAGE_TIMEZONE), как это видят сотрудники. Там же можно
сбросить окна сотрудника — оба начнутся заново — или добавить рублей к текущему окну: добавка
действует, пока это окно не закончится. Включение лимитов, их изменение, сброс и добавка
записываются в аудит.
Записи о расходе старше 90 дней удаляются.
Платный раздел. Команд для него нет.
Аудит
Журнал: кто, что и когда. Каждая операция, выполненная агентом, каждое действие администратора.

Журнал защищён от подделки: записи сцеплены хешами, и изменить одну, не сломав цепочку, нельзя. Консоль показывает состояние цепочки. Если оно красное — значит либо файл правили, либо служба перезапускалась в момент записи; в обоих случаях старые записи остаются читаемыми, а честность цепочки восстанавливается только заменой журнала на новый.
Запись в журнал — условие выполнения. Если журнал недоступен для записи, команда агента не выполняется. Это осознанно: система, которая выполняет произвольные операции на рабочей базе, не должна уметь делать это молча.
Журнал — часть общей картины: что уходит наружу, где выполняются операции агента и что остаётся на вашем сервере, собрано в разделе Как устроена безопасность.
Диагностика
Проверка всего, от чего зависит агент: модели и их ключи, память, распознавание сканов, базы 1С, мессенджеры, MCP-серверы и сама служба. Доступна в любой редакции.
Кнопка «Проверить всё» не просто читает настройки, а обращается к каждому сервису по-настоящему:

| Что | Как проверяется |
|---|---|
| Модели | каждая включённая модель (из .env и из раздела «Модели») получает запрос в несколько токенов. Если не ответила, видно почему: неверный ключ, нет такой модели, кончились деньги, лимит запросов, нет связи или не дождались ответа |
| Память | две строки, «Память личная» и «Память компании»: включена ли каждая, а если нет, то почему (выключена в настройках, не входит в редакцию, не запустилась). Затем один запрос к эмбеддингам и сверка размерности векторов с настройкой. Расхождение молча портит память, поэтому это ошибка |
| Распознавание сканов | движок читает картинку с заранее известным текстом |
| Базы 1С | кто подключён прямо сейчас и не устарело ли расширение в базе |
| Мессенджеры | жив ли токен бота и доставляет ли провайдер сообщения именно в эту службу |
| MCP-серверы | подключение и число инструментов |
| Служба | работает ли ассистент, срок лицензии, запись в папку данных, целостность журнала аудита |
У каждой строки одно из четырёх состояний: работает, внимание (работает, но стоит взглянуть — например, модель отвечает дольше 10 секунд), не работает — с причиной и подсказкой, что сделать, и выключено — если функция выключена в настройках или не входит в лицензию.
Проверка запускается только кнопкой: каждая модель получает настоящий запрос, а это несколько токенов. Эти запросы не входят в лимиты сотрудников. Идёт она в самой службе и занимает до двух минут: страницу можно закрыть и вернуться позже, отчёт дождётся. Результат последней проверки хранится до перезапуска службы.
Модели и MCP-серверы проверяются в том виде, в каком служба прочитала их при запуске: правка в разделах «Модели» и «MCP-серверы» сохраняется сразу, а действовать начинает после перезапуска. Если с запуска что-то поменяли, в разделе появляется строка «Ждёт перезапуска» со списком изменённого, а строки под ней проверяют то, на чём сотрудники работают сейчас. Новый ключ проверится после перезапуска.
Устаревшее расширение консоль узнаёт по набору возможностей, которые оно сообщает при подключении.
Версию расширение не передаёт, поэтому выпуск, который не добавил новых возможностей, может выглядеть
актуальным. Сравнить точно можно по файлу: скачайте .cfe в разделе «Информационные базы».
Если консоль не открывается, ту же проверку можно запустить на сервере:
docker compose exec agent python -m vrio_agent.diagnostics.cli
Команда не видит подключённых баз и работающих ботов — это знает только запущенная служба, — поэтому эти
строки она помечает «смотрите консоль». Модели и MCP-серверы она проверяет по сохранённым настройкам,
то есть так, как служба будет работать после перезапуска. С ключом --json команда печатает отчёт
целиком, его удобно приложить к обращению в поддержку.
Лицензия
Что открыто в вашей установке и до какого числа.

Здесь же вводится лицензионный ключ — строка, которую выдаёт поставщик. Вставили, нажали «Активировать» — ключ проверяется сразу, и если он испорчен или чужой, вы узнаете об этом на месте.
Возможности включаются при запуске службы, поэтому после активации нужен перезапуск. До него консоль честно показывает, на чём служба работает сейчас, а не то, что даст новая лицензия.
Таблица внизу перечисляет все модули: что открыто, что нет и какой настройкой в .env каждый
включается.
Команды для установки лицензии нет. Без консоли ключ вписывается в .env:
VRIO_LICENSE_KEY=vrio-lic-v1....
docker compose restart agent
Ключ можно держать и отдельным файлом, указав путь в VRIO_LICENSE_FILE; при заполненных обеих
строках побеждает VRIO_LICENSE_KEY. Лицензия, установленная через консоль, хранится в базе службы
и имеет приоритет над .env — пока её оттуда не убрать, строка в файле ничего не изменит.
Какая редакция действует и почему, служба печатает в журнале при каждом запуске:
docker compose logs agent | grep license
Что настраивается не в консоли
Консоль — не единственное место настройки, и это стоит держать в голове: несколько вещей живут в самой 1С, потому что относятся к базе, а не к службе.
| Что | Где | Зачем это знать |
|---|---|---|
| Реестр пользователей базы | 1С: «Vrio agent» → «Отправить реестр пользователей» | Пока команду не выполнили, ростер в консоли пуст и связывать некого |
| Роли расширения | 1С: профиль групп доступа и Конфигуратор | Выданные только в одном месте роли не работают; порядок важен — сводка ролей и порядок выдачи в инструкции по установке |
| Регистрация базы | Код выдаёт консоль, вводят его в 1С: «Vrio agent» → «Зарегистрировать базу» | После ввода 1С нужно полностью перезапустить |
| Внешние токены | 1С: «Vrio agent» → «Выпустить внешний токен» | Отдают доступ к 1С сторонней программе — см. Доступ для других программ |
| Привязка мессенджера сотрудником | 1С: «Vrio agent» → «Привязать мессенджер» | Альтернатива выдаче токена из консоли — см. Telegram и MAX |
Типичные задачи
Дать доступ новому сотруднику. Информационные базы → таблица ростера внизу → «Разрешить» напротив нужной строки.
Если человека в ростере нет — либо ему не выдана роль «Пользователь агента» (в реестр попадают только её обладатели), либо реестр из базы не отправляли после того, как роль выдали. Отправляется он вручную: в 1С, раздел «Vrio agent» → «Отправить реестр пользователей». Заходил человек в 1С или нет, значения не имеет.
# посмотреть ростер и допустить человека из него
docker compose exec agent python -m vrio_agent.admin.ib_admin roster
docker compose exec agent python -m vrio_agent.admin.ib_admin map --ib <ib_id> --principal <uuid> --from-roster
# «Отозвать»
docker compose exec agent python -m vrio_agent.admin.ib_admin unmap --ib <ib_id> --principal <uuid>
Идентификаторы берутся из вывода roster. Без ключа --user создаётся новый пользователь Vrio.
Если человек у вас уже заведён — например, работает во второй базе, — укажите его явно, иначе один
сотрудник превратится в двух:
docker compose exec agent python -m vrio_agent.admin.ib_admin map --ib <ib_id> --principal <uuid> --user <существующий_id>
# перенести уже привязанную личность другому пользователю
docker compose exec agent python -m vrio_agent.admin.ib_admin relink --ib <ib_id> --principal <uuid> --user <id>
Подключить вторую базу. Требуется платная лицензия. Три шага, и перезапуск службы в конце обязателен:
- Информационные базы → «Зарегистрировать базу», код отдать администратору той базы. Он вводит его у себя и перезапускает свою 1С.
- Связать с ней людей — Пользователи → карточка человека → «Информационные базы». Выбирайте существующую учётную запись: если завести новую, один человек превратится в двух, с разной историей и разными настройками.
- Перезапустить службу —
docker compose restart agent.
Те же три шага командами:
docker compose exec agent python -m vrio_agent.admin.ib_admin register --prefix zkgu --title "ЗКГУ"
docker compose exec agent python -m vrio_agent.admin.ib_admin map --ib <ib_id> --principal <uuid> --user <существующий_id>
docker compose restart agent
Третий пункт закрывает сразу две вещи, и обе тихие. Умение работать с базой создаётся при запуске службы, поэтому базу, зарегистрированную на ходу, агент не видит вообще. А список доступных человеку баз собирается в момент подключения его 1С — перезапуск службы заставляет все 1С подключиться заново и получить новый список.
Связь восстанавливается сама, до двух с половиной минут; делать в 1С ничего не нужно. Если у кого-то одного вторая база так и не появилась — пусть полностью закроет и откроет 1С.
Условий на самом деле четыре, и все отказывают молча:
| Условие | Чем обеспечивается |
|---|---|
| База зарегистрирована и служба после этого перезапускалась | Шаги 1 и 3 |
| Обе личности связаны с одной учётной записью | Шаг 2 |
| 1С подключилась заново после связывания | Шаг 3 либо перезапуск 1С у сотрудника |
| Вторая база работает в момент вопроса | Если в ней нет ни одного открытого сеанса, выполнять запрос негде |
Пропущенное условие выглядит так же, как отсутствие прав: агент просто отвечает, что доступа ко второй базе у него нет. Отличить одно от другого по ответу нельзя — проверять приходится все четыре.
Как убедиться, что заработало. Задайте из первой базы вопрос, ответ на который есть только во второй, — «сколько сотрудников в ЗКГУ». Достовернее всего — журнал аудита: каждая выполненная команда записана там вместе с базой, в которой выполнялась. Вопрос, заданный в БГУ и отработавший в ЗКГУ, оставит в журнале запись со второй базой.