Capstone: a three-mode refactor
Final project: the same refactor of a real repository in three modes — Tab, Cmd+K, and Agent — measuring time, diff size, and review effort.
Lesson content is currently available in Russian.
What you will learn
- →Провести рефакторинг реального кода тремя режимами с фиксацией метрик.
- →Сравнить режимы по времени, размеру диффа и стоимости ревью на собственных данных.
- →Сформулировать личное правило выбора передачи, подтверждённое экспериментом.
Подготовка: репозиторий, базовая линия, план
Капстоун выполняется на реальном репозитории — вашем рабочем или живом open-source проекте, но не на hello-world: нужна кодовая база хотя бы на несколько тысяч строк, где у изменений есть последствия.
Шаг первый — базовая линия. Зафиксируйте зелёное состояние: полный прогон тестов, линтер, сборка. Всё, что упадёт после ваших правок, должно быть новым падением, а не унаследованным.
Шаг второй — три задачи разного масштаба:
- A (микро): механическая серийная правка в одном модуле — переименование поля, замена паттерна, обновление сигнатуры с правкой вызовов;
- B (мезо): рефакторинг одной функции или класса — извлечение логики, перевод на async/await, типизация;
- C (макро): структурное изменение на 5+ файлов — вынос слоя, смена контракта между модулями, миграция на другой API.
Шаг третий — инфраструктура эксперимента. Ветка на каждый этап: refactor/tab, refactor/cmdk, refactor/agent. Таблица метрик с колонками: задача, режим, чистое время работы, размер диффа по git diff --stat, число исправлений после ревью, итог прогона тестов. Дисциплина замеров важнее скорости: капстоун — это эксперимент над собственным воркфлоу, и его ценность равна честности данных.
Этапы 1 и 2: Tab и Cmd+K
Этап Tab — задача A на ветке refactor/tab. Сделайте первую правку руками: измените имя поля или сигнатуру в точке объявления. Дальше работает механика второго урока: принимайте прыжковые подсказки по цепочке, прочитывая каждую до нажатия Tab. Фиксируйте в заметках два списка: где Tab угадал правку точно и где предложил правдоподобную ошибку — например, переименовал похожую, но другую переменную или «поправил» строку, которую трогать не следовало. Закончили — прогон тестов, git diff --stat, время в таблицу, коммит.
Этап Cmd+K — задача B на ветке refactor/cmdk. Выделите целевую функцию, дайте одну точную инструкцию с ограничениями: «извлеки валидацию в отдельную функцию validateOrder, поведение и публичная сигнатура не меняются». Считайте итерации: сколько уточнений понадобилось до принятого диффа — это тоже метрика, она показывает цену недоформулированного намерения. Принятие только через чтение диффа: зелёное и красное построчно.
После двух этапов у вас появится первое наблюдение для отчёта: обе «низкие передачи» дают маленькие обозримые диффы и почти нулевую стоимость ревью, но их радиус действия ограничен — Tab одним файлом-цепочкой, Cmd+K одним экраном. Задача C в эти рамки уже не помещается, и это подводит к третьему этапу.
Этап 3: Agent с правилами и дисциплиной ревью
Этап Agent — задача C на ветке refactor/agent. Перед запуском соберите всё, чему научились. Контекст: правило в .cursor/rules (или файл инструкций Copilot) с конвенциями рефакторинга — куда выносится логика, как называются модули, что запрещено трогать. Постановка: цель, границы и команда верификации в одном сообщении — «вынеси работу с ценами из компонентов в src/services/pricing; компоненты импортируют только фасад; API компонентов не меняется; npm test и npm run lint должны пройти». Точечный контекст @-символами вместо всей папки.
Пока агент работает, не вмешивайтесь в файлы руками — эксперимент измеряет именно агентный режим. Ушёл не туда — Restore к checkpoint, уточнение постановки, новый прогон; количество рестартов тоже в таблицу.
Ревью результата — полный протокол пятого урока: список файлов против ожиданий, тесты до реализации, красные флаги (попутные рефакторинги, ослабленные тесты, проглоченные ошибки, лишние зависимости), минимум два проверяющих вопроса агенту, пофайловое принятие. Каждое исправление после ревью — строка в таблице: именно эта колонка покажет реальную стоимость третьей передачи, которую скрывает впечатляющая скорость генерации. Финал этапа — ваш собственный зелёный прогон тестов и линтера, зафиксированный выводом команд, и коммит.
Сравнение, выводы и личное правило
Финал капстоуна — анализ таблицы. Сведите три этапа рядом и ответьте письменно на четыре вопроса. Первый: где соотношение «время работы / время ревью» оказалось лучшим и худшим? Обычно Tab выигрывает на механике, а Agent показывает скрытую цену: генерация за минуты, ревью и исправления — за десятки минут. Второй: какие ошибки характерны для каждого режима? Tab ошибается правдоподобной строкой, Cmd+K — недопонятым намерением, Agent — лишней инициативой: попутными правками, которых не просили. Третий: где итоговый дифф оказался чище всего по git diff --stat относительно сути изменения? Четвёртый: что бы вы сделали иначе в постановке каждой задачи?
Главный артефакт курса — личное правило выбора передачи: один абзац, написанный на основе ваших собственных цифр, а не чужих советов. Например: «микроправки в знакомом коде — Tab; изменения в пределах функции с ясным намерением — Cmd+K; многофайловые изменения с проверяемым критерием — Agent с правилом и протоколом ревью; всё, что дольше двадцати минут автономной работы, — терминальный агент в worktree». Ваша формулировка будет отличаться — и именно поэтому она ценна.
Необязательное расширение для смелых: повторите задачу C терминальным агентом в отдельном worktree и добавьте четвёртую строку в таблицу — мост к следующему курсу про терминальных агентов.
Practice
Капстоун: три ветки, одна таблица
Выполните все три этапа на реальном репозитории: задача A через Tab, задача B через Cmd+K, задача C через Agent — каждая на своей ветке, с замером времени, git diff --stat, числа исправлений после ревью и итога тестов. Сведите метрики и напишите одностраничный отчёт с личным правилом выбора передачи.
Deliverable
Три ветки с коммитами, заполненная таблица метрик, вывод финальных прогонов тестов и одностраничный отчёт с личным правилом выбора режима.
Checkpoint
Защитите свой отчёт: какие цифры из таблицы подтверждают ваше личное правило выбора передачи и какая ошибка какого режима удивила вас сильнее всего?
- ✓ Все три этапа выполнены на реальном коде с зелёным итоговым прогоном тестов на каждой ветке.
- ✓ Таблица метрик заполнена: время, размер диффа, исправления после ревью — по каждому режиму.
- ✓ Личное правило выбора передачи сформулировано и опирается на собственные измерения.
Check yourself
Sources