Хватит называть скрипты агентами — что на самом деле умеют автономные ИИ-системы

2026-09-02 16:16:10 Время чтения 12 мин 77

За последний год слово "агент" превратилось в главный маркетинговый мусор индустрии. На него клеят всё подряд: обычные Telegram-боты с системным промптом, примитивные сценарии автоматизации на Make и n8n, стандартные векторные поисковики и банальные скрипты на тридцать строк кода.

Когда очередной стартап продаёт вам "революционного автономного агента", внутри почти всегда обнаруживается один-единственный вызов API языковой модели с длинной портянкой инструкций.

И вот стоит убрать маркетинговую шелуху, и выясняется простая вещь. Агент - это не новое цифровое сознание. Это строгий инженерный паттерн управления состоянием и вызовами функций через вероятностную модель.

Я разрабатывал и пускал в прод агентные системы разного масштаба - от узких парсеров до сложных кодогенераторов с внешними песочницами. Давайте разберём по косточкам, из чего на самом деле собран рабочий агент, чем он фундаментально отличается от любого другого софта и почему в девяти случаях из десяти такие системы ломаются на реальных бизнес-задачах.

От линейного скрипта к стейт-машине

Чтобы раз и навсегда провести границу, разложим существующие ИИ-архитектуры по степени их реальной автономии. В индустрии сегодня сосуществуют четыре принципиально разных уровня.

Первый уровень - классический чат-бот. Вы отправляете запрос, модель генерирует ответ в один проход, выполнение завершается. У системы нет памяти между сессиями, нет рук во внешнем мире и нет механизма перепроверить себя.

Второй уровень - маршрутизатор (Router) и статические цепочки (Prompt Chaining). Входной запрос попадает в модель, которая определяет категорию задачи и дёргает одну из заранее зашитых веток кода. Логика переходов детерминирована: граф выполнения намертво зафиксирован программистом в коде. Модель здесь работает как продвинутый парсер строк, но не принимает решений о маршруте.

Третий уровень - классический RAG (Retrieval-Augmented Generation). Перед отправкой запроса в нейросеть сторонний сервис ищет похожие куски текста в векторной базе данных и подсовывает их модели в контекст. Конструкция остаётся строго одношаговой: найти чанки, отдать в модель, получить ответ.

Настоящий автономный агент начинается на четвёртом уровне.

Агент - это динамическая конечная машина состояний (State Machine), замкнутая в цикл обратной связи ReAct (Reasoning + Acting).

Вы передаёте агенту не пошаговый алгоритм, а конечное условие готовности (Definition of Done), контекст среды и набор доступных инструментов. Дальше система сама крутится в цикле: анализирует состояние, планирует шаг, вызывает конкретную функцию, получает сырой ответ операционной системы, оценивает результат и решает, что делать дальше - завершить работу или исправить ошибку и пойти на следующую итерацию.

Анатомия рабочего агента

Если заглянуть в исходный код надёжного агента, никакой магии там нет. Архитектурно система всегда собирается из четырёх изолированных компонентов.

1. Ядро рассуждений и планирования (Reasoning Core)

В роли процессора выступает языковая модель достаточной мощности. Её задача - разложить абстрактную цель на дерево промежуточных гипотез.

На каждой итерации ReAct-цикла модель ведёт рабочий черновик (Scratchpad): сначала генерирует скрытые рассуждения (Thought), затем выбирает действие (Action) с параметрами и останавливает генерацию до получения ответа от среды (Observation).

2. Интерфейс инструментов (Tool Calling и протокол MCP)

Модель сама по себе не умеет ходить в сеть, править файлы или запускать тесты. Она оперирует только текстом.

Инструмент - это обычная функция на Python, Go или TypeScript, контракт которой описан для нейросети через стандарт JSON Schema. В описании функции строго фиксируются типы аргументов, их назначение и ограничения. Когда модель решает применить инструмент, она генерирует валидный JSON с аргументами вызова.

Сегодня индустриальным стандартом для подключения инструментов становится протокол Model Context Protocol (MCP). Он позволяет связать модель с базой данных, терминалом, файловой системой или внешними API через единый клиент-серверный протокол.

При этом сам вызов инструмента физически исполняется оркестратором в изолированной песочнице - в контейнере Docker или виртуальной машине gVisor, чтобы исключить случайное выполнение разрушительных команд на боевом сервере.

3. Трёхуровневая память

Рабочий агент не может полагаться только на базовое окно контекста. Память делится на три изолированных слоя:

  1. Оперативный контекст (Working Context): Текущее окно токенов, куда помещаются системные инструкции, история шагов текущей сессии и выводы последних вызовов инструментов.
  2. Эпизодическая память (Episodic Memory): Внешнее хранилище выполненных ранее задач. Если агент сталкивается с похожей проблемой, векторный поиск подтягивает успешную последовательность действий из прошлого опыта.
  3. Семантическое состояние (State & Artifacts): Структурированное состояние задачи в виде JSON-файла, базы данных или созданных файлов в рабочей директории, доступное между перезапусками.

4. Контур валидации и самокоррекции (Self-Healing Loop)

Главный признак настоящего агента - способность самостоятельно выживать при ошибках.

Когда сгенерированный агентом скрипт падает с синтаксической ошибкой или API возвращает неверный код ответа, среда не останавливает работу. Агент получает в контекст полный текст ошибки (Traceback), анализирует причину сбоя, переписывает код или меняет аргументы функции и повторяет попытку. Без этого циклического механизма любая система остаётся хрупким скриптом, падающим от первого чиха.

Математика деградации

На презентациях агенты выглядят всемогущими. На практике при попытке доверить агенту цепочку длиннее пяти-семи действий большинство систем захлёбываются.

Причины этого провала упираются в фундаментальную математику и физику контекста.

Проблема перемножения вероятностей (Compound Error)

Пусть на каждом отдельном шаге флагманская модель выбирает правильный инструмент, генерирует валидные аргументы и верно интерпретирует ответ с точностью 92%. Для одного действия это отличная надежность.

Но итоговая вероятность успешного завершения задачи из десяти шагов рассчитывается простым перемножением: 0.92 в десятой степени даёт всего 43.4%. Для цепочки из пятнадцати шагов вероятность падает до 28.6%.

В семи случаях из десяти агент на каком-то этапе сгенерирует галлюцинацию. А поскольку каждый следующий шаг опирается на состояние среды, изменённое предыдущим шагом, мелкая ошибка на третьем шаге намертво заводит систему в тупик на седьмом.

Размытие внимания и деградация контекста (Context Rot)

С каждой итерацией ReAct-цикла размер контекста раздувается. Туда набиваются логи выполнения, дампы ответов API, промежуточные рассуждения и тексты ошибок.

Когда объём контекста переваливает за 40-50 тысяч токенов, неизбежно проявляется эффект потери фокуса (Lost in the Middle). Модель начинает игнорировать системные инструкции, забывает первоначальные ограничения задачи и начинает галлюцинировать аргументами функций.

Экономика бесконечных циклов

Если агент попадает в состояние, где инструмент возвращает неожиданный ответ, модель часто входит в раж циклической самокоррекции. Она начинает бесконечно перебирать один и тот же неработающий паттерн под разными углами.

За 15 итераций с раздутым контекстом агент сжигает миллионы токенов за пару минут. Стоимость одного бесполезного прогона на тяжелых моделях вроде Claude 3.5 Sonnet или GPT-4o легко доходит до 5-10 долларов, а результат на выходе равен нулю.

Мультиагентные системы - разделение труда или сжигание токенов

Популярный сегодня хайп - мультиагентные ансамбли (CrewAI, AutoGen), где разные модели играют роли "менеджера", "разработчика" и "тестировщика".

В теории это звучит красиво: агенты спорят, ревьюят код друг друга и приходят к идеальному решению.

В реальности неконтролируемый обмен сообщениями на естественном языке между несколькими агентами приводит к мгновенному взрыву контекста. Вместо решения задачи система тратит 80% токенов на взаимные политесы и быстро сваливается в тупик несогласованности.

Рабочие мультиагентные архитектуры строятся иначе:

  1. Никакого свободного чата между агентами на естественном языке. Обмен идёт строго через типизированные схемы данных.
  2. Один ведущий агент-оркестратор декомпозирует задачу и запускает изолированных рабочих воркеров.
  3. Воркер ничего не знает об остальных агентах. Он получает узкую подзадачу, выполняет её в песочнице, отдаёт структурированный артефакт и немедленно уничтожается, очищая контекст.

Где агенты реально работают, а где остаются иллюзией

Агентный паттерн блестяще показывает себя только там, где соблюдены три условия: среда изолирована, действия обратимы, а результат каждого шага можно верифицировать объективным тестом.

Первая ниша - программная инженерия и автоматический рефакторинг. Здесь есть объективный арбитр в виде компилятора, линтера и набора unit-тестов. Агент меняет код, запускает тесты, видит красный отчёт об ошибке, переписывает реализацию и повторяет прогон до тех пор, пока тесты не станут зелёными. Модель не может обмануть компилятор галлюцинацией.

Вторая ниша - динамический сбор и нормализация данных. Когда парсер натыкается на изменившуюся верстку страницы, агентный контур анализирует дерево DOM, переписывает селекторы на лету, достаёт данные и валидирует их соответствие жесткой схеме данных.

Третья ниша - глубокие исследовательские цепочки (Deep Research). Агент формирует поисковые запросы, выкачивает страницы, сверяет противоречивые факты между разными источниками и собирает структурированную аналитическую выжимку.

Все попытки выпустить автономных агентов в неструктурированные бизнес-процессы с открытым контуром - от самостоятельного ведения клиентской переписки до автономного управления бюджетами без подтверждения человеком - на текущем уровне развития моделей неизбежно заканчиваются сливом денег и репутационными факапами.

Ну и.. трезвый итог

Агентный подход - это не новая ступень развития искусственного интеллекта, а инженерный способ компенсировать ограничения языковых моделей за счёт внешних инструментов, песочниц и циклов обратной связи.

Надёжность боевой системы определяется не тем, насколько витиеватый системный промпт вы написали, а тем, насколько жёстко вы ограничили пространство действий модели. Успешный агент в продакшене держится на коротких цепочках выполнения, детерминированных валидаторах каждого шага, изоляции сред и принудительных таймаутах.

Время слепого восторга вокруг автономности уходит. Реальную пользу приносят не те, кто строит замки из мультиагентных ролевых игр, а те, кто умеет заставить вероятностную модель стабильно вызывать одну конкретную функцию в предсказуемом программном контуре.