/
Вопросы и ответы
/
AI-агенты
/

Что такое саб-агенты и как их использовать?

Что такое саб-агенты и как их использовать?

11 часов назад

Никита Вихров

Ответы

0

Что такое sub-agents и как их использовать

Sub-agent — это агент, которого запускает другой агент. Главный агент (оркестратор) получает задачу, разбивает её и делегирует части специализированным sub-agents. Каждый sub-agent решает свою подзадачу и возвращает результат оркестратору.

Это не просто архитектурный паттерн. Это способ обойти два главных ограничения одного агента: контекстное окно и качество специализированных задач.


Когда один агент не справляется

Представь задачу: проверить кодовую базу из 50 файлов, найти баги, проблемы с безопасностью и устаревшие зависимости. Один агент либо упрётся в лимит контекста, либо будет делать всё посредственно.

Sub-agents решают это разделением труда:

from anthropic import Anthropic
import concurrent.futures

client = Anthropic()

def run_sub_agent(role: str, task: str) -> str:
    """Запускает специализированного агента с конкретной ролью"""
    response = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=2048,
        system=role,
        messages=[{"role": "user", "content": task}]
    )
    return response.content[0].text


# Специализированные роли
ROLES = {
    "security": """Ты — security engineer.
Ищешь уязвимости: SQL injection, XSS, хранение секретов в коде,
небезопасная десериализация, отсутствие валидации входных данных.
Указывай файл, строку и конкретную угрозу.""",

    "bugs": """Ты — senior разработчик, специализируешься на поиске багов.
Ищешь: необработанные исключения, состояния гонки, утечки памяти,
неправильную работу с null/None, логические ошибки.
Будь конкретен: файл, строка, почему это баг.""",

    "dependencies": """Ты — DevOps-инженер.
Анализируешь зависимости проекта: устаревшие пакеты, известные уязвимости,
несовместимые версии, неиспользуемые зависимости.
Приоритизируй по критичности."""
}


def audit_codebase(code_summary: str) -> dict:
    """Запускает трёх sub-agents параллельно"""

    tasks = {
        role: f"Проверь этот код:\n\n{code_summary}"
        for role in ROLES
    }

    results = {}
    with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
        futures = {
            executor.submit(run_sub_agent, ROLES[role], task): role
            for role, task in tasks.items()
        }
        for future in concurrent.futures.as_completed(futures):
            role = futures[future]
            results[role] = future.result()

    return results


# Оркестратор собирает финальный отчёт
def orchestrate(code_summary: str) -> str:
    print("Запускаю аудит...")
    audit_results = audit_codebase(code_summary)

    summary_task = f"""
Собери результаты аудита кода в единый отчёт.

Безопасность:
{audit_results['security']}

Баги:
{audit_results['bugs']}

Зависимости:
{audit_results['dependencies']}

Формат отчёта:
1. Критичные проблемы (нужно исправить срочно)
2. Важные замечания (исправить до релиза)
3. Рекомендации (можно отложить)
"""

    return run_sub_agent(
        "Ты — технический менеджер. Пишешь чёткие, actionable отчёты.",
        summary_task
    )

Паттерн проверки: агент + критик

Самый простой вариант sub-agents — два агента в связке. Один генерирует, другой проверяет:

def write_with_review(task: str) -> str:
    # Sub-agent 1: пишет код
    code = run_sub_agent(
        "Ты — разработчик. Пишешь чистый, рабочий код с тестами.",
        task
    )

    # Sub-agent 2: проверяет
    review = run_sub_agent(
        "Ты — строгий code reviewer. Ищи баги, edge cases, проблемы с безопасностью. Если всё хорошо — скажи об этом явно.",
        f"Проверь этот код:\n{code}"
    )

    # Если reviewer нашёл проблемы — исправляем
    if "проблем" in review.lower() or "баг" in review.lower():
        return run_sub_agent(
            "Ты — разработчик. Исправляй только то, на что указали в ревью.",
            f"Исходный код:\n{code}\n\nЗамечания ревьюера:\n{review}\n\nИсправь код."
        )

    return code

Главное правило

Sub-agents увеличивают сложность системы. Больше агентов — больше API-вызовов, больше расходов, сложнее отладка. Добавляй sub-agent только когда одного агента реально не хватает: упёрся в контекст, нужна специализация или параллельность.


Sub-agents, оркестрация, управление контекстом — это то, что разбирают на курсе «ИИ для разработчиков» на Хекслете. Не в теории — на живом проекте: fullstack-приложение от проектирования до деплоя, весь код через агентов.

11 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845