Архитектура безопасной делегации: как Tenuo, Jev и LangGraph разделяют решения и полномочия
Hacker News · оригинал
Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Команда разработчиков представила open-source агента safe-upgrade для автоматизации обновления зависимостей, который использует принцип разделения суждений, потока управления и авторизации. Система применяет модель Jev для принятия типизированных решений, LangGraph для управления состоянием и Tenuo для выдачи ограниченных по времени и scope-у полномочий каждому рабочему процессу.
Данный подход демонстрирует практическую реализацию принципа наименьших привилегий в агентных системах, что критически важно для безопасного внедрения ИИ-агентов в CI/CD пайплайны и корпоративные инфраструктурные процессы.
Автоматизация обновления зависимостей в репозиториях часто маскирует сложные проблемы совместимости: успешная установка пакета и прохождение тестов не гарантируют, что приложение работает корректно после изменения версий. Разработчики из Tenuo создали safe-upgrade — агента, который решает эту задачу путем строгого разделения трех компонентов: принятия решений, управления потоком выполнения и предоставления полномочий. Такой подход позволяет агенту интерпретировать семантические вопросы релизов, изменять код и верифицировать результаты, не нарушая принципы безопасности.
В основе решения лежит модель Jev, описываемая как «System One Model» для решений внутри программного обеспечения. В отличие от стандартных правил, Jev обрабатывает контекст репозитория и возвращает типизированное решение с распределением вероятностей и уровнем уверенности. Например, при выборе следующего шага обновления система получает список допустимых действий, рассчитанных детерминированным кодом, и Jev выбирает наиболее полезный вариант. Если уверенность модели низкая или ответ невалиден, workflow переходит на детерминированный маршрут, что обеспечивает устойчивость системы к ошибкам ИИ.
После принятия решения возникает вопрос о том, какие именно полномочия необходимы для выполнения задачи. Здесь вступает в действие Tenuo, который предоставляет каждому рабочему процессу (worker) ограниченный по времени и scope-у «warrant» (полномочие). Например, агент, создающий тесты, получает доступ только к чтению репозитория и записи файлов тестов, тогда как агент, реализующий изменения, имеет право на запись исходного кода, но не может трогать тесты. Tenuo гарантирует, что полномочия ребенка (child session) всегда уже, чем у родителя, и не могут быть делегированы дальше.
LangGraph выступает в роли хранилища состояния, сохраняя факты о репозитории, принятые решения и доказательства выполнения на всех этапах. Это позволяет отслеживать прогресс и связывать каждое действие с конкретным коммитом, манифестом и состоянием рабочей директории. Такая архитектура обеспечивает прозрачность: каждое решение привязано к контексту, а каждое действие — к строго определенному набору разрешений.
Особое значение этот подход приобретает в среде CI/CD, где агенты работают без присмотра. В GitHub Actions права на уровне workflow ограничивают общий доступ (например, чтение контента и запись pull request), но не определяют, почему именно этот запуск может изменить конкретный пакет или ветку. Tenuo добавляет второй уровень контроля: полномочия привязываются к конкретной задаче, включая допустимые инструменты, аргументы, пути и версии пакетов. Это создает двойную защиту: идентификация workflow и авторизация задачи.
Разработчики подчеркивают, что «безопасность» в данном контексте определяется проверяемыми свойствами: закрытые решения, ограниченное выполнение, разделение обязанностей и независимые доказательства. Даже если модель Jev ошибается в интерпретации релиза или политика доверенных обвязок содержит дефекты, ограниченность полномочий и независимая верификация ограничивают масштаб потенциального ущерба. Этот паттерн может быть применен не только к обновлению зависимостей, но и к другим задачам, где требуется баланс между гибкостью ИИ-агентов и строгим контролем доступа.