Агент — это цикл, а не магия

Основы. Что на самом деле происходит внутри любого агента, от Claude Code до OpenClaw, и почему это знание экономит время и деньги.

· 3 мин чтения

Слово «агент» сейчас лепят на всё подряд, от чат-бота до «цифрового сотрудника». Для инженера полезнее короткое определение, которое предложил Саймон Уиллисон, автор Django и одного из самых толковых блогов про работу с ИИ:

Агент вызывает инструменты в цикле, чтобы достичь цели.

Вот и всё. Остальное — детали.

Как выглядит этот цикл

Модель Обвязка Claude Code · Codex · OpenClaw · свой скрипт Инструменты 1. заявка: «вызови X» 2. выполняет вызов 3. результат вызова 4. результат и история → модели
Модель ничего не запускает сама — она только пишет заявки. Всё остальное делает обвязка, и круг повторяется, пока задача не решена.
  1. Программа отправляет модели ваш запрос и список доступных инструментов: «прочитать файл», «выполнить команду», «открыть страницу».
  2. Модель отвечает не текстом, а заявкой: «вызови инструмент X с такими параметрами».
  3. Программа выполняет вызов и отправляет модели результат.
  4. Модель смотрит на результат и решает, что дальше: ещё один вызов или готовый ответ.

Сама модель ничего не запускает. Она только пишет, что запустить. Всё остальное делает программа вокруг неё.

Всё, что не модель, — это «обвязка»

В LangChain сформулировали это так: агент = модель + обвязка (по-английски harness). Если вы не модель, вы обвязка.

В обвязку входит:

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

Claude Code, Codex, OpenClaw, Hermes — это разные обвязки. Модели внутри них могут быть одни и те же.

Почему это важно на практике

Одна и та же модель в разной обвязке работает по-разному. В LangChain приводят пример: их кодинг-агент поднялся из топ-30 в топ-5 рейтинга Terminal Bench 2.0 только за счёт изменений в обвязке, модель была та же. Если агент плохо справляется, не спешите менять модель. Сначала посмотрите, какие у него инструменты и инструкции.

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

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

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

Что из этого следует

  • Когда агент ошибается, спросите не «почему модель тупит?», а «чего ей не хватает, чтобы сделать правильно?»: инструмента, примера, способа проверить себя.
  • Описывайте инструменты так, будто пишете документацию для нового сотрудника: пример, крайние случаи, чем отличается от соседнего инструмента.
  • Отключайте инструменты, которые агенту не нужны. Каждый занимает место в контексте и отвлекает.
  • Выбирая между Claude Code, Codex и OpenClaw, сравнивайте обвязки, а не только модели: что умеет каждая, где хранит память, как работает по расписанию, как передаёт задачи другим агентам.