Почему ваш AI-агент с 50 навыками стал тупить — и как это починить
Есть неочевидный момент в разработке агентов, о котором мало говорят: чем больше навыков у агента, тем хуже он выбирает нужный.
Звучит контринтуитивно. Мы привыкли думать, что чем больше инструментов — тем мощнее система. На практике всё наоборот: агент с 50+ навыками начинает путать инструменты, вызывать не те функции и выдавать абсурдные результаты. Не потому что он «сломался», а потому что утонул в выборе.
Механика проблемы
Когда LLM получает запрос, она одновременно видит описания всех доступных инструментов. При 10 навыках — это 10 коротких описаний, различия очевидны. При 50 — это стена текста с неизбежными семантическими пересечениями.
«Поиск по документации», «поиск по базе знаний», «RAG-запрос», «извлечение из файлов» — для модели эти штуки различаются слабо. Она начинает гадать. А каждая ошибка на этапе выбора инструмента порождает цепочку ошибок дальше.
Решение: router skill
Router skill — промежуточный слой, который не делает работу сам, а только маршрутизирует. Его единственная задача — понять, к какому домену относится запрос, и передать его нужной группе навыков.
Вместо выбора из 50 инструментов модель выбирает из 5-6 категорий. Внутри каждой — 8-12 инструментов. Задача из невозможной становится тривиальной.
Три подхода к реализации:
**LLM-based.** Отдельный вызов модели: «Вот категории, вот запрос, выбери». Гибко, но +1 inference-шаг по latency.
**Intent-based.** Лёгкий классификатор (embedding similarity или fine-tuned модель) определяет intent и маршрутизирует по таблице. Быстрее, но менее гибко.
**Иерархический.** Навыки группируются в дерево: домен → поддомен → инструмент. Лучше масштабируется для 100+ навыков.
Когда пора внедрять
Эмпирический сигнал: если при добавлении нового навыка старые начинают вызываться реже или ошибочно — router уже нужен. Обычно это 20-30 навыков для плохо структурированных библиотек, 40-60 для хорошо описанных.
Ещё один маркер: вы тратите больше времени на переписывание описаний существующих навыков, чем на создание новых. Это костыль, который router заменяет архитектурным решением.
Главное правило
Описания категорий для router-а должны быть взаимоисключающими. Если навык может попасть в две категории — router будет ошибаться так же, как модель без router-а. Потратьте время на чёткие границы.
Router skill — не фича конкретного фреймворка. Это паттерн, который работает в LangChain, CrewAI, AutoGen, самописных системах. Суть одна: не заставляйте одну модель выбирать из бесконечного списка.
Кто уже столкнулся с деградацией при росте библиотеки навыков? Как решали?