Глава 24

Anthropic Tool Runner: удобный beta-цикл с ясной границей

Tool Runner в SDK автоматически управляет циклом, состоянием, валидацией и обёрткой ошибок - он избавляет от ручного loop. Но у него есть чёткая граница: по официальной документации для human in the loop, условного исполнения и полного custom logging следует использовать manual loop.

Что берёт на себя Tool Runner, а что всё равно остаётся на вас, стоит держать перед глазами.

Tool Runner делает · Ваш код все равно делает

  • Вызывает Messages API до финального ответа - Authorization и trusted context
  • Исполняет зарегистрированные функции - Risk classification и approval boundary
  • Формирует tool results - Redaction и лимит размера результата
  • Хранит message history внутри runner - Ваш event log и retention
  • Ограничивает max_iterations - Wall time, cost budget и circuit breaker

Runner вызывает Messages API, исполняет зарегистрированные функции, формирует tool results и хранит историю внутри себя. Но authorization и trusted context, risk classification и approval boundary, redaction и лимит размера, ваш event log, wall time и cost budget - всё это остаётся вашим кодом. Runner ускоряет цикл, а не заменяет безопасность.

И оговорка про статус, из-за которой не стоит копировать старые сниппеты.

Статус beta важен. Не копируйте непроверенный snippet из старой статьи. Откройте текущую TypeScript-вкладку Tool Runner для установленной версии SDK и зафиксируйте её в lockfile. Контракт прямого Messages API из предыдущей главы остаётся стабильной точкой понимания.

Manual loop стоит оставить в нескольких случаях, и их полезно знать заранее.

  • Нужно остановить выполнение перед preview или side effect.
  • Разные tools имеют разные concurrency и retry policy.
  • Нужно сохранять каждый normalized event в общей cross-provider форме.
  • Вы запускаете один eval suite против трёх адаптеров.

Остался третий провайдер. У Google свой недавний способ вести agent loop - Interactions API.

Ссылки