Роли и контракты инструментов
Одинаковая инструкция, разная роль источника
Среда агента выбирает не только то, что видит модель. Она также выбирает роль источника, через который поступает этот текст.
Возьмём одну инструкцию:
Всегда возвращай JSON с полями
сводка,risksиnext_action.
Слова во всех случаях одинаковы. Роль источника меняет то, как модель должна к ним относиться.
Механика агентов
Одни и те же слова действуют по-разному в зависимости от роли источника
Это поведение — не случайный эффект форматирования. Диалоговые модели обучают использовать роли сообщений как часть входных данных. При настройке следования инструкциям и обучении безопасности примеры учат модель тому, что системный текст и текст разработчика должны ограничивать разговор, текст пользователя — выражать активный запрос, а текст инструмента или наблюдения — рассматриваться как свидетельства из окружающей среды.
Именно это обучение объясняет, почему одна фраза может предсказывать разные продолжения. В роли с высоким приоритетом она действует как постоянное правило. В текущем пользовательском запросе — как предпочтение для задачи. В наблюдении, файле, веб-странице или выводе команды — как данные для интерпретации, а не команда к исполнению.
В терминах безопасности эта идея называется иерархией инструкций: при конфликте модель должна предпочитать источник с более высоким приоритетом и игнорировать попытки источников с низким приоритетом его переопределить. OpenAI формализует это в цепочке команд Model Spec и описывает соответствующее обучение моделей в The Instruction Hierarchy и Проверка иерархии инструкций. Исследовательская статья The Instruction Hierarchy рассматривает это как защиту от внедрения промптов; Изучение разделения ролей исследует, почему моделям нужны явные сигналы ролей вместо косвенных упрощений.
Для проектирования агентов рабочее правило простое: роли сообщений — не метаданные вокруг промпта. Это часть промпта, которую модель обучена интерпретировать.
Интеграция: CLI по умолчанию, MCP там, где окупается структура
Проектирование интерфейса инструментов — решение о бюджете контекста. Каждая схема инструмента, которую модель должна держать в памяти, конкурирует с инструкциями, свидетельствами и рассуждениями. Описание навыка CLI занимает примерно 50–100 токенов. Схема инструмента MCP — примерно 500–3600 и более токенов. С каждым инструментом разница накапливается.
Команды CLI также опираются на обучающие данные модели (git, curl, jq, rg, конвейеры), компонуются операторами оболочки без протокольных накладных расходов и выдают текст, который модель читает напрямую, — ценой неоднозначности разбора.
Поколение CLI, оптимизированных для агентов
Волна CLI 2026 года специально разработана для использования агентами и сокращает компромисс между эффективностью и структурированностью:
| Область | Инструмент | Чем помогает агентам |
|---|---|---|
| Браузер | Playwright CLI | Навык на 68 токенов, расход в 4,6 раза меньше, чем у MCP (25 тысяч против 115 тысяч за сессию). Состояние на диске (снимки YAML), компактные ссылки на элементы (e21), постоянный демон. |
| Браузер | agent-browser (Vercel) | Снимки дерева доступности примерно на 200–400 токенов (в 15 раз меньше DOM). Адресация по ссылкам (@e1), задержка прогретого демона около 1 мс, границы безопасности. |
| Контроль версий | GitHub CLI (gh) | Флаг --json у большинства команд для структурированного вывода. gh api предоставляет доступ к любому эндпоинту GitHub с JSON-ответами. Охватывает PR, задачи, репозитории, Actions, релизы — полный рабочий процесс разработчика, нужный агентам. Без Docker и зависимости от облака; вся настройка — gh auth login. |
| База данных | Supabase CLI | Одной командой запускает полный локальный стек Postgres (supabase start): базу, аутентификацию, хранилище, realtime и edge-функции — всё в Docker с выводом --json. Агенты получают одноразовую песочницу базы данных, похожую на продакшен, для миграций схемы, проверки запросов и начального наполнения. Без зависимости от облака; настройка ограничивается supabase init. |
Общий принцип: структурированный вывод, внешнее хранение состояния, минимальные затраты контекста — и всё это без формального протокола.
Когда MCP по-прежнему имеет смысл
Структурные гарантии MCP оправдывают стоимость, когда проблема действительно структурная, а не случайная: удалённые сервисы с OAuth, регулируемый доступ с журналом аудита, динамические экосистемы инструментов, которым нужно обнаружение во время выполнения, или сервисы, у которых вообще нет CLI. Для локальных рабочих процессов разработчика CLI, оптимизированный под агентов, обеспечивает сопоставимую структуру при гораздо меньших затратах контекста.
Правило выбора: по умолчанию используй CLI; переходи к MCP, только когда задача требует гарантий на уровне протокола.
Роли и контракты инструментов описывают, как собирается один вызов модели. Следующий вопрос — кто решает, каким должен быть следующий вызов.