Инструменты, MCP и субагенты: порядок выбора
Тема 3/4: Архитектура агента → Урок 2/5
Продолжаем разбирать на учебном примере агента StockPilot — систему управления складскими запасами. В прошлом уроке бизнес-логику вынесли из длинного системного промпта в навыки. Теперь очередь инструментов: у агента их было двенадцать, включая три обёртки над субагентами. В этом уроке — порядок выбора инструментов: сначала простые примитивы вроде выполнения кода и файловой системы, затем собственные инструменты и только в особых случаях MCP-сервер. Разберём два случая, когда субагент действительно нужен, и посмотрим на итоговую архитектуру, которая в этом примере подняла результат evals с 62% примерно до 92%.
В прошлом уроке мы разгрузили системный промпт агента StockPilot: бизнес-логику вынесли в навыки, и промпт сократился с четырёхсот строк примерно до пятидесяти, а к финальной версии архитектуры — до пятнадцати. Но у агента осталась вторая проблема — двенадцать инструментов, три из которых были обёртками над субагентами. Инструмент был создан буквально на всё: отдельный, чтобы получить данные, отдельный, чтобы их проанализировать. В этом уроке разберём, в каком порядке стоит выбирать инструменты для агентов и что этот порядок дал в примере StockPilot.
Начинайте с человеческих примитивов
Правило простое: строить агента на тех же примитивах, которыми пользуется человек на работе. Представьте себя за рабочим компьютером: вы перемещаетесь по файлам, ищете в интернете, а если вы инженер — пишете и запускаете код. Claude Code устроен именно так: Claude, по сути, дали доступ к компьютеру. Базовые примитивы — выполнение кода, работа с файловой системой, список задач и веб-поиск. С них начинают всегда: ненужные убирают (например, веб-поиск, если агенту он не требуется), а собственные инструменты добавляют только тогда, когда без них не обойтись. У подхода есть и дальний прицел: с выходом новых моделей инструменты остаются теми же, а модель пользуется ими лучше — агент улучшается без переделки.
Показательный пример — анализ документов. Если агенту нужно разобрать CSV-файл, можно загрузить весь файл в контекстное окно, а можно дать инструмент bash: Claude напишет короткий скрипт на Python, запустит его по файлу и будет рассуждать уже над результатами. Второй путь заметно экономнее, потому что агенту не приходится держать все данные в контексте.
В StockPilot большинство инструментов заменили на три примитива: bash, чтение и запись файлов. В Claude Managed Agents (CMA) — управляемой платформе агентов Anthropic, сейчас в бете, доступ по запросу — эти инструменты доступны по умолчанию, писать их самостоятельно не нужно. Результат виден в цифрах: раньше на одну задачу уходило больше 200 000 токенов, после перехода на примитивы расход резко упал, а вместе с ним снизились стоимость и время выполнения.
MCP — не в первую очередь
Про MCP спрашивают чаще всего, и ответ такой: многие берутся за MCP сразу, а потом оказываются в окружении из множества серверов с пересекающимися возможностями, и это создаёт проблемы. Порядок выбора другой. Сначала — примитивы Claude Code: выполнение кода, файловая система, веб-поиск. Затем — собственные локальные инструменты, которыми пользуется только ваш агент. И лишь когда общий стандартизованный набор инструментов нужен нескольким клиентам — например, нескольким агентам или нескольким установкам Claude Code, — этот набор собирают и публикуют как MCP-сервер.
У MCP есть и техническая цена: он может засорять контекстное окно и занимает в нём много места. Всё более распространённая альтернатива — выполнение кода: дать Claude возможность вызывать программы командной строки и обращаться к API кодом. Агент получает ту же гибкость без MCP.
Субагенты: два случая, когда они нужны
Субагенты по-настоящему полезны в двух ситуациях. Первая — распараллелить работу, «бросить много Claude на задачу»: глубокое исследование, веб-поиск, обход большой кодовой базы. Несколько экземпляров работают над одной задачей одновременно, и она решается быстрее.
Вторая — свежий взгляд. Разработчику не стоит самому проверять собственный код, и с агентами так же: один экземпляр Claude пишет код, а другой проверяет его, не имея контекста автора. Отдельный проверяющий без чужого контекста оценивает работу непредвзято.
В StockPilot по этим критериям остался только один субагент — прогнозист. Прогноз спроса намеренно держат в изоляции: ничто из контекстного окна основного агента не должно искажать расчёт. У прогнозиста есть собственный навык с пошаговой процедурой построения прогноза. Остальных субагентов убрали и заменили примитивами. Важное наблюдение: передовые модели стали достаточно умны, чтобы вести много информации в одном контексте, поэтому возможности всё чаще возвращают основному оркестратору и обходятся меньшим числом субагентов.
Управляемые субагенты в CMA
Раньше субагенты StockPilot были выставлены как инструменты: оркестратор вызывал инструмент-обёртку, а та запускала субагента. У такой схемы две типичные проблемы. Первая — связь: как в разговоре двух коллег, между оркестратором и субагентом часть смысла теряется при передаче; именно из-за такого сбоя в передаче данных падал один из тестов агента. Вторая — логирование: собирать транскрипты с нескольких работающих агентов трудно. В Claude Managed Agents для этого есть встроенная возможность запускать управляемые субагенты, по которым в данных сессии видны метрики и ход работы с той же точностью, что и по основному оркестратору.
Архитектура «после» и результат
Итоговая архитектура выглядит так. Оркестратор развёрнут на Claude Managed Agents — инфраструктурой, масштабированием и безопасностью занимается платформа. Инструментов три: bash, чтение и запись файлов. Перед началом работы нужные данные синхронизируются в среду CMA, чтобы агент рассуждал над ними через код. Системный промпт — пятнадцать строк; вся бизнес-логика упакована в навыки и подтягивается в контекст по мере надобности. Прогноз строит отдельный управляемый субагент.
Результат на оценочном наборе в этом примере — около 92% против 62% в начале разбора. Агент стал быстрее и тратит меньше токенов, потому что опирается на выполнение кода.
Три принципа на выходе
Подведём итог тремя принципами. Первый: начинайте с одиночной агентной петли, оснащённой простыми человеческими примитивами — файловая система, веб-поиск, выполнение кода, иногда список задач, — и стройте дальше от неё. Второй: используйте прогрессивное раскрытие через навыки — в системном промпте держите только то, что нужно Claude всегда, остальное он подтянет сам. Третий: держите evals в актуальном состоянии. Порядок работы простой: зафиксировали базовый уровень, изменили архитектуру, перезапустили оценки — и так до тех пор, пока агент не делает именно то, что вы задумали. По мере роста возможностей агента оценочный набор должен расти вместе с ним.