Files
ai_orchestrator/docs/architecture/03_no_hardcoded_bans.md
T
2026-07-03 20:51:36 +03:00

1.9 KiB

Принцип: нет жестких запретов в коде

Требование

В проекте не должно быть hardcoded-запретов вида:

if tool == "command.run": deny
if sql contains "DELETE": deny
if action == "filesystem": deny

Так делать нельзя.

Правильный подход

Код должен классифицировать действие и спросить policy engine.

action → classify → policy.check → decision

Policy decision:

{
  "decision": "allow | confirm | manual | disabled_by_config",
  "reason": "string",
  "requires_confirmation": true,
  "preview": {}
}

Пример

Команда:

file.write D:/Projects/test.txt

Tool возвращает metadata:

{
  "risk_level": "write",
  "resource": "filesystem",
  "preview_available": true
}

Policy проекта:

{
  "filesystem": {
    "mode": "confirm"
  }
}

Результат:

Нужно подтверждение.

Если policy:

{
  "filesystem": {
    "mode": "full_auto"
  }
}

Результат:

Выполнить сразу.

Режимы

full_auto — выполнять без подтверждения
confirm — спросить подтверждение
manual — показать план и ждать ручного запуска
disabled — отключено настройкой

disabled допустим только как настройка проекта, а не как зашитый запрет.

Зачем

Пользователь сам выбирает уровень риска.

Система не должна становиться бесполезной из-за того, что разработчик заранее запретил все потенциально опасные действия.