Что такое субагенты в Claude Code
У нас есть такое понятие, как субагенты. Что это такое? Давайте разбираться.
Когда мы работаем с проектом, у нас, как правило, есть файл claude.md
, в котором мы даём общие инструкции о том, какой проект у нас должен использоваться и что он должен делать. Этот файл claude.md
отвечает за взаимодействие с основным агентом Claude Code, который будет обрабатывать наш проект.
Всё работает вроде бы нормально. Мы написали здесь какой-то промт, который будет обрабатывать основной агент. Но дело в том, что промт в файле claude.md
может очень сильно разрасться в размерах. А мы знаем, что чем больше информации приходит на вход нашего агента, тем хуже он отвечает, тем более он расфокусирован и не может понять, что ему конкретно нужно сделать.
Для того чтобы разгрузить этот контекст и чтобы для определённых типов задач ваш Claude Code был сфокусирован на конкретной проблеме или задаче, как раз и придуманы субагенты. По сути, субагент — это такой же промт, только который находится в специальной папке. В дальнейшем мы посмотрим, как ими пользоваться и как их создавать.
Сейчас важно понимать, что это отдельный промт. И очень важно понимать, что у субагента используется изолированный контекст. Если вы запустили какую-то задачу, она выполнялась, и потом запускается субагент внутри этого выполнения, то субагент не будет видеть то, что до этого выполнил основной агент. У него изолированный контекст. Он будет видеть только тот контекст, который вы ему предоставите.
Это может быть и хорошо, и плохо одновременно. Хорошо — субагент держит фокус и не отвлекается на детали. Плохо — он теряет контекст, который был до этого.
Ограничения и рекомендации по использованию
Исходя из изолированности контекста, у нас возникает ряд ограничений использования субагентов. Я бы не рекомендовал использовать субагенты, которые будут вызываться по ходу выполнения какого-то основного промта. Причина — потеря контекста.
Например, у вас есть проект с frontend-частью, и вы для неё создаёте frontend-субагента. С одной стороны, вроде бы всё хорошо. Но Claude Code не всегда будет определять, где находится frontend, а где backend. Он не всегда будет вызывать нужного субагента, потому что не понимает контекст. Этот frontend-субагент будет вызываться по ходу выполнения какой-то задачи, что не есть хорошо.
Мой опыт говорит о том, что использование субагентов, которые встраиваются в сложные задачи, — это плохой пример их использования.
Более хороший пример — субагенты, которые специализируются на узких задачах:
- Субагент, который проверяет безопасность вашего проекта
- Субагент, который парсит какой-то сайт
- Субагент, который пишет продающие тексты
Для таких задач вы создаёте промт с конкретными инструкциями и вызываете субагента вручную. Например, пишете: "Проверь с помощью такого-то субагента проект на безопасность", и он начинает проверять.
Таким образом, важно понять главное: субагенты — это отдельные подзадачи, которые разгружают наш основной контекст. Они позволяют нашей основной LLM-системе быть сфокусированной на решении конкретной задачи. Это позволяет решать узкие задачи намного более эффективно, чем если бы мы решали их с помощью основного промта, в котором находится много лишней информации.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти