3,583 papers
arXiv:2610.34238 80 25 окт. 2026 г. FREE

Δτ-Bench и STEWARD: агенты берут лишние инструменты, а накопленные скилы устаревают вместе с инструментами

КЛЮЧЕВАЯ СУТЬ
Агент с большим набором инструментов находит почти все нужные, но тащит с собой лишние, похожие и устаревшие. Метод STEWARD из исследования Δτ-Bench позволяет держать скилы (сохранённые инструкции агента) в актуальном виде и не переписывать их с нуля после каждого обновления инструментов. Фишка: успех задачи прячет упущенную выгоду. Старый путь работает, всё зелёное, но новый инструмент делает то же за 3 вызова вместо 11. STEWARD хранит связь «скил ↔ инструмент», при изменении инструмента точечно правит только затронутые скилы и показывает агенту узкий набор под задачу. Это код, но логику можно перенести в ручной аудит.
Адаптировать под запрос

⚠️ Текст исследования обрезан на описании STEWARD. Результаты самого STEWARD по таблицам и рисункам не видны, только по аннотации и введению. Всё про диагностику (модели, подбор инструментов, скилы) разобрано по полному тексту разделов 3–4.

⚡

TL;DR

Агент с большим каталогом инструментов находит почти все нужные, но вместе с ними тянет кучу лишних. Он вспоминает почти всё нужное и при этом путается в похожих и устаревших вариантах. Второй вывод: скилы, накопленные агентом на старых версиях инструментов, со временем перестают помогать, а местами вредят. Метод STEWARD (менеджер экосистемы) предлагает держать инструменты и скилы как связанную пару и обновлять скил, когда меняется инструмент.

Боль знакомая. Инструмент в MCP обновили: старый остался, рядом появился новый, который делает то же за три вызова вместо одиннадцати. Агент по привычке идёт старым путём. Задача выполнена, всё зелёное, но вы платите за лишние шаги. Хуже того, скил, написанный под старый инструмент, продолжает «подсказывать» устаревший путь. Причина: успех задачи скрывает упущенные возможности. Агент не сравнивает свой путь с лучшим, он просто доводит дело до результата привычной дорогой. Когда исследователи убрали лишние и устаревшие инструменты, результат заметно вырос. Когда дополнительно подсунули готовый план действий, прироста не было. Узкое место в выборе инструментов, а не в планировании.

STEWARD работает в три хода. Он отслеживает связь «скил ↔ инструмент». Когда инструмент меняется, он точечно обновляет затронутые скилы, а не перегенерирует всё с нуля. Во время задачи он выдаёт агенту только нужные в этот момент инструменты и инструкции к ним. Сам STEWARD — код, но его логику можно перенести в ручной процесс: аудит скилов при каждом изменении набора инструментов и сужение набора под задачу.

🔬

Схема метода (STEWARD, по аннотации и введению)

ШАГ 1: Хранить скилы вместе со связями «этот скил использует эти инструменты»
        и статусом доступности → библиотека скилов с зависимостями
ШАГ 2: Инструмент изменился/исчез/появился аналог → обновить ТОЛЬКО затронутые скилы
        (инкрементально, не пересобирать всё) → актуальная библиотека
ШАГ 3: Во время задачи: показать агенту узкий набор инструментов + релевантные скилы,
        менять набор по ходу, если видно, что чего-то не хватает → компактный «вид» ресурсов

Это код (отдельный менеджер над агентом). Шаги выполняются в процессе работы агента, не в одном промпте.

🚀

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

Задача: Вы руководите маркетингом интернет-магазина. В Claude Code подключены MCP-инструменты к amoCRM, «Яндекс Метрике» и Google Таблицам. Есть скил weekly-leads-report, который агент написал себе полгода назад. Разработчики CRM-коннектора выкатили обновление. Старые get_leads и get_lead_details остались, но появился get_leads_with_details, который делает то же за один вызов. Скил по-прежнему работает и отчёт собирается. Но вы подозреваете, что агент гоняет десятки лишних вызовов и тратит токены.

Промпт:

Проведи аудит скила weekly-leads-report после обновления инструментов.

Вот текущий скил:
[вставить содержимое SKILL.md]

Вот актуальный список инструментов amoCRM-коннектора с описаниями:
[вставить список]

Что изменилось в коннекторе:
- добавлен get_leads_with_details (объединяет get_leads + get_lead_details)
- параметр date_from в get_leads теперь называется created_from

Сделай по порядку:
1. Составь карту зависимостей: какие шаги скила какие инструменты вызывают.
2. Для каждого шага отметь статус: «работает как есть» / «параметр устарел» /
   «есть более короткий путь» / «инструмента больше нет».
3. Для шагов со статусом «более короткий путь» посчитай, сколько вызовов
   было и сколько станет.
4. Перепиши ТОЛЬКО затронутые шаги. Остальные не трогай.
5. В конце выдай список шагов, которые ты не смог проверить без запуска.

Результат: Модель выдаст таблицу «шаг скила → инструмент → статус». Далее будет оценка экономии вызовов по затронутым шагам и переписанные только затронутые фрагменты скила. В конце придёт список того, что надо проверить запуском. Заменить скил целиком она не предложит, потому что это прямо запрещено в пункте 4.

🧠

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

Слабость. Агент выбирает инструмент по описаниям. Когда в каталоге похожие и устаревшие варианты, а описания неточные, он берёт нужное вместе с лишним. Скилы, написанные под старую версию, «вшивают» устаревший путь в привычку агента. Рабочий старый путь никто не проверяет, поэтому улучшения остаются незамеченными.

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

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

📋

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

В исследовании нет готового промпта: STEWARD реализован кодом. Шаблон ниже — ручной перенос логики «связать скил с инструментами и обновить точечно». Это адаптация принципа, а не промпт из статьи.

Проведи аудит скила {название_скила} после изменений в инструментах.

Скил:
{текст_скила}

Актуальные инструменты (названия, параметры, описания):
{список_инструментов}

Что изменилось:
{список_изменений}

По порядку:
1. Карта зависимостей: какой шаг скила какие инструменты вызывает.
2. Статус каждого шага: «работает как есть» / «параметр устарел» /
   «есть более короткий путь» / «инструмента больше нет».
3. Для «более короткого пути» посчитай вызовы: было → станет.
4. Перепиши только затронутые шаги, остальное не трогай.
5. Список того, что нельзя проверить без запуска.

Подставьте: {название_скила} — имя скила, {текст_скила} — содержимое файла, {список_инструментов} — описания из вашего MCP или коннектора, {список_изменений} — заметки об обновлении или то, что вы сами заметили.

🚀 Быстрый старт — вставь в чат:

Вот шаблон аудита скила после изменений в инструментах. Адаптируй под мою ситуацию: [опиши, какие скилы и инструменты у тебя есть].
Задавай вопросы, чтобы заполнить поля.

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

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

⚠️

Ограничения

⚠️ Главный метод — код: STEWARD — отдельный менеджер над агентом. Без программирования можно воспроизвести только идею: ручной аудит и сужение набора. Исследователи этот ручной вариант не проверяли.

⚠️ Идеальных данных у вас нет: в диагностике «Oracle Tools» означает, что модели заранее дали только верные актуальные инструменты. В реальной работе такого списка нет, его надо собирать самому.

⚠️ Синтетическая среда: сервисы и задачи сгенерированы, пользователь — тоже модель. Мелкие ручные изменения в вашей компании могут вести себя иначе.

⚠️ Диагностика на одной модели: контролируемые эксперименты и сравнение скил-методов шли на одной базовой модели. Общую картину поддерживает сравнение девяти моделей, но детали могут отличаться.

⚠️ Текст обрезан: результаты STEWARD и подробности его устройства в доступном фрагменте не видны. Не делайте выводов о его точном приросте.

🔍

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

Исследователи собрали 42 области с «живыми» сервисами (с базой данных и MCP-интерфейсами) и 1588 многошаговых задач. Затем они шесть раз меняли набор инструментов, не отнимая возможностей: переименовывали и добавляли параметры, разбивали один инструмент на несколько, сливали несколько в один. Старое могло остаться рядом с новым, и тогда агенту надо выбирать, или исчезнуть, тогда надо искать замену. Часть описаний нарочно делали неполными и устаревшими. Для каждой версии динамическим программированием считали кратчайший путь к цели и сравнивали с ним путь агента.

Девять сильных моделей и агентных оболочек показали успех не выше 42%. Лучшая вспоминала около 90% нужных инструментов, но точность отбора была около 20%: нужное находят, лишнее не отсекают. Дальше шла диагностика по ступеням помощи: узкий домен, инструменты задачи, только актуальные инструменты, готовый путь. Успех рос до ступени «только актуальные инструменты». Готовый путь ничего не добавил. Значит, проблема не в планировании, а в выборе между похожими и устаревшими вариантами.

Затем сравнили четыре готовых метода накопления скилов с агентом без скилов. На первой версии все четыре помогли. По мере смены версий преимущество растаяло. В одной из версий два метода обнулились по умению адаптироваться к ухудшению пути, а агент без скилов сохранял около 10%. Самый сильный метод оказался в 2–3 раза дороже других по расходу на обслуживание скилов. Практический вывод: скилы без привязки к инструментам стареют, а чем больше вы вкладываетесь в их улучшение, тем дороже обновлять.

💡

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

💡 Адаптация для файла инструкций агента: добавьте в CLAUDE.md или AGENTS.md правило, которое возвращает агенту привычку сверяться с актуальным каталогом. Это моя экстраполяция, в статье такого правила нет.

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

🔧 Техника: сузить набор → меньше путаницы. Если можете управлять подключёнными инструментами, оставляйте под конкретную задачу или сессию только нужные. В исследовании сужение инструментов до домена и до задачи стабильно повышало успех и эффективность. В чате или кастомном GPT то же делается прямым перечислением: «Для этой задачи используй только: A, B, C. Остальные не вызывай».

🔗

Ресурсы

  • Δτ-Bench: Pushing Agents Toward a Moving Capability Frontier (Preprint)
  • Код: github.com/zjunlp/delta-tau-bench
  • Датасет: huggingface.co/datasets/zjunlp/delta-tau-bench
  • Авторы: Shuofei Qiao, Xuanguang Pan, Yijun Chen, Wendi Feng, Bin Wu, Runnan Fang, Yuqi Zhu, Shumin Deng, Emine Yilmaz
  • Университеты: Zhejiang University, University College London
  • Сравнивались методы накопления скилов: EvoSkill, AutoSkill, Trace2Skill, SkillOpt

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

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

Агент с большим набором инструментов находит почти все нужные, но тащит с собой лишние, похожие и устаревшие. Метод STEWARD из исследования Δτ-Bench позволяет держать скилы (сохранённые инструкции агента) в актуальном виде и не переписывать их с нуля после каждого обновления инструментов. Фишка: успех задачи прячет упущенную выгоду. Старый путь работает, всё зелёное, но новый инструмент делает то же за 3 вызова вместо 11. STEWARD хранит связь «скил ↔ инструмент», при изменении инструмента точечно правит только затронутые скилы и показывает агенту узкий набор под задачу. Это код, но логику можно перенести в ручной аудит.

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

Правило простое: инструмент изменился, значит проверь все скилы, которые на него опираются. Проверяй не только «сломалось или нет». Смотри ещё, не появился ли путь короче. Скил со старым путём как навигатор со старой картой: довезёт, но через пробки. Для каждого шага ставь один из четырёх статусов: «работает как есть», «параметр устарел», «есть более короткий путь», «инструмента больше нет». Переписывай только затронутые шаги, остальное не трогай. Так рабочий опыт агента не теряется при полной перегенерации.

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

Агент выбирает инструмент по описанию. Если в каталоге несколько похожих вариантов, он берёт нужный и заодно лишний. Скил со старым путём превращает это в привычку, а рабочий старый путь никто не проверяет. Исследователи убрали лишние и устаревшие инструменты, и результат заметно вырос. Потом добавили готовый план действий, и прироста не было. Планировать модель умеет, ей не хватает чистой карты доступных инструментов. Ещё модель хорошо сверяет текст скила с описанием инструмента и находит расхождения. На этом и построен ручной аудит. Точных цифр прироста STEWARD в доступном фрагменте нет: текст исследования обрезан.

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

Агентные системы с подключёнными инструментами (MCP, коннекторы к CRM, аналитике, таблицам) → скилы, написанные месяцы назад, особенно после обновления коннектора. Подходит, когда задачи выполняются, но токены и вызовы растут, а старые и новые инструменты живут рядом. НЕ подходит, если инструменты не менялись: аудитить нечего. Ручной вариант авторы не проверяли. Это перенос идеи, а не результат из статьи.

Мини-рецепт

1. Поймай момент: коннектор обновили, появился новый инструмент или поменялся параметр. Это сигнал к проверке.
2. Собери три куска: текст скила, актуальный список инструментов с описаниями, список изменений.
3. Заставь составить карту: какой шаг скила какой инструмент вызывает.
4. Требуй статус для каждого шага: «работает», «параметр устарел», «есть короче» или «инструмента нет».
5. Попроси посчитать выгоду: для коротких путей пусть напишет «было N вызовов, станет M».
6. Запрети переписывать всё: правятся только затронутые шаги.
7. Не верь на слово: пусть модель выпишет, что нельзя проверить без запуска. Это прогоняй руками.
8. Сужай набор: на конкретную задачу давай агенту только нужные инструменты, а не весь каталог.

Примеры

[ПЛОХО] : Обнови скил weekly-leads-report под новые инструменты
[ХОРОШО] : Проведи аудит скила weekly-leads-report после обновления инструментов. Скил: [текст]. Актуальные инструменты: [список]. Изменилось: добавлен get_leads_with_details (объединяет get_leads и get_lead_details), параметр date_from теперь называется created_from. По порядку: 1) карта зависимостей шагов и инструментов; 2) статус каждого шага: работает как есть / параметр устарел / есть более короткий путь / инструмента больше нет; 3) для коротких путей посчитай вызовы: было → станет; 4) перепиши только затронутые шаги, остальное не трогай; 5) выпиши, что нельзя проверить без запуска. Первый запрос даёт переписанный скил целиком и без проверки. Второй даёт таблицу статусов, экономию вызовов и правки только там, где они нужны.
Источник: Δτ-Bench: Pushing Agents Toward a Moving Capability
ArXiv ID: 2610.34238 | Сгенерировано: 2026-10-28 09:40

Проблемы LLM

ПроблемаСутьКак обойти
Агент с большим каталогом инструментов берёт нужные, но тянет и лишниеПодключено много инструментов. Среди них есть похожие и устаревшие. Агент выбирает по описаниям. Нужный находит почти всегда. Но вместе с ним берёт дубли и старые версии. Задача решается, но с лишними шагами и расходом токенов. Чем неточнее описания, тем хуже.Не давай агенту весь каталог. Показывай только инструменты под текущую задачу. Убирай устаревшие и дублирующие. Уточняй описания: чем новый инструмент отличается от старого. Если не хватает чего-то, расширяй набор по ходу.
Успешный результат скрывает упущенные улучшенияЗадача выполнена, всё работает. Поэтому никто не проверяет, нет ли пути короче. Агент не сравнивает свой путь с лучшим. Он идёт привычной дорогой. Инструмент обновили, появился быстрый вариант. Агент про него не знает или игнорирует. Сохранённая инструкция агента (скил) продолжает советовать старый путь. Платишь за лишние вызовы и не видишь этого.Не жди поломки. Проверяй сохранённые инструкции после каждого изменения инструментов. Требуй от модели явный статус каждого шага: «работает», «параметр устарел», «есть путь короче», «инструмента нет». Статус «есть путь короче» показывает скрытые потери.

Методы

МетодСуть
Точечный аудит инструкции после обновления инструментовДай модели три вещи: текст инструкции (скила), актуальный список инструментов с описаниями и список изменений. Попроси по порядку. 1) Составить карту: какой шаг какой инструмент вызывает. 2) Назначить каждому шагу статус: работает как есть / параметр устарел / есть более короткий путь / инструмента больше нет. 3) Для коротких путей посчитать вызовы: было → станет. 4) Переписать ТОЛЬКО затронутые шаги. 5) Выдать список того, что нельзя проверить без запуска. Почему работает: модель хорошо сравнивает текст инструкции с текстом описания инструмента. Она находит расхождения. Запрет «переписать всё» сохраняет рабочий опыт. Полная перегенерация его теряет. Когда применять: после каждого обновления коннектора, API или набора инструментов. Подходит для любых промптов и инструкций, которые зависят от внешних сервисов. Когда не работает: если нет доступа к актуальным описаниям инструментов. Или если изменения видны только при запуске. Тогда нужен пункт 5 и ручная проверка. Ручной вариант отдельно не проверяли.
📖 Простыми словами

Δτ-Bench: Pushing Agents Toward a Moving Capability

arXiv: 2610.34238

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

Это как дед-бухгалтер, который распечатывает выписку из банка, чтобы руками перебить цифры в программу. Формально задача решена, отчёт готов, но сам процесс — чистый маразм. В системе давно появилась кнопка импорта в один клик, но деду плевать: он привык так делать полгода назад и продолжает страдать фигнёй. Твой агент действует точь-в-точь так же, пока старый алгоритм хоть как-то скрипит и выдаёт результат.

Лечится эта болезнь подходом STEWARD из бенчмарка Δτ-Bench. Логика железная: инструмент и навык агента должны жить как неразрывная пара. Разработчики выкатили апдейт API — агент обязан выкинуть старый мануал на помойку и переписать свой навык, а не цепляться за устаревший костыль. Вместо спама устаревшими запросами модель сразу задействует свежий метод вроде getleadswith_details и решает задачу за один вызов.

Авторы гоняли тесты на синтетике, но принцип универсален. Он критически важен для любых связок: от Claude Code и серверов на протоколе MCP до кастомных ботов под CRM и аналитику. Если твой цифровой ассистент сам пишет себе скрипты под внешние сервисы, он неизбежно обрастёт мхом. Динамическая среда требует ревизии, иначе система деградирует прямо на глазах.

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

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

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

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