almdev Технический блог

Цикл одной задачи: разведка, план, правка, проверка, ревью
Способ работы, который держится в голове, в пятницу выглядит не так, как в понедельник.

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

Подкатегория: Воркфлоу

Чтение
4 мин
Технологии / версии
Coding agent · Воркфлоу · Laravel · Ревью
Серия
Цикл «Воркфлоу» · часть 3 из 5
9 июл 2026 · 4 мин · 3 просмотра · AI
Пять шагов работы над задачей, у каждого свой результат
Воркфлоу 07/2026

Пока способ работы живёт в голове, он воспроизводится по-разному. В понедельник я строю карту до правок и читаю дифф построчно, в пятницу вечером — принимаю то, что дали, потому что тесты зелёные.

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

Пять шагов и их выходы

Главное в цикле — не названия шагов, а то, что каждый заканчивается артефактом. Шаг без артефакта не заканчивается, он размазывается в следующий.

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

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

Разведка

Выход — карта пути от точки входа до побочных эффектов, плюс список затронутого вне пути: конфиги, миграции, сидеры, тесты, кэш.

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

Пример из блога, где разведка окупилась мгновенно. Задача была «поменять слаг рубрики». Карта показала: канонические адреса в трёх шаблонах, лента, карта сайта, сидер с фиксированным слагом, тест, который на этот слаг ссылается. Из шести пунктов я помнил два.

Пропускаю разведку, когда задача внутри одного файла и без побочных эффектов.

План

Выход — контракт из пяти блоков: цель, в объёме, вне объёма, ограничения, готово когда. Подробно я разбирал его в цикле про промпты, здесь важна его роль в цикле.

Роль такая: план — это последняя точка, где моё возражение стоит абзац. После него оно стоит час.

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

Пропускаю план на задачах меньше сотни строк ожидаемого диффа.

Правка

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

Двести строк — не про аккуратность, а про моё внимание. Дальше я перестаю читать и начинаю просматривать, и разница между этими двумя режимами — три пропущенных дефекта на одном рефакторинге.

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

Пропустить этот шаг нельзя, но можно испортить: снять лимит. Что происходит дальше, я описывал — дифф на 1240 строк, два часа чтения, три пропущенных дефекта.

Проверка

Выход — зелёные гейты. В блоге это тесты и проверка форматирования внутри контейнера:

docker compose --env-file .local/.env -f .local/docker-compose.yml \
  exec -T webserver php artisan test
docker compose --env-file .local/.env -f .local/docker-compose.yml \
  exec -T webserver ./vendor/bin/pint --test

Гоняет их агент без права записи, и это осознанно: тот, кто чинит красное, выбирает между «виноват код» и «виноват тест», а выбор этот мой.

Отдельная статья цикла посвящена гейтам целиком — что стоит в хуках, что в одной команде перед отправкой и почему хук со статическим анализом я снял. Здесь достаточно правила: гейт — это условие, а не пожелание.

Пропускать проверку нельзя вообще никогда, и именно её пропускают чаще всего, потому что «правка же маленькая».

Ревью

Выход — список замечаний и решение по каждому: принял, отклонил, отложил.

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

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

Важная деталь, которую я долго нарушал: ревью идёт после проверки, а не вместо. Зелёные тесты не заменяют чтение диффа. Они говорят, что не сломалось то, что покрыто, — а не то, что сделано правильно.

Где я сокращаю цикл

Честная часть. Полный цикл на всех задачах я не гоняю — это было бы ритуалом.

Правка текста, стиля, разметки. Разведка и план отпадают, остаётся правка, сборка и взгляд глазами. Плачу за это тем, что пару раз ловил сломанную тёмную тему, потому что не посмотрел вторую.

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

Срочная правка на проде. Цикл сжимается до правки и проверки. Плачу двойной работой: после срочного всегда есть уборка, и её надо делать в тот же день, иначе не сделаешь никогда.

Чего не сокращаю ни при каких обстоятельствах: проверку и ревью изменений схемы данных. Всё остальное обратимо дёшево, эти два — нет.

Что осталось

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

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

Серия

Цикл «Воркфлоу»

#coding-agent #workflow #laravel #review #testy