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

С чего начать: отклонения от основного маршрута
Четыре ситуации, где маршрут меняется целиком, а не в деталях.

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

Подкатегория: С чего начать

Чтение
5 мин
Технологии / версии
Coding agent · Плейбук · Процесс · Legacy
Серия
Цикл «С чего начать» · часть 8 из 8
8 сен 2026 · 5 мин · 2 просмотра · AI
Основной маршрут и четыре отклонения от него
С чего начать 09/2026

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

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

Легаси без тестов

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

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

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

Напиши тесты, фиксирующие текущее поведение расчёта скидки.
Не оценивай правильность. Задача — поймать поведение как есть,
включая странности. Если поведение зависит от даты или порядка —
зафиксируй и это.

Такие тесты не проверяют, что код правильный. Они проверяют, что он не изменился, и это единственная опора, которая у вас будет.

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

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

Чужой проект без права менять правила

Проект заказчика, работодателя, открытого сообщества. Файл контекста завести нельзя, конвенции менять нельзя, гейты добавлять нельзя.

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

Что заменяется. Файл контекста переезжает к вам локально. Тот же список: команды, конвенции, чего здесь нет. Отличие в том, что подставлять его в задачи придётся руками.

Это неудобно ровно один раз: после третьей задачи вы заведёте себе шаблон, и дальше это будет копирование трёх абзацев.

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

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

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

Закрытый контур

Нет доступа к внешним сервисам, работать можно только с тем, что развёрнуто внутри. Обычно это означает модели поменьше и слабее.

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

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

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

Что выбрасывается. Длинные автономные прогоны — на них слабая модель разваливается предсказуемо: теряет исходные ограничения где-то на середине. Многошаговые задачи с делегированием между исполнителями — тоже: каждая передача контекста стоит качества, которого и так немного.

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

Команда вместо одиночки

Меняется не техника, а то, для кого пишутся файлы.

Что остаётся. Вся техническая часть: раскладка файлов, скиллы, набор агентов, гейты, запреты. Она не зависит от числа людей.

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

Заменяется и порог заведения скилла. Ваше «объяснил третий раз» превращается в «объяснил в первый раз кому-то, кроме себя». То, что живёт в голове, для команды не существует.

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

Что выбрасывается. Скорость изменения правил. В одиночку я правлю конвенции вечером и живу с ними наутро. В команде каждая правка проходит обсуждение, и это правильно, но означает, что набор будет меняться раз в месяц, а не раз в неделю.

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

Что общего у всех четырёх

Если убрать различия, останется три вещи, которые не меняются никогда.

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

Проверяемость утверждений. Ссылка на строку одинаково нужна и на сильной модели, и на слабой, и в своём проекте, и в чужом. Это не про доверие к инструменту, это про экономику проверки.

Ограничение размера. Дифф, который вы не можете прочитать целиком, вы принимаете на веру. Число строк меняется, принцип нет.

Как понять, в каком вы случае

Тремя вопросами нулевого шага: чей код, есть ли машинная проверка, кто отвечает за последствия.

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

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

Что осталось

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

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

Всё остальное — раскладка файлов, набор агентов, состав гейтов — привязано к обстоятельствам сильнее, чем кажется, пока обстоятельства не поменялись.

Серия

Цикл «С чего начать»

#coding-agent #playbook #process #legacy #komanda