Tools
Режим повышенных привилегий
Когда агент работает внутри песочницы, его команды exec ограничены средой песочницы. Режим повышенных привилегий позволяет агенту выйти из неё и выполнять команды за пределами песочницы с настраиваемыми условиями подтверждения.
Директивы
Управляйте режимом повышенных привилегий для каждого сеанса с помощью команд с косой чертой:
| Директива | Действие |
|---|---|
/elevated on |
Выполнять вне песочницы по настроенному пути хоста, сохраняя подтверждения |
/elevated ask |
То же, что on (псевдоним) |
/elevated full |
Выполнять вне песочницы по настроенному пути хоста и пропускать подтверждения, если политика подтверждения для режима/хоста уже разрешает это |
/elevated off |
Вернуться к выполнению, ограниченному песочницей |
Также доступно как /elev on|off|ask|full.
Отправьте /elevated без аргумента, чтобы увидеть текущий уровень.
Принцип работы
Проверьте доступность
Режим повышенных привилегий должен быть включён в конфигурации, а отправитель должен находиться в списке разрешённых:
{ tools: { elevated: { enabled: true, allowFrom: { discord: ["user-id-123"], whatsapp: ["+15555550123"], }, }, },}Установите уровень
Отправьте сообщение, содержащее только директиву, чтобы задать значение по умолчанию для сеанса:
/elevated fullИли используйте её прямо в сообщении (применяется только к этому сообщению):
/elevated on запусти скрипт развёртыванияКоманды выполняются вне песочницы
Когда режим повышенных привилегий активен, вызовы exec выполняются за пределами песочницы. По умолчанию фактическим хостом является
gateway, либо node, если настроенной или сеансовой целью exec является
node. В режиме full подтверждения exec пропускаются, если политика подтверждения для определённых режима и хоста
уже полностью разрешительная (безопасность full,
запрос off); в противном случае по-прежнему применяется обычная политика подтверждения. В режимах
on/ask настроенные правила подтверждения применяются всегда.
Порядок разрешения
- Встроенная директива в сообщении (применяется только к этому сообщению)
- Переопределение сеанса (задаётся отправкой сообщения, содержащего только директиву)
- Глобальное значение по умолчанию (
agents.defaults.elevatedDefaultв конфигурации)
Доступность и списки разрешённых
- Глобальное условие:
tools.elevated.enabled(должно бытьtrue) - Список разрешённых отправителей:
tools.elevated.allowFromсо списками для каждого канала - Условие для агента:
agents.list[].tools.elevated.enabled(может только дополнительно ограничивать; глобальное условие и условие для агента должны иметь значениеtrue) - Список разрешённых для агента:
agents.list[].tools.elevated.allowFrom(отправитель должен соответствовать как глобальному списку, так и списку для агента) - Резервный список разрешённых от канала: плагины каналов могут при необходимости предоставлять резервный список разрешённых через перехватчик адаптера SDK; он используется, когда
tools.elevated.allowFrom.<provider>не настроен. Сейчас ни один встроенный канал не реализует этот перехватчик, поэтому на практике каждому провайдеру требуется явная записьtools.elevated.allowFrom.<provider>. - Все условия должны быть выполнены; иначе режим повышенных привилегий считается недоступным
Форматы записей списка разрешённых:
| Префикс | Что сопоставляется |
|---|---|
| (нет) | Идентификатор отправителя, номер E.164 или поле From |
name: |
Отображаемое имя отправителя |
username: |
Имя пользователя отправителя |
tag: |
Тег отправителя |
id:, from:, e164: |
Явное указание идентичности |
Что не контролирует режим повышенных привилегий
- Политика инструментов: если
execзапрещён политикой инструментов, режим повышенных привилегий не может переопределить запрет. - Политика выбора хоста: режим повышенных привилегий не превращает
autoв свободное переопределение между хостами. Он использует настроенные или сеансовые правила цели exec, выбираяnode, только когда целью уже являетсяnode. - Отдельно от
/exec: директива/execнастраивает для авторизованных отправителей сеансовые значения exec по умолчанию (хост, безопасность, запрос, Node) и не требует режима повышенных привилегий.