Планирование
Этап 2: планирование и координация
Изучение исходных данных даёт агенту факты. Оно не определяет, каким должно быть изменение. После него агент может знать шаблон middleware, продуктовое ограничение и существующие тесты. Но он всё ещё не знает, какой компромисс тебе нужен, какая уборка кода выходит за рамки задачи и какую границу нельзя сдвигать. Если начать выполнение прямо здесь, эти решения будут приниматься уже внутри diff.
Планирование — пауза между знанием и действием. У плана две задачи, и это разные задачи.
Он разбивает работу на части. План делит задачу на единицы работы, у каждой из которых есть вход, выход и сигнал, подтверждающий завершение. Для этой задачи оценщик не нужен. Польза в том, что агент остаётся в пределах ограниченной единицы работы, а части, которые можно выполнять одновременно, становятся явными.
Он служит условием допуска к выполнению. План принимают до появления кода, поэтому неверное направление отвергается, пока изменить его ещё дёшево. Ценность этой функции ровно такова, какова ценность проверяющего: проверяющие лишь умеренно сходятся во мнениях о рисках, а в одном исследовании предварительное одобрение плана ограничивало незапланированные действия, но оставляло без внимания не перечисленные в плане меры защиты и ослабляло последующий контроль выполнения.1 План, который никто не оценивает, — не слабый барьер. Это вообще не барьер.
Методология
Допуск по плану — это одобренный контракт выполнения
Возьмём небольшое повседневное изменение: добавить поле промокода на страницу оформления заказа. Границы задачи — то, что можешь определить только ты: где расположено поле, суммируются ли коды с другими предложениями и что происходит при неверном коде. При этом существующие правила ценообразования остаются неподвижной границей. Единица работы — то, что можно проверить на практике: одно поле на одной странице и тест, подтверждающий, что действующий код применяется, а неверный отклоняется. Прогнозирование последующих шагов расходует объём плана на работу, которую агент должен выполнять уже в коде.
Цена планирования
План — ещё и текст, попадающий в контекстное окно до любого шага выполнения. У этого есть две стороны.
Он удерживает цель в поле зрения. Сформулированная цель направляет генерацию к одной и той же мишени, поэтому по мере удлинения работы агент меньше отклоняется от курса.
Он вытесняет то, что идёт следом. Изучение исходных данных и рассуждения уже заняли часть окна; план ложится поверх них и остаётся там, а предстоящая работа оказывается после него. Если план разрастается, выполнение смещается в середину длинного контекста, где извлечение информации слабее всего (по мере роста входа качество обращения к длинному контексту падает). Оба эффекта усиливаются с размером плана: кратко и точно повторяй цель, подробно раскрывай только следующую единицу работы, а остальное извлекай тогда, когда оно понадобится.
Когда план оправдывает затраты
Планирование стоит токенов, времени и привязывает к ещё не проверенному решению. Эти затраты окупаются при трёх условиях.
Задача достаточно длинная, чтобы ранняя ошибка накапливалась. Для изменения в две строки планирование — накладные расходы. В цепочке, где каждый шаг зависит от предыдущего, неверный первый ход не остаётся локальным: всё построенное на нём наследует ошибку. Выигрыш даёт взгляд вперёд: агент видит общую форму, прежде чем зафиксировать решение.
Работа делится на части, которые можно проверять или выполнять независимо. Единица работы с собственным сигналом проверки локализует сбой, не позволяя ему распространиться по всему выполнению, а независимые части можно выполнять одновременно.2
Оценщик может прочитать план, и его ответ должен быть верным. Здесь нужны две вещи.
План должен попасть к оценщику в понятной ему форме. Преобразуй утверждение в форму проверки: тест исполняет код, проверка типов читает сигнатуру, предикат ограничения проверяет утверждение плана. Ни один из них не читает предложение. Формулировка «Одно поле на странице оформления заказа с тестом для действующего и просроченного кода» даёт проверке то, что можно выполнить; «Правила ценообразования не должны меняться» не даёт ничего, пока ты не свяжешь эту строку с предикатом (нет изменений в pricing/) или вопросом (меняет ли это правила ценообразования? да или нет). Такое связывание — твоя работа, и оно идёт первым: перевод прозы в формальную форму остаётся слабым звеном; в исследованиях семантическая корректность составляла от 24% до 35%.3
Когда проверка требует суждения, а не установления факта — расширяются ли границы задачи, обратим ли этот шаг, — задай вопросы о состоянии плана и поручай типизированной модели принятия решений отвечать на них с вероятностями: человек читает вопрос, код ветвится по ответу, а уверенность можно сравнить с порогом. Оценочные функции легко обмануть удалением требований. Барьер на основе типизированного состояния отказал в выдаче оценки для всех 26 вариантов, оптимизированных за счёт пропусков: именно отказ, а не более высокий балл, — поведение, которое нужно от барьера допуска.4
Ответ должен предсказывать успех работы. Оценщик, который пропускает почти всё, хуже отсутствия оценщика: сгенерируй десять планов, и он выберет самый убедительный по тексту, а не работающий. Дополнительные попытки тогда покупают уверенность, а не корректность.5 Отключение проверки снижает успешность планирующего агента на 12,9 процентного пункта.6 Выигрыш заключён в проверке, а не в плане: план хорош лишь настолько, насколько хороша его проверка. Выбор разобран в главе «LLM-оценщики».
Когда планирование стоит пропустить
Если обратить эти условия, те же критерии подскажут, когда планирование не нужно.
Нет оценщика — нет барьера допуска. Поручить планировщику оценить собственный план — распространённая ошибка автономных циклов. Самокритика без внешнего сигнала не исправляет плохой план, а обрушивает результативность: модель не может отличить свои ошибки от собственных предпочтений.7 Более широкие данные указывают в ту же сторону: без внешней обратной связи моделям трудно исправлять себя, а попытка иногда даже ухудшает результат.8 План, который не разбивает работу на части и не попадает к достоверному оценщику, расходует контекст, ничего не давая взамен. Вместо этого выполни задачу за один проход, оставив её целиком перед моделью.
План сохраняют дольше, чем он полезен. План — ставка на то, как развернётся задача. Если держаться его после того, как среда ему противоречит, ставка превращается в невозвратные затраты: агент защищает план вместо пересмотра, а раннее труднообратимое решение усиливается на протяжении всего выполнения.9 После некоторой границы, зависящей от сложности задачи, дополнительное планирование тоже перестаёт помогать и начинает вредить: кривая загибается вниз так же, как для длины рассуждений.10 Считай план предварительным и пересматривай его с учётом того, что выясняется в процессе работы.
Оценщик, которого никто не проверял. Барьер допуска — измерительный инструмент, а инструменты дрейфуют. Вердикты меняются вместе с версией лежащей в их основе модели и становятся мягче по мере роста возможностей агентов. А комиссия с общими доказательствами имеет и общие слепые зоны.11 Ошибки проверяющего не оставляют следов внутри цикла, поэтому выборочно сопоставляй решения допуска с тем, что в итоге было выпущено («LLM-оценщики»).12
Один план разделён между агентами, которые не видят друг друга. Передача частей плана параллельным субагентам выглядит как масштабирование. Обычно она дробит неявные решения — о стиле, границах, именовании — на результаты, которые затем никто не может согласовать.13 Делегирование подходит для независимых направлений работы, а не для ещё не согласованного плана.
В небольшой и очевидной работе планирование — чистые накладные расходы.14
Планирование завершено, когда…
Это определяют два вопроса.
Может ли оценщик прочитать план и можно ли доверять этому оценщику? Если тест, предикат или заранее сформулированный вопрос способны отвергнуть план, барьер даёт ранний отказ от неверных направлений. Если ничто за пределами планировщика не может его оценить, никакого барьера получить нельзя: оставь план как декомпозицию или откажись от него.
Дёшево ли пересмотреть план? Если адаптация стоит одного шага, план — опора. Если ради адаптации нужно начинать сначала, план — ловушка.
Когда выполнены оба условия, ставь барьер допуска рано и перепланируй после каждого вердикта. Когда не выполнено ни одно, пропусти планирование и решай задачу за один проход. Прямые измерения показывают: постоянное планирование ухудшает результаты на длинных горизонтах, а полное отсутствие планирования их ограничивает. Оптимум находится посередине и выбирается под задачу.15
Место планирования не менее важно, чем частота. Модели склонны расходовать все рассуждения на первом ходе, а затем составлять план уже без них. Выигрыш появляется, если перенести рассуждение к точкам принятия решений — после возврата инструмента, до фиксации плана.6
Планирование завершено, когда выполнение может начаться с явно заданного контракта — оценённого там, где есть оценщик, — вместо незавершённого обсуждения. Размер единиц работы и проверка на границах этапов разобраны в главах «Организация работы» и «Контрольные точки с участием человека».