3,583 papers
arXiv:2610.12269 81 8 окт. 2026 г. FREE

Cadence: адаптивный надзор за кодирующим агентом — реже проверяем, пока всё идёт хорошо, и жёстче вмешиваемся после сбоя

КЛЮЧЕВАЯ СУТЬ
Единого правильного интервала проверок для кодирующего агента не существует. Здоровому агенту всё равно, а сбившийся теряет почти половину успеха: доля решённых задач падает с ~24% до ~14%, если проверять раз в 15 шагов вместо 3. Метод Cadence позволяет поставить второго LLM-надзирателя над агентом и проверять чаще ровно тогда, когда агент начал буксовать. Результат проверки сам назначает время следующей проверки. После совета интервал растёт на 2 шага (максимум 20). После замены, когда ошибочный шаг выбрасывают до выполнения, интервал падает обратно до 5. На 300 задачах SWE-bench Lite такой адаптивный надзор обошёл другие мониторы по решённым задачам. Токенов он тратит столько же, сколько лучшие аналоги.
Адаптировать под запрос
⚡

TL;DR

Cadence — это второй LLM-«надзиратель», который смотрит на последние шаги кодирующего агента и выбирает одно из двух вмешательств. Совет: шаг выполняется, а агент получает подсказку на будущее. Замена: ошибочный шаг выбрасывается до выполнения, и агент переделывает его с подсказкой. Результат проверки управляет частотой надзора. После совета интервал между проверками растёт (+2 шага, максимум 20). После замены он сбрасывается к базовым 5 шагам.

Главная находка: единого «правильного» интервала проверок не существует. Агент, который идёт нормально, почти не страдает от редких проверок (успех держится около 88% и выше при любом интервале), а частые проверки только тратят токены. Агент, который сбился, при редких проверках проваливается чаще: доля решённых упала с ~24% до ~14%, когда интервал вырос с 3 до 15 шагов. Фиксированный график всегда плох для кого-то из двух. Правила вида «сработай, если агент зациклился» тоже не помогают: они не видят ошибок рассуждения. Например, агент уверенно правит не тот кусок кода, и внешне всё выглядит нормально.

Суть метода в двух решениях. Первое: надзиратель оценивает «здоровье» работы по высокоуровневому определению (идёт устойчивый прогресс или нет), а не по списку ошибок. Второе: результат оценки сам задаёт, когда проверять в следующий раз. На 300 задачах SWE-bench Lite метод дал заметный прирост решённых задач относительно агента без надзора и превзошёл другие мониторы по решённым задачам. Расход токенов при этом остался на уровне лучших аналогов.

⚠️ Честная оговорка: Cadence — это код вокруг агента (планировщик проверок, отбрасывание шага до выполнения). В Claude Code или Cursor «из коробки» его не включить. Читателю без разработки доступна ручная версия: монитор в отдельном чате плюс правило интервала. Ниже — оригинал и отдельно адаптации.


🔬

Схема метода

ЦИКЛ (пока агент не закончил):
  агент предлагает шаг (мысль + действие)

  если прошло I шагов с прошлой проверки:
    МОНИТОР (LLM) читает: задачу + шаги с прошлой проверки + предложенный шаг
      → вердикт: advisory | replacement + текст подсказки

    advisory (здоров или мелкие огрехи):
      шаг ВЫПОЛНЯЕТСЯ → подсказка добавляется в контекст
      → интервал: I = min(I + 2, 20)

    replacement (сбился с цели, повторяет неудачи):
      шаг ОТБРАСЫВАЕТСЯ → подсказка в контекст → агент переделывает шаг
      → интервал: I = 5

  иначе: шаг просто выполняется

Стартовые параметры: базовый интервал 5, прирост 2, максимум 20.


🚀

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

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

Задача: Вы чините с помощью Claude Code баг в интернет-магазине на Django. После оплаты через ЮKassa заказ остаётся в статусе «ожидает оплаты». Агент уже 10 шагов правит обработчик вебхука и гоняет одни и те же тесты, а они всё красные. Вы подозреваете, что он ковыряет не тот файл.

Промпт (во второй чат-монитор, на шаге проверки):


Ты — надзиратель за кодирующим агентом. Ты не чинишь баг сам.
Ты оцениваешь, здорово ли идёт работа, и выбираешь тип вмешательства.



Баг: после успешной оплаты через ЮKassa заказ остаётся в статусе
«ожидает оплаты». Нужно найти причину и исправить.



Шаги 6–10 агента (мысль → действие → результат):
6. Решил, что вебхук приходит с другой подписью → правит verify_signature() → тесты красные
7. Снова правит verify_signature() → тесты красные
8. Добавил логирование в обработчик → лог пустой
9. Снова правит verify_signature() → тесты красные
10. Предлагает ещё раз изменить verify_signature()



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



Verdict: advisory ИЛИ replacement
Guidance: 2–4 предложения — что агенту делать дальше

Результат: Монитор оценит последние шаги и скорее всего признает работу нездоровой: повторяются однотипные правки без результата, а пустой лог намекает, что вебхук, возможно, до обработчика не доходит. Вы получите вердикт replacement и короткую подсказку для агента, например сменить гипотезу и проверить маршрут или получение вебхука. Предложенный десятый шаг вы не даёте агенту выполнить и просите его переделать шаг с подсказкой. Следующую проверку делаете через 5 шагов, а не через 10.


🧠

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

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

Сильная сторона LLM. Модель хорошо читает короткий фрагмент работы и отвечает на узкий вопрос: идёт ли прогресс. Диагностика сбоев хорошо представлена в обучающих текстах (разборы отладки, форумы), а длинные траектории восстановления после ошибок — редкость. Авторы объясняют успех тем, что задача монитора превращается из «реши задачу» в «оцени здоровье последних шагов». Это их гипотеза, прямо они её не проверяли.

Как метод это использует. Монитор получает узкий кусок траектории и высокоуровневое определение «здоров / нездоров». Определение намеренно не привязано к типам ошибок: разные агенты по-разному справляются с одной и той же ошибкой. Вердикт заодно служит «пульсом» для расписания. Это даёт рычаги:

  • Базовый интервал (5): для коротких задач уменьшайте, для длинных и дорогих — увеличивайте.
  • Прирост и максимум (+2, 20): растёт только после совета. Чем больше максимум, тем меньше расход на надёжном агенте.
  • Два уровня вмешательства: если «замена» пугает (нельзя отменять шаги), оставьте только совет, но теряете способность ломать цикл ошибок.
  • Определение здоровья: подгоняйте под свой тип задач, но держите на уровне «есть ли прогресс», а не «нет ли ошибки X».
  • Сильный монитор: авторы подчёркивают, что декомпозиция не заменяет мощную модель. Слабый монитор остаётся слабым.

📋

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

Точный промпт из Рис. 4 статьи в доступном тексте не воспроизведён. Шаблон ниже собран по описанию: сохранены высокоуровневое определение здоровья, два уровня вмешательства и работа с отрезком траектории.


Ты — надзиратель за кодирующим агентом. Ты не решаешь задачу сам:
ты оцениваешь здоровье выполнения и выбираешь тип вмешательства.



{описание_задачи}



Шаги с прошлой проверки до текущего (мысль → действие → результат):
{последние_шаги}



Шаг, который агент собирается выполнить (ещё НЕ выполнен):
{предложенный_шаг}



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



1. Сравни последние шаги с целью задачи: приближают ли они к решению?
2. Найди повторы: нет ли одних и тех же неудачных попыток?
3. Оцени предложенный шаг: он продолжает прогресс или усугубляет сбой?
4. Если здоровье удовлетворительное → advisory.
   Если нездоровое → replacement.



Verdict: advisory | replacement
Guidance: 2–4 предложения для агента
  (advisory — как действовать дальше;
   replacement — почему шаг отброшен и что сделать вместо него)

Правило интервала (для вас или оркестратора):

Старт: проверять каждые {базовый_интервал} шагов.
После advisory: интервал + {прирост}, но не больше {максимум}.
После replacement: интервал снова = {базовый_интервал}.

Что подставлять: {описание_задачи} — исходная постановка, {последние_шаги} — шаги с прошлой проверки (скопируйте из лога агента), {предложенный_шаг} — шаг, который агент хочет выполнить. Интервалы из статьи: 5 / 2 / 20.

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

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

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

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


⚠️

Ограничения

⚠️ Нужен код, а не только промпт: полноценный Cadence — это планировщик плюс отбрасывание шага до выполнения. В готовых агентах (Claude Code, Cursor) это вручную не воспроизвести: в лучшем случае имитация через второй чат и ручное копирование шагов.

⚠️ Один бенчмарк и один тип задач: проверка шла только на исправлении багов в Python-репозиториях. Авторы говорят, что метод обобщается, но на других типах задач (новые фичи, не-Python, нетестируемые задачи) в доступном тексте этого не показано.

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

⚠️ Дополнительные токены и вызовы: надзор стоит денег. Метод экономнее конкурентов, но дороже агента без надзора.

⚠️ Доступный текст оборван: разделы с абляциями, параметрами и разбором неудач (RQ2–RQ4) не вошли в материал. Вклад отдельных модулей и случаи провала я оценить не могу.


🔍

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

Сначала авторы показали, чем плохи существующие подходы. Они взяли 300 задач SWE-bench Lite и прогнали агента без надзора. Получились 145 решённых и 155 нерешённых задач. Два эксперта вручную просмотрели все траектории и подтвердили, что группы реально различаются: в одной агент шёл по делу или сам оправлялся от мелких промахов, в другой накапливались необратимые сбои. Дальше они ставили монитор с фиксированным интервалом 3, 5, 9 и 15 шагов.

Получилась зеркальная картина. У «здоровых» запусков успех почти не зависел от интервала (≥88%), а токены падали с ростом интервала (0,45M → 0,30M). У «больных» редкий надзор ронял долю решённых с 23,87% до 14,19%. Отсюда идея: интервал должен зависеть от состояния агента.

Затем проверили правила-триггеры на мониторе LivePlan. Из 300 задач агент не справился в 152, и в 35 из них монитор не сработал ни разу. Эксперты разобрали эти случаи и выделили три типа необнаруженных ошибок: неверное место правки, неверная логика и неполная правка. Все они — ошибки рассуждения, а не внешние сбои.

Cadence сравнивали с фиксированным интервалом, LivePlan, статичными правилами и агентом без надзора, на двух агентах (mini-swe-agent и Moatless). Результат: +76 решённых задач (+25,33 п.п.) на первом и +47 (+15,67 п.п.) на втором. Расход токенов на задачу: 1,03M против 1,47M у сильнейшего аналога на mini-swe-agent и 0,48M против 0,51M на Moatless. Неожиданный и полезный практический вывод: проблема не в том, «умеет ли монитор давать советы», а в том, когда он их даёт.


💡

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

🔧 Техника: ручной «пульс» в инструкции агенту → самопроверка по расписанию

Если у вас Claude Code или похожий инструмент, полноценный внешний монитор не нужен. Попросите агента самого делать стоп-проверку. Это моя адаптация, в статье такой версии нет, и эффективность самопроверки не измерена:

Каждые 5 шагов останавливайся и выполняй чек-здоровья:
1. Я приблизился к цели или хожу по кругу?
2. Повторял ли я одно и то же неудачное действие?
3. Не правлю ли я не то место?
Если всё ок — напиши «ок» и продолжай, следующая проверка через 7 шагов (потом 9, до 20).
Если нет — откажись от последнего шага, смени гипотезу,
а следующую проверку проведи через 5 шагов.

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


🔗

Ресурсы

  • Работа: Cadence: Strategic Guidance for Coding Agents
  • Авторы: Minxing Wang, Yintong Huo (Singapore Management University); He Ye, Earl T. Barr (University College London)
  • Бенчмарк: SWE-bench Lite (300 задач)
  • Агенты в экспериментах: mini-swe-agent, Moatless
  • Сравнение с: Wink (периодический надзор), LivePlan (надзор на правилах)

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

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

Единого правильного интервала проверок для кодирующего агента не существует. Здоровому агенту всё равно, а сбившийся теряет почти половину успеха: доля решённых задач падает с ~24% до ~14%, если проверять раз в 15 шагов вместо 3. Метод Cadence позволяет поставить второго LLM-надзирателя над агентом и проверять чаще ровно тогда, когда агент начал буксовать. Результат проверки сам назначает время следующей проверки. После совета интервал растёт на 2 шага (максимум 20). После замены, когда ошибочный шаг выбрасывают до выполнения, интервал падает обратно до 5. На 300 задачах SWE-bench Lite такой адаптивный надзор обошёл другие мониторы по решённым задачам. Токенов он тратит столько же, сколько лучшие аналоги.

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

Надзиратель не ищет ошибки по списку. Он отвечает на один вопрос: есть ли у агента устойчивый прогресс к цели? Есть два вмешательства. Совет: шаг выполняется, агент получает подсказку на будущее. Замена: шаг летит в мусор, агент переделывает его с подсказкой. Вердикт о здоровье работы одновременно решает, как скоро проверять снова. Это как пульсометр у бегуна. Пульс ровный — смотришь на часы реже. Пульс скачет — проверяешь каждые пять минут.

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

У фиксированного графика две беды сразу. Пока агент идёт хорошо, частый надзор жжёт токены и сбивает его лишними подсказками. Здоровый агент держит успех около 88% и выше при любом интервале. Когда агент сбился, редкая проверка приходит поздно. Ранние ошибки тянут за собой следующие, поэтому сбой надо ловить за 5 шагов, а не за 15. Правила вроде «сработай, если агент зациклился» тоже не спасают. Они не видят ошибок рассуждения: агент уверенно правит не тот кусок кода, и снаружи всё выглядит прилично. Надзиратель читает короткий кусок работы и оценивает прогресс, а не решает задачу заново. Авторы считают, что именно поэтому ему проще. Это их гипотеза, напрямую они её не проверяли. Ещё одна оговорка: слабая модель в роли надзирателя остаётся слабой, декомпозиция её не спасает.

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

Разработка с кодирующими агентами → поиск бага в чужом коде, интеграции, миграции, особенно когда агент делает много шагов и может увязнуть в одной неверной гипотезе. НЕ подходит для коротких задач на пару шагов, где надзирать нечего. Если нельзя отбросить шаг до выполнения, остаётся только совет, и цикл ошибок вы сломаете хуже. Проверено только на исправлении багов в Python-репозиториях: для новых функций и других языков данных нет. Полная версия требует кода вокруг агента, в Claude Code или Cursor её из коробки не включить. Вручную доступна имитация через отдельный чат.

Мини-рецепт

1. Заведи отдельный чат-монитор: возьми самую сильную модель, какая есть. Слабый надзиратель выбросит хороший шаг.
2. Дай определение здоровья: здоровая работа — есть устойчивый прогресс, мелкие огрехи допустимы. Нездоровая — ушёл от цели, прогресса нет, повторяются одни и те же неудачи. Не перечисляй конкретные ошибки.
3. Первая проверка через 5 шагов: скопируй из лога агента задачу, последние шаги и тот шаг, который он хочет сделать.
4. Потребуй вердикт: advisory или replacement, плюс 2–4 предложения подсказки для агента.
5. Совет: шаг выполняется, подсказку вставь в контекст агента. Следующая проверка через интервал +2, но не дальше 20 шагов.
6. Замена: шаг не выполняй. Вставь подсказку и попроси агента переделать шаг. Следующая проверка снова через 5 шагов.
7. Подгони под себя: задачи короткие — уменьши базовый интервал. Длинные и дорогие — увеличь максимум.

Примеры

[ПЛОХО] Задача: агент чинит баг в интернет-магазине на Django. После оплаты через ЮKassa заказ остаётся в статусе «ожидает оплаты». Агент уже 10 шагов правит обработчик вебхука, а тесты красные. : Проверяй работу агента каждые 10 шагов и скажи, если что-то не так
[ХОРОШО] : Ты надзиратель, баг сам не чини. Здоровая работа: есть устойчивый прогресс. Нездоровая: агент ушёл от цели, повторяет одни и те же неудачные правки. Вот шаги 6–10: [шаги из лога]. Ответь: Verdict advisory или replacement, и 2–4 предложения подсказки агенту Монитор видит, что шаги 6, 7, 9 и 10 одинаковые: правка verify_signature() без результата. Пустой лог намекает, что вебхук до обработчика, возможно, вообще не доходит. Вердикт replacement: десятый шаг не выполняем, агент меняет гипотезу и проверяет маршрут вебхука. Следующая проверка через 5 шагов, а не через 10.
Источник: Cadence: Strategic Guidance for CodingAgents
ArXiv ID: 2610.12269 | Сгенерировано: 2026-10-09 06:00

Проблемы LLM

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

Методы

МетодСуть
Адаптивная частота проверок агента: реже, пока всё хорошо, чаще после сбояПроверяющая модель получает задачу, шаги с прошлой проверки и предложенный следующий шаг. Она выдаёт один из двух вердиктов. Совет (advisory): работа здорова или есть мелкие огрехи. Шаг выполняется, подсказка уходит в контекст агента. Замена (replacement): агент сбился или повторяет неудачи. Шаг отбрасывается до выполнения, агент переделывает его с подсказкой. Правило интервала: старт каждые 5 шагов. После совета интервал растёт: I = min(I + 2, 20). После замены он падает обратно: I = 5. Почему работает: фиксированный график плох для кого-то одного. Агент на верном пути почти не выигрывает от частых проверок. Они только тратят токены и сбивают лишними подсказками. Агент, который сбился, при редких проверках проваливается заметно чаще, потому что ранние ошибки уже необратимы. Вердикт служит пульсом: он сам говорит, когда проверять дальше. Как настроить: базовый интервал уменьшай для коротких задач, увеличивай для длинных и дорогих. Если нельзя отменять шаги, оставь только совет. Но тогда теряешь способность ломать цикл ошибок. Вручную: проверяющая модель в отдельном чате, шаги копируешь из лога агента, интервал считаешь сам. Когда не работает: слабая проверяющая модель. Она ошибётся в оценке и отбросит хороший шаг. Для коротких задач в 3–5 шагов надзор не окупится. Полная версия требует кода вокруг агента, в готовых инструментах её не включить
📖 Простыми словами

Cadence: Strategic Guidance for CodingAgents

arXiv: 2610.12269

Автономные кодинг-агенты моментально уходят в астрал: они начинают править не те файлы или городить костыли поверх кривой логики. Обычные проверки по таймеру — полный провал, потому что ты либо впустую жжёшь токены, либо вмешиваешься, когда архитектура уже разбита в хлам. Метод Cadence чинит это связкой ролей: пока один агент пишет код, второй LLM-надзиратель оценивает контекст и на лету меняет длину поводка.

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

Контроль держится всего на двух механиках: совет и замена. Если действие адекватное, надзиратель лишь шепчет подсказку на будущее, а пауза между проверками растёт на +2 шага до потолка в 20. Но когда агент начинает пороть чушь, в дело вступает жесткая замена: косячный шаг выкидывают на помойку до его выполнения, а паранойя надзирателя мгновенно сбрасывает интервал к базовым 5 шагам.

Авторы гоняли метод на раскопках чужих репозиториев и миграциях, но принцип абсолютно универсален. Любая автономная система с длинным циклом задач — от сборки пайплайнов до инфраструктурных скриптов — страдает одной болячкой. Без умного арбитра агент быстро начнёт лечить фантомные боли, создавая снежный ком из костылей, который умножит на ноль весь прогресс.

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

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

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

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