Перейти к тексту

Claude Code: работа с coding-агентом2. Как устроен coding-агент

Turn: что происходит между вашим промптом и ответом

Засчитывается, когда отвечены все вопросы квиза

Зачем это нужно

Вы пишете агенту «почини падающие тесты» и через пару минут получаете ответ «готово». Снаружи это выглядит как один вопрос и один ответ. Но если спросить себя, сколько раз за эти две минуты Claude Code обратился к модели, большинство разработчиков не ответит. А от этого числа зависят и скорость, и цена, и то, почему длинная сессия со временем начинает работать хуже.

Чтобы дальше разговаривать про контекст, кэш и стоимость, нужен общий словарь: model provider request, tool call, tool result и turn. В этом Bite разберём, что они значат и как связаны.

Как это устроено

Claude Code работает на вашей машине, а модель — у провайдера, в облаке. Документация называет Claude Code слоем вокруг модели: он даёт модели tools и управляет контекстом, который модель видит. Этот слой и есть agentic harness.

Model provider request — один обмен с моделью: harness отправляет запрос, модель возвращает ответ. Модель сама ничего не делает в вашем репозитории: она умеет только отвечать текстом. Чтобы она могла действовать, harness передаёт в запросе описания tools — какие инструменты есть и какие у них параметры. Документация делит встроенные tools на пять групп: работа с файлами, поиск, выполнение команд, веб и code intelligence.

Если модели нужно действие, она отвечает не текстом для вас, а tool call — указанием вызвать инструмент с конкретными параметрами: например, записать файл с таким-то путём и содержимым. Tool call — это только намерение. Выполняет его harness: пишет файл, запускает команду, читает вывод. Результат выполнения, tool result, harness отправляет модели в следующем запросе. Модель смотрит на результат и решает, что дальше: ещё один tool call или ответ вам.

Turn — весь этот цикл от вашего сообщения до финального ответа агента, со всеми tool calls и tool results между ними. Простой ответ на «привет» — один запрос. Задача «почини тесты» — десятки: документация описывает, как Claude прогоняет тесты, читает ошибки, ищет нужные файлы, читает их, правит и снова запускает тесты, и каждый шаг даёт новую информацию для следующего. Это и есть agentic loop.

Один turn состоит из нескольких запросов к моделиВы отправляете сообщение. Harness шлёт модели запрос, модель отвечает tool call. Harness выполняет tool и шлёт tool result во втором запросе. Модель отвечает текстом, и harness показывает его вам. Всё это один turn.МодельHarnessВыСообщениеЗапрос 1tool callВыполняет toolЗапрос 2 + tool resultТекстОтвет

Главное, что стоит запомнить: каждый запрос несёт всю историю. Модель ничего не помнит между запросами, поэтому harness каждый раз отправляет system prompt, описания tools, все ваши прошлые сообщения, все ответы модели и все tool results. Документация о стоимости говорит то же: Claude Code отправляет весь разговор с каждым запросом, а каждое использование tools — это ещё один запрос с пачкой результатов. Запросы растут с каждым шагом сессии.

Кроме того, не каждый запрос — ваш turn. Когда включены подсказки следующего промпта, Claude Code после ответа отправляет модели ещё один короткий запрос, чтобы предложить, что вы напишете дальше. Всё, что в интерфейсе выглядит сгенерированным, пришло из какого-то запроса к модели.

Практика

Дайте Claude Code в учебном репозитории задачу, которой нужен tool:

Create compliments.md in the repository root with three compliments for me.

Пока агент работает, смотрите в терминал: перед ответом вы увидите, какие tools он вызвал и с какими параметрами — например, запись файла с путём. Посчитайте вызовы tools: каждый из них означает минимум ещё один запрос к модели внутри этого turn. Сами запросы целиком вы увидите в Lab-е этого раздела.

Подводные камни

  • «Один вопрос — один запрос» — неверная модель. Короткая просьба может развернуться в десятки запросов, если агенту нужно искать, читать и проверять.
  • Большой tool result остаётся в истории. Вывод длинной команды или огромный файл, прочитанный один раз, уходит модели во всех следующих запросах сессии, пока его не вытеснит compaction или новая сессия.
  • Tool call ещё не действие. Модель только предлагает вызов; выполняет и ограничивает его harness — отсюда permissions, о которых пойдёт речь дальше в курсе.

Вывод: turn — это цикл запросов, а не один запрос, и каждый запрос везёт с собой всю историю. Всё, что попало в сессию, вы оплачиваете снова и снова.

Проверь себя

Источники

Текст подготовлен с помощью LLM и может содержать неточности.