Обязательное одобрение рискованных действий
Некоторые вызовы инструментов не должны происходить без согласия человека — отправка почты, публикация в канал, изменения с реальными последствиями. Обязательное одобрение ставит человека в цикл перед запуском таких инструментов и сочетается с идемпотентными побочными эффектами, чтобы одобрение восстановленной обработки не запускало одно и то же действие дважды.
Тариф: обязательное одобрение — возможность платного тарифа, а не бесплатная/общеплатформенная.
| Возможность | Тариф |
|---|---|
| Обязательное одобрение действий | Enterprise-grade (Business+/Enterprise) |
Как работает обязательное одобрение
Вы объявляете, какие инструменты требуют одобрения, настройкой
AIHUMMER_APPROVAL_TOOLS — это список имён инструментов. Когда агент решает
вызвать один из них, выполнение приостанавливается и поднимается запрос на
одобрение для рассмотрения человеком.
# ~/.aihummer/etc/gateway.env
# Список инструментов через запятую, требующих одобрения перед выполнением
AIHUMMER_APPROVAL_TOOLS=mail,http_request
Ожидающий запрос появляется в веб-интерфейсе и admin API
(/v1/admin/approvals), где проверяющий видит инструмент, его аргументы и
контекст, после чего одобряет или отклоняет его.
Одобрить — выполнить; отклонить — не выполнять
Проверка однозначна:
- Одобрить — инструмент выполняется ровно с теми аргументами, которые были рассмотрены.
- Отклонить — инструмент не выполняется. Нет частичного или отложенного выполнения; отклонённый вызов просто не происходит, и обработка продолжается без этого побочного эффекта.
[!NOTE] Отклонение — это жёсткая остановка для этого конкретного вызова. Агент не повторяет отклонённое действие без нового запроса на одобрение.
Почему это безопасно при восстановлении
Обязательные одобрения сочетаются с идемпотентными побочными эффектами AiHummer. Обработка может быть прервана (рестарт, сбой), а затем восстановлена. Без защиты восстановленная обработка могла бы повторно выполнить уже произошедшее действие — отправить то же письмо дважды, опубликовать то же сообщение снова.
AiHummer предотвращает это с помощью стабильного ключа в ledger, сохраняющегося при возобновлении, и барьера побочных эффектов: каждый побочный эффект записывается под стабильным ключом, а барьер отказывается повторно выполнять эффект, который в ledger уже отмечен как выполненный.
[!TIP] Практический итог: одобрение восстановленной обработки не запускает повторно почту или отправку в канал. Барьер не повторяет действие, уже отмеченное в ledger как выполненное. Для внешних систем сохраняйте идемпотентный ключ на случай потери подтверждения.
Полную механику ledger и барьера побочных эффектов см. в Multitenancy и идемпотентность.
Для каких инструментов требовать одобрение
Требуйте одобрение для инструментов, эффекты которых видны извне или трудно отменимы. Хорошие кандидаты:
mail— исходящая почта.- Отправка в канал / исходящая доставка клиентам или сотрудникам.
http_requestи другие инструменты, способные менять внешние системы.code_execна общих хостах (там он к тому же выключен по умолчанию).
Инструменты только на чтение (поиск, обращение к знаниям, время), как правило, в обязательном одобрении не нуждаются. Сочетайте одобрения с изолированным режимом и контролем исходящих подключений для инструментов, выходящих в публичный интернет.
Куда дальше
- Multitenancy и идемпотентность — ledger и барьер побочных эффектов, защищающие от повторного выполнения.
- Правила безопасности и защита от инъекций — не дать модели быть направленной на вредоносный вызов инструмента под одобрением.
- Сеть, аудит и изолированный режим — ограничьте то, чего могут достичь инструменты.