Перейти к основному содержимому

OpenShell лечит симптом: безопасности агентов нужны контракты, а не аварийные выключатели

Изоляция во время выполнения может остановить сбойного агента, но без заранее объявленного контракта разрешённых действий это ограничение ущерба, а не предотвращение.

Крупный план серверной стойки с подсвеченными светодиодными индикаторами и сетевыми кабелями, представляющий инфраструктуру времени выполнения для изоляции AI-агентов.

Что на самом деле обеспечивает OpenShell

Инструменты изоляции во время выполнения, такие как OpenShell от Nvidia, работают в определённой точке стека агента: ниже рассуждений модели и выше вызова инструмента. Они перехватывают момент, когда агент пытается вызвать инструмент, отправить сообщение или записать данные. На этой границе они могут проверить предлагаемое действие, сравнить его с набором правил и остановить выполнение. Это полезно. Но само по себе это неполно.

Слой перехвата видит действие, а не намерение. Когда агент выбирает инструмент и формирует аргументы, система изоляции получает структурированный запрос: имя инструмента, набор параметров, возможно, целевой адрес. Чего она не получает — так это рассуждений, породивших этот запрос, цели, которую преследует агент, или полномочий, в рамках которых он считает, что действует. Классификатор может оценить запрос на аномальность, но он не может знать, входило ли действие в компетенцию агента, потому что эта компетенция никогда не была объявлена.

Задержка обнаружения усугубляет проблему. Даже система изоляции, реагирующая за миллисекунды, реагирует после того, как агент уже выбрал курс действий. Модель сгенерировала токены, выбрала инструмент и построила аргументы. В многошаговой траектории это единственное действие может быть одним из десятков, и побочные эффекты предыдущих шагов могут быть уже необратимыми. Миллисекунды важны, но они не заменяют знание заранее того, что агенту было разрешено делать.

Практическое следствие: каждая остановка становится решением на усмотрение. Классификатор решает, подозрительно ли действие. Этот классификатор вероятностный, зависит от контекста и дорог в запуске на каждом шаге. Это не политика. Это вывод о намерении, и он будет давать как ложноположительные, так и ложноотрицательные срабатывания. При ложноотрицательном срабатывании действие продолжается. При ложноположительном блокируется законное действие и траектория агента нарушается. Ни один из исходов не определяется объявленной границей; оба определяются догадкой модели.

Контракт до запуска

Контракт меняет форму проблемы. До генерации первого токена агент должен объявить свою поверхность инструментов, свои назначения исходящего трафика и свой лимит расходов. Поверхность инструментов — это набор инструментов, которые агент может вызывать, с диапазонами параметров, которые он может использовать. Назначения исходящего трафика — это конечные точки, домены или очереди, в которые он может отправлять данные. Лимит расходов — это максимальное количество ресурса, будь то токены, вызовы API или валюта, которое может потребить запуск.

Hands holding Erlenmeyer flasks of blue liquid during a laboratory experiment

Это объявление не является инструкцией в промпте. Это машиночитаемый артефакт, который среда выполнения может проверить детерминированно. Когда принудительное исполнение в стиле OpenShell проверяет объявленную область, а не предполагаемое намерение, проверка становится сравнением множеств: входит ли этот инструмент в объявленную поверхность, входит ли это назначение в объявленный список исходящего трафика, укладываются ли эти расходы в объявленный лимит. Ответ — да или нет. Никакого классификатора, никакой задержки, никакого решения на усмотрение.

Контракты также композируются. Субагент должен наследовать суженный лимит от родителя, а не полную поверхность родителя. Если у родительского агента есть доступ к платёжному API и API обмена сообщениями, субагент, задача которого — составить сообщение, должен получить только инструмент обмена сообщениями, со списком назначений, ограниченным одобренными получателями родителя. Это не вывод во время выполнения; это структурное свойство определения агента. Субагент не может превысить свой лимит, потому что его лимит никогда не был предоставлен.

Именно этот механизм превращает изоляцию из инструмента восстановления в инструмент предотвращения. Среде выполнения не нужно угадывать, намеревался ли агент отправить данные на внешнюю конечную точку. Конечная точка либо есть в объявленном списке исходящего трафика, либо нет. Среде выполнения не нужно оценивать, аномальны ли расходы агента. Расходы либо укладываются в объявленный лимит, либо нет. Контракт делает принудительное исполнение детерминированным.

Почему аварийные выключатели — неправильный примитив

Аварийный выключатель — это механизм восстановления. Контракт — это механизм предотвращения. Поставка только первого перекладывает затраты на реагирование на инциденты. Агент работает, классификатор не улавливает проблемное действие, и аварийный выключатель завершает запуск. К этому моменту ущерб может быть уже нанесён.

Завершение запуска в середине траектории оставляет частичные побочные эффекты. Наполовину записанная запись в базе данных. Наполовину отправленное сообщение клиенту. Наполовину зафиксированная транзакция, оставляющая две системы в несогласованном состоянии. Аварийный выключатель останавливает агента, но не отменяет действия, которые агент уже совершил. Откат возможен в некоторых системах, но он дорог, подвержен ошибкам и часто неполон. Стоимость инцидента — это не стоимость аварийного выключателя; это стоимость очистки.

Изоляция должна быть крайней мерой после проверок области, бюджетов исходящего трафика и потолков возможностей. Проверка области не позволяет агенту вызвать инструмент за пределами объявленной поверхности. Бюджет исходящего трафика не позволяет ему отправить больше данных, чем объявлено. Потолок возможностей не позволяет ему повысить собственные разрешения или породить субагентов с более широким доступом. Всё это детерминировано, дёшево и исполняется на каждом шаге. Аварийный выключатель — это то, что остаётся, когда все они отказывают, и к нему следуClose-up of a server rack in a data center aisle with blue lighting Server rack closeup

Честный компромисс в том, что контракты требуют предварительной работы. Объявить поверхность инструментов, список исходящего трафика и лимит расходов для каждого агента — это больше усилий, чем развернуть монитор во время выполнения и надеяться, что классификатор поймает проблемы. Контракты также ограничивают гибкость агента. Агент, обнаруживший законную потребность в инструменте за пределами объявленной поверхности, не может просто использовать его; контракт должен быть изменён, что требует решения человека. Это особенность, а не ошибка, но это затрата. Альтернатива — система, где каждое действие является решением на усмотрение, а каждый инцидент — очисткой.

Практическое расслоение

Работоспособная архитектура безопасности агентов использует четыре слоя, каждый дешевле и детерминированнее предыдущего.

Слой первый — статическое объявление области на этапе определения агента. Поверхность инструментов агента, назначения исходящего трафика и лимит расходов записываются в его определение. Это конфигурационный артефакт, версионируемый вместе с кодом агента. Он проверяется и утверждается до запуска агента.

Слой второй — валидация на каждом шаге против объявленной области. Перед каждым вызовом инструмента среда выполнения проверяет предлагаемое действие против контракта. Эта проверка дешева и детерминирована: проверка принадлежности множеству, сравнение назначения, подсчёт расходов. Она не требует модели. Она не вносит задержку. Она либо проходит, либо не проходит, и неудача останавливает шаг до возникновения любого побочного эффекта.

Слой третий — обнаружение аномалий во время выполнения для выявления дрейфа. Здесь инструменты на основе классификаторов оправдывают своё место. Агент может оставаться в пределах объявленной области, ведя себя так, что это указывает на дрейф его цели или на манипуляцию его входными данными. Обнаружение аномалий может отметить эти паттерны для проверки. Оно вероятностно и дорого, поэтому работает параллельно с детерминированными проверками, а не заменяет их. Оно ловит то, что контракт не может выразить.

Слой четвёртый — изоляция и откат, применяемые только когда слои с первого по третий отказывают. Аварийный выключатель останавливает запуск. Откат пытается отменить побочные эффекты. Этот слой самый дорогой и наименее надёжный, поэтому он должен быть крайней мерой. Его существование необходимо, но его применение должно быть редким.

Аргумент не в том, что изоляция во время выполнения бесполезна. А в том, что изоляция без контракта — это изоляция без определения того, что именно изолируется. Аварийный выключатель останавливает агента, но не говорит агенту, что ему было позволено делать. Контракт говорит. Контракт — это предотвращение; аварийный выключатель — это восстановление. Поставка только восстановления — это выбор платить за инциденты, а не предотвращать их.

ПоделитьсяXLinkedInПостоянная ссылка6 мин чтения

Связанное чтение

На какие вопросы это отвечает

What is the difference between a kill switch and a contract for AI agents?

A kill switch is a recovery mechanism that terminates a run after a problem is detected. A contract is a prevention mechanism that declares, before the run, which tools, destinations and spend levels are permitted. The contract makes enforcement deterministic; the kill switch only limits damage after the fact.

Why can't runtime containment tools like OpenShell know an agent's intent?

Containment tools intercept the tool call, not the reasoning that produced it. They see a structured request but not the goal or authority behind it. Without a declared scope, every halt is a judgement call made by a classifier, which is probabilistic and introduces latency.

What are the four layers of a practical agent safety architecture?

Layer one: static scope declaration at agent definition time. Layer two: per-step validation against the declared scope, which is cheap and deterministic. Layer three: runtime anomaly detection for drift, where classifier-based tools are useful. Layer four: containment and rollback, invoked only when the earlier layers fail.

What is the main trade-off of using contracts for agent safety?

Contracts require upfront work to declare a tool surface, egress destinations and spend envelope for every agent. They also constrain flexibility, because an agent that needs a tool outside its declared surface requires a human decision to amend the contract. The alternative is a system where every action is a judgement call.