18+
реклама
18+
Бургер менюБургер меню

Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 60)

18

Поэтому проектирование набора инструментов — это проектирование не удобства, а поверхности действий роли. Каждый добавленный инструмент расширяет и полезный репертуар, и поверхность отказа, и поверхность атаки. Минимизация набора до фактически нужного — это та же дисциплина least privilege (см. главу 88), только применённая к репертуару, а не к правам.

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

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

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

Цена этой жёсткости — то, что права ничего не знают о смысле задачи. Они не отличают полезное действие от вредного, они отличают разрешённое от запрещённого. Слишком узкие права превращают агента в постоянно спотыкающегося исполнителя: он пытается сделать нужное, упирается в отказ, не понимает причину (потому что причина — снаружи его модели мира) и либо зацикливается на обходе, либо отдаёт неполный результат. Слишком широкие права сводят весь рычаг на нет. Искусство — в подгонке прав под фактический контракт роли (см. главу 18), а не под гипотетический «вдруг понадобится».

У прав есть ещё одно отличие от двух других рычагов, важное для эксплуатации: их нарушение оставляет след вне агента. Отказ в доступе фиксируется инфраструктурой — в журнале файловой системы, в логе API, в записи о заблокированном сетевом соединении. Это даёт наблюдаемость, которой нет у мягких границ: попытку нарушить жёсткую границу видно независимо от того, что агент написал в своём рассуждении и отчёте. Нарушение мягкой границы, напротив, фиксируется только если кто-то отдельно следит за поведением агента и способен распознать отклонение по смыслу. Поэтому жёсткие границы не только сильнее принуждают, но и лучше наблюдаемы — два свойства, которые на практике почти всегда нужны вместе (см. главу 89).

Три рычага удобно представить как три последовательных фильтра между намерением агента и его эффектом на систему.

Рычаг | Слой | Что задаёт | Механизм | Сила границы | Где живёт

Промпт | Намерение | Смысл задачи, стиль, поведение при неоднозначности | Инструкция, которой модель склонна следовать | Мягкая (вероятностная) | Внутри контекста агента

Инструменты | Репертуар | Множество возможных внешних действий | Состав доступных вызовов, задаётся извне | Полужёсткая (ограничивает класс) | На границе агент—среда

Права | Эффект | Область действия каждого инструмента | Инфраструктурное принуждение | Жёсткая (гарантия) | Вне агента, в инфраструктуре

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

Граница роли — это любое ограничение на её поведение. Граница мягкая, если её соблюдение зависит от решения агента; жёсткая, если соблюдение принуждается механизмом вне агента. Различие не в важности ограничения и не в том, как строго оно сформулировано, а исключительно в том, что произойдёт, если агент попытается его нарушить. Мягкую границу агент может перейти, и система об этом узнает только постфактум, если вообще узнает. Жёсткую границу агент перейти не может: попытка завершается отказом на уровне инфраструктуры.

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

Не всякую границу можно сделать жёсткой. Жёсткий механизм принуждения работает с категориями, которые инфраструктура способна различить до или в момент действия, не понимая его смысла: путь файла, адрес сети, имя таблицы, тип операции, размер запроса, частота вызовов. Всё это проверяемо машиной без интерпретации намерения. Граница «не писать вне каталога X» — жёсткая, потому что путь известен в момент записи. Граница «лимит в N вызовов инструмента за сессию» — жёсткая, потому что счётчик ведётся снаружи.

Семантические границы жёсткими быть не могут, потому что требуют понимания смысла, а смысл доступен только модели — то есть тому самому компоненту, чьё поведение мы и пытаемся ограничить. «Не давать юридических советов», «не раскрывать конфиденциальные данные в ответе», «изменять только то, что относится к задаче», «не превышать полномочия роли по существу» — всё это границы по смыслу. Их нельзя проверить файловым разрешением. Их можно только либо возложить на промпт (мягко), либо аппроксимировать жёсткой границей-прокси, либо вынести на отдельного агента-надзирателя, чьё суждение становится новым проверяемым артефактом (см. главу 65 о взаимном ревью и главу 89 об аудите как защите).

Отсюда практический принцип: семантику задаёт промпт, инвариант защищают права, а зазор между ними закрывают прокси-границами и надзором. Граница «не раскрывать секреты» (семантическая, мягкая) подкрепляется жёсткой прокси-границей «нет инструмента чтения хранилища секретов» и «эгресс только к доверенным адресам». Прокси не покрывает семантику полностью — агент всё ещё может пересказать секрет, попавший в его контекст иным путём, — но он снимает целые классы реализации угрозы и оставляет промпту меньшую, более выполнимую долю.

Граница роли держится настолько, насколько её удерживает самый слабый из задействованных механизмов. Это прямое следствие того, что рычаги действуют последовательно: намерение проходит сквозь все три слоя, и достаточно одного проницаемого слоя, чтобы граница протекла. Если ограничение «агент-ревьюер не изменяет код» возложено только на промпт, то жёсткость прав на запись не имеет значения — ревьюеру эти права и не выданы, но если их по недосмотру выдали «на всякий случай», мягкая граница промпта остаётся единственной, и она протекает при первой же инъекции или ошибке.

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

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