3,583 papers
arXiv:2610.34679 79 26 окт. 2026 г. FREE

AT-AT: автоматическая доработка инструментов агента по логам его прошлых запусков

КЛЮЧЕВАЯ СУТЬ
Обнаружено: агент часто ошибается не из-за промпта, а потому что инструмент отвечает ему сырыми цифрами. Инструмент вернул «израсходовано 8 ГБ, лимит 10 ГБ», и агент в половине случаев неверно считает остаток. Метод AT-AT позволяет улучшить чужого или общего агента, не меняя его вообще: правятся только описания и ответы его инструментов (API, MCP-серверов, функций). Кодинг-агент читает размеченные логи прошлых запусков и код инструментов, находит повторяющиеся сбои и переписывает то, что инструмент отдаёт агенту. Это один проход по готовым логам, новые запуски не нужны. Если разрешить править только описания, выигрыш почти исчезает, а с доступом к коду ответов он появляется.
Адаптировать под запрос
⚡

TL;DR

AT-AT — это способ улучшать агента, не трогая самого агента. Кодинг-агент читает логи прошлых запусков (с пометками «успех/провал») и исходники инструментов: API, MCP-серверов, функций. Затем он правит описания инструментов и их реализацию, то есть то, что инструмент возвращает агенту в ответ. Всё это один проход по уже собранным логам, новые запуски не нужны.

Главная находка: ответ инструмента влияет на агента не меньше, чем его описание. Типичная боль выглядит так. Инструмент вернул «израсходовано 8 ГБ, лимит 10 ГБ», и агент в половине случаев неверно считает остаток или не делает вывод, что трафик кончился. Если же инструмент сам возвращает «осталось 2 ГБ», ошибка пропадает. Авторы назвали это feedback shaping (формирование обратной связи). Когда они разрешили править только описания, выигрыш почти исчез.

Метод простой: дать кодинг-агенту папку с размеченными логами и папку с кодом инструментов, поставить цель «делай общие правки, не подгоняй под отдельные случаи». Потом проверить, что код запускается и файлы вне инструментов не тронуты. При провале проверки агент получает до пяти попыток исправиться.

🔬

Схема метода

ШАГ 0: Собрать логи прошлых запусков агента + оценка каждого (успех/провал)
ШАГ 1: Положить в папку логи и исходники инструментов → «песочница» для кодинг-агента
ШАГ 2: Системный промпт: цель + «правь обобщённо, не под отдельные случаи»
        Первое сообщение: начало каждого провального прогона (первые ~4000 символов)
        + до 3 успешных прогонов для контраста
ШАГ 3: Кодинг-агент ищет повторяющиеся сбои, читает код инструментов,
        решает: чинить описание или реализацию → правит файлы
ШАГ 4: Проверка: код запускается, правки только в файлах инструментов
        Не прошла → агент правит ещё раз (до 5 попыток)
ШАГ 5: Прогнать агента на НОВЫХ задачах, сравнить с исходной версией

Шаги 1–4 идут одной сессией кодинг-агента. Шаг 5 отдельный: это независимая проверка.

🚀

Пример применения

Задача: Вы строите бота поддержки для сотового оператора в духе МТС или Билайна. У бота есть MCP-инструмент get_data_usage. Он возвращает {"used_gb": 8, "limit_gb": 10}. По логам видно: клиенты пишут «интернет не работает», а бот часами предлагает перезагрузить телефон. Он не замечает, что трафик закончился, потому что остаток надо вычислить и добавить ещё докупленные пакеты. Менять бота нельзя: он общий для нескольких команд. Инструмент менять можно.

Промпт (для Claude Code, в папке проекта лежат traces/ и tools/):


Ты оптимизатор инструментов для ИИ-агента поддержки сотового оператора.
Ты не меняешь агента. Ты меняешь только то, что видит агент: описания
инструментов и то, что инструменты возвращают.



Повысить долю решённых обращений. Критерий успеха — оценка в каждом файле traces/.



- traces/ — логи диалогов агента с оценкой (success/fail)
- tools/ — исходный код инструментов (tools/support_tools.py)



1. Найди сбои, которые повторяются в нескольких логах. Единичные случаи игнорируй.
2. Для каждого сбоя прочитай код инструмента и реши:
   нужно уточнить описание или изменить ответ инструмента.
3. Правки делай ОБОБЩЁННЫЕ: не подгоняй под конкретные номера и клиентов из логов.
4. Не меняй имена функций, параметры и формат ответа так, чтобы сломать вызывающий код.
5. Не создавай, не удаляй и не правь файлы вне tools/.
6. В конце проверь, что код запускается без ошибок.



Список правок: что изменено, какой повторяющийся сбой исправляет, в каких логах он виден.

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

🧠

Почему это работает

Слабость: агент видит инструмент только через его описание и ответы. Если ответ сырой («used 8, limit 10»), вывод приходится делать самой модели, и она иногда ошибается. Если описание расплывчатое, она неверно вызывает инструмент. Инструменты часто писали для разработчиков и обычного кода, а не для LLM. А промпт агента вы поправить не можете: он чужой или общий.

Сильная сторона: кодинг-агент умеет искать по длинным логам, читать код и решать, где причина сбоя: в описании или в реализации. Логи прошлых запусков — готовый и бесплатный источник знаний о том, где агенты спотыкаются. Правка инструмента сразу помогает всем агентам, которые им пользуются.

Как метод это использует: он превращает повторяющиеся ошибки агентов в правки среды. В исследовании каждая часть оказалась нужной. Без логов, без доступа к коду реализации или без кодинг-агента (просто «перепиши файл одним запросом») прирост почти исчезал.

Рычаги управления: - Доступ к реализации (разрешить править код ответов): главный источник выигрыша. Если можно менять только описания, эффект слабее. - Число логов: возьмите несколько задач и повторные прогоны. Тогда правки обобщаются, а не подгоняются под один случай. - Провалы + успехи: провальные прогоны показывают проблему, успешные дают контраст. В исследовании: первые 4000 символов каждого провала и до трёх успешных. - Инструкция «правь обобщённо»: защита от переобучения под ваши логи. - Лимит попыток проверки: по умолчанию 5. Для простых инструментов хватит 2–3.

📋

Шаблон промпта

Точные промпты авторов лежат в Appendix G, в предоставленном тексте их нет. Шаблон ниже восстановлен по описанию метода: цель в системном промпте, инструкция про обобщённые правки, логи в файлах, ограничения проверки.


Ты оптимизатор инструментов для ИИ-агента ({тип_агента}).
Агента ты не меняешь. Ты меняешь только описания инструментов
и то, что инструменты возвращают агенту.



Повысить долю успешно решённых задач. Критерий успеха — оценка в каждом файле {папка_с_логами}.



- {папка_с_логами}/ — логи запусков агента с оценкой (успех/провал)
- {папка_с_инструментами}/ — исходный код и описания инструментов



1. Просмотри логи. Выпиши сбои, которые повторяются в нескольких запусках.
2. Для каждого сбоя прочитай код инструмента, который в нём участвовал.
3. Определи причину:
   - агент неверно вызвал инструмент → уточни описание / параметры;
   - агент получил неполный или неудобный ответ → измени реализацию,
     чтобы ответ содержал готовую нужную информацию или подсказку,
     как исправить ошибку;
   - причина не в инструментах → пропусти.
4. Внеси правки.
5. Проверь, что код запускается без ошибок.



- Правки обобщённые: не подгоняй под конкретные значения и случаи из логов.
- Не ломай интерфейс: имена функций, параметры и формат ответа сохраняй.
- Не создавай, не удаляй и не правь файлы вне {папка_с_инструментами}/.
- {разрешены_ли_правки_реализации: «Правь описания и код» или «Правь только описания»}



Список правок: что изменено, какой повторяющийся сбой исправляет, в каких логах он виден.

Что подставлять: - {тип_агента} — чем занимается ваш агент. - {папка_с_логами} — файлы диалогов с пометкой исхода. Лучше брать разные задачи и повторные запуски. - {папка_с_инструментами} — код или конфигурация инструментов. - {разрешены_ли_правки_реализации} — слабее всего работает вариант «только описания».

🚀 Быстрый старт — вставь в чат (или в Claude Code, если логи и код в папках):

Вот шаблон оптимизации инструментов агента по логам (метод AT-AT).
Адаптируй под мою задачу: {опиши своего агента и какие у него инструменты}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, что делает агент, какие у него инструменты, где лежат логи, как помечены успехи и провалы, можно ли править код ответов. Эти данные нужны, чтобы правила про «не ломай интерфейс» и «не трогай чужие файлы» были привязаны к вашим реальным файлам.

⚠️

Ограничения

⚠️ Эффект не везде: значимый прирост получен только в одной области из трёх (Telecom, техподдержка с вычислениями). В Airline прирост такого же размера, но он не прошёл проверку на случайность. В Retail результат стал чуть хуже.

⚠️ Слепые правки вредят: метод DRAFT (правит только описания, без глубокого анализа) значимо ухудшил результат в Telecom. Принимайте правки только после проверки на новых задачах.

⚠️ Агент стал дороже: описания и ответы инструментов стали длиннее, и стоимость одного прогона агента почти везде значимо выросла. В Airline, например, с 0,0618 до 0,0675 доллара за симуляцию. Оптимизация обходится в 2–10 долларов разово, но платить за длинные ответы придётся постоянно.

⚠️ Нужны размеченные логи и доступ к коду: без оценок успеха и провала метод не работает. Если вы не владеете кодом инструментов (чужой API), остаются только описания, а они дают меньше.

⚠️ Перенос между агентами не доказан: при смене модели агента улучшение в двух областях из трёх не вышло за пределы случайного разброса. Гипотеза «правки полезны всем агентам» подтверждена не надёжно.

⚠️ Один проход: авторы проверили единичное обновление, а не непрерывный цикл улучшений. Агент в основных тестах — не самая современная модель (GPT-4.1).

🔍

Как исследовали

Авторы из Netflix взяли бенчмарк τ²-bench-verified: симуляция службы поддержки в трёх областях (авиалинии, ритейл, телеком). Сначала они прогнали агента по 5 раз на каждую задачу и получили базовые логи. Часть задач отдали оптимизатору (кодинг-агент Pi на Claude Opus 4.7), а остальные оставили для проверки. Каждую задачу гоняли по 30 раз и сравнивали исходные и улучшенные инструменты парным перестановочным тестом. Это нужно, потому что агент от запуска к запуску даёт разные результаты, и обычная разница средних ничего не доказывает.

В Telecom доля успешных задач выросла с 29,5% до 36,75% (p=0,0033), в Airline с 52,17% до 59,17% (не значимо). Конкурентов (DRAFT, ToolObserver, GEPA) обошли или сравнялись при меньших затратах на оптимизацию: у ToolObserver она стоила 16–49 долларов, у AT-AT 2–11. Самое поучительное — абляции: в Telecom «только описания» дали 31,2%, «без логов» — 30,4%, «без кодинг-агента» — 30,5%. Все три почти на уровне базы 29,5%, то есть нужны были все части. На TerminalBench-2 и TBLite авторы улучшили инструменты внутри кодинг-агента OpenCode и сообщают о росте на отложенных задачах (таблица в предоставленном фрагменте обрезана). На трёх боевых MCP-серверах Netflix правки описаний по логам снизили стоимость или число ошибок инструментов на всех, а число успешных задач выросло на одном.

💡

Адаптации и экстраполяции

🔧 Техника: разрешить правки реализации → выигрыш выше. Если ваш инструмент — функция, которой вы владеете, не ограничивайте оптимизатор описаниями:


- Правь описания И код ответов инструмента.
- Если агент делает вывод из сырых данных (считает остаток, сравнивает даты),
  перенеси этот вывод в ответ инструмента.

Без доступа к коду метод ближе к «улучшению описаний», а это в исследовании дало мало.

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

Вот сообщения об ошибках и ответы моих инструментов агента: {список}.
Перепиши их так, чтобы агент из самого ответа понимал: что пошло не так,
что уже известно и какой следующий шаг разумен. Не меняй формат и ключи ответа.

Это моя экстраполяция идеи авторов: их эксперимент ставился на логах, а не на ручном переписывании.

🔗

Ресурсы

  • Работа: AT-AT: Automatic Tool Optimization from Agent Traces. Maya Ravichandran, Pragya Tripathi, Dharamendra Kumar, Adith Swaminathan, Nathan Kallus (Netflix). NeurIPS 2026, Workshop on Continual Learning in the Era of Foundation Models and Embodied Agents.
  • Код: https://github.com/Netflix-Skunkworks/agent-tool-opt-core
  • Бенчмарки: τ²-bench-verified, TerminalBench-2, TBLite.
  • Связанное: Anthropic о проектировании инструментов для агентов (цитируют снижение времени выполнения на 40% после доработки инструментов); DRAFT, ToolObserver, GEPA, Meta-Harness.

📋 Дайджест исследования

Ключевая суть

Обнаружено: агент часто ошибается не из-за промпта, а потому что инструмент отвечает ему сырыми цифрами. Инструмент вернул «израсходовано 8 ГБ, лимит 10 ГБ», и агент в половине случаев неверно считает остаток. Метод AT-AT позволяет улучшить чужого или общего агента, не меняя его вообще: правятся только описания и ответы его инструментов (API, MCP-серверов, функций). Кодинг-агент читает размеченные логи прошлых запусков и код инструментов, находит повторяющиеся сбои и переписывает то, что инструмент отдаёт агенту. Это один проход по готовым логам, новые запуски не нужны. Если разрешить править только описания, выигрыш почти исчезает, а с доступом к коду ответов он появляется.

Принцип работы

Не учи агента думать лучше. Пусть инструмент отдаёт уже готовый вывод. Авторы назвали это формированием обратной связи (feedback shaping). Ответ инструмента влияет на агента не меньше, чем его описание. Сырое «used 8, limit 10» заставляет модель считать самой. Ответ «осталось 2 ГБ, трафик почти исчерпан» считать не требует, и ошибка пропадает. Это как банковская выписка без итога против выписки с итоговой строкой. В первом случае каждый считает сам и кто-то ошибается. Во втором ошибаться нечему. Цикл такой: логи с пометками «успех/провал» → поиск сбоев, которые повторяются → решение «чинить описание или код ответа» → проверка, что код запускается и файлы вне инструментов не тронуты. Если проверка не прошла, агент получает до 5 попыток.

Почему работает

Агент видит инструмент только через описание и ответы. Инструменты часто писали для разработчиков и обычного кода, а не для LLM. Расплывчатое описание приводит к неверному вызову. Сырой ответ заставляет модель делать вывод самой, и она иногда лажает. Промпт агента вы поправить не можете, он чужой или общий, а инструмент можете. Кодинг-агент хорошо ищет по длинным логам и читает код. Он сам решает, где причина: в описании или в реализации. Логи прошлых запусков уже собраны и бесплатны. В исследовании каждая часть оказалась нужной. Без логов, без доступа к коду реализации или без кодинг-агента (просто «перепиши файл одним запросом») прирост почти исчезал. Одна правка инструмента помогает всем агентам, которые им пользуются. Правка промпта одного агента так не работает.

Когда применять

Агенты поддержки и любые агенты, где нужны вычисления по ответам инструментов (остаток трафика, лимиты, сроки, баланс) → особенно когда сам агент чужой или общий для нескольких команд, а инструменты ваши. Нужны размеченные логи (успех/провал) и доступ к коду инструментов. Честно про границы. Значимый прирост получен только в одной области из трёх: в техподдержке оператора связи с вычислениями. В авиации прирост такого же размера не прошёл проверку на случайность. В рознице стало чуть хуже. Ответы становятся длиннее, поэтому прогон агента дорожеет. В авиации, например, с 0,0618 до 0,0675 доллара за симуляцию. Сама оптимизация стоит 2–10 долларов разово. Перенос на другую модель агента надёжно не доказан. НЕ подходит, если у вас чужой API и можно править только описания, или если нет оценок успеха и провала.

Мини-рецепт

1. Собери логи: диалоги или прогоны агента с пометкой «успех/провал». Лучше разные задачи и повторные запуски, тогда правки не подгонятся под один случай.
2. Сделай песочницу: папка traces/ с логами и папка tools/ с кодом инструментов. Работай в копии, не в боевом коде.
3. Выдай цель: «повысить долю решённых задач, критерий — оценка в логах». Добавь главное правило: правь обобщённо, не подгоняй под конкретные номера и клиентов.
4. Покажи провалы: начало каждого провального прогона (около 4000 символов) и до 3 успешных для контраста.
5. Разреши лезть в код: формулировка «правь описания и код ответов». Вариант «только описания» слабее всего.
6. Поставь забор: не ломать имена функций, параметры и формат ответа. Не трогать файлы вне tools/. В конце код должен запускаться. Для простых инструментов хватит 2–3 попыток исправить ошибки вместо 5.
7. Смотри diff глазами: принимай правки не вслепую. Слепой метод DRAFT (только описания, без глубокого анализа) в Telecom значимо ухудшил результат.
8. Проверь на новом: прогони агента на НОВЫХ задачах и сравни со старой версией. Заодно сравни стоимость прогона.

Примеры

[ПЛОХО]: `Улучши инструменты моего бота поддержки, чтобы он лучше работал` [ХОРОШО]: `Ты оптимизатор инструментов для ИИ-агента поддержки сотового оператора. Агента не меняй. Меняй только описания инструментов в tools/ и то, что они возвращают. В traces/ логи с оценкой success/fail. Найди сбои, которые повторяются в нескольких логах. Для каждого прочитай код инструмента и реши: уточнить описание или изменить ответ. Правки делай обобщённые, не подгоняй под конкретные номера и клиентов. Не ломай имена функций, параметры и формат ответа. Не трогай файлы вне tools/. В конце проверь, что код запускается. Выведи список: что изменено, какой сбой исправляет, в каких логах он виден.` [ПЛОХО]: ответ инструмента `{"used_gb": 8, "limit_gb": 10}`. Бот часами советует перезагрузить телефон и не замечает, что трафик кончился. [ХОРОШО]: тот же инструмент после правки возвращает `{"used_gb": 8, "limit_gb": 10, "remaining_gb": 2, "note": "Трафик почти исчерпан, учти докупленные пакеты"}`. Считать остаток боту больше не нужно.
Источник: AT-AT: Automatic Tool Optimization from Agent Traces
ArXiv ID: 2610.34679 | Сгенерировано: 2026-10-29 06:50

Проблемы LLM

ПроблемаСутьКак обойти
Модель ошибается, когда инструмент отдаёт сырые данные, а вывод надо делать самойИнструмент вернул {"used": 8, "limit": 10}. Модель должна сама посчитать остаток и понять, что ресурс кончился. Она часто считает неверно или не делает вывод. Описание инструмента при этом написано верно. Ошибка в том, что ответ рассчитан на программу, а не на модельПусть инструмент возвращает готовый вывод, а не только цифры. Добавь вычисленные поля: "remaining": 2. Добавь короткую пометку: "status": "лимит почти исчерпан". При ошибке верни подсказку, что делать дальше. Правь ответ инструмента, а не только его описание

Методы

МетодСуть
Доработка инструментов по логам прошлых запусков — исправляет повторяющиеся сбои без правки самого агентаЧто делать: собери логи запусков с пометкой «успех/провал». Дай кодинг-агенту (например, Claude Code) папку с логами и папку с кодом инструментов. В запросе укажи цель, начало каждого провального прогона и 2–3 успешных для контраста. Попроси так: Найди сбои, которые повторяются в нескольких логах. Для каждого реши: уточнить описание или изменить ответ инструмента. Правки делай общие, не подгоняй под отдельные случаи. Добавь запреты: не ломать имена и формат ответа, не трогать файлы вне папки инструментов. Затем проверь, что код запускается. Почему работает: логи — готовый и бесплатный источник знаний о том, где агент спотыкается. Провалы показывают проблему, успехи показывают, как выглядит норма. Требование «повторяются в нескольких логах» отсекает случайные ошибки. Фраза «правь общо» защищает от подгонки под ваши примеры. Кодинг-агент умеет искать по длинным логам и читать код. Он сам решает, где причина: в описании или в ответе. Когда да: агент общий или чужой, а инструмент ваш. Правка инструмента помогает всем, кто им пользуется. Также подходит, когда ошибки связаны с вычислениями и выводами из ответов. Когда нет: нет логов с оценкой исхода. Нет доступа к коду инструмента, и можно править только описания. Только описания дают заметно меньше. Осторожно: принимай правки только после проверки на новых задачах. Слепые правки могут ухудшить результат. Ответы становятся длиннее, и каждый запуск агента обходится дороже
📖 Простыми словами

AT-AT: AutomaticToolOptimization fromAgentTraces

arXiv: 2610.34679

Когда AI-агент косячит, разработчики по привычке бегут переписывать системный промпт или крутить веса. Это тупик: чаще всего лажает не сам мозг модели, а убогий интерфейс инструментов. LLM вынуждена общаться с миром через API и базы данных, которые писали для обычного софта, а не для нейросетей. Метод AT-AT заходит с правильной стороны: он оптимизирует инструменты вместо агента, заставляя функции возвращать понятный смысл, а не сырой технический мусор.

Это как нанять стажёра и вместо фразы «бумага на складе кончилась» скидывать ему пятистраничный JSON с накладными за квартал, заставляя считать остатки в уме. Парень предсказуемо тупит, клиент в бешенстве, а все винят стажёра. Метод AT-AT ставит рядом старшего разработчика, который смотрит на эти фейлы и переписывает ответ системы так, чтобы первой строчкой шло главное: «бумаги нет, оформи заказ».

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

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

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

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с