Итерируйте по diff'ам, а не по переписываниям
Когда код уже есть, сопротивляйтесь желанию запросить всё целиком заново. Расплывчатые продолжения вроде «сделай лучше» выбрасывают рабочий код и заново вносят баги, которые вы уже исправили. Укажите на конкретное изменение, которое хотите.
Это неправильно, перепиши всё целиком.
Функция работает, но есть две проблемы:
1. Ошибка в строке с `throw new Error` должна возвращать тип
Result вместо выброса исключения — повтори паттерн из
функции validateUser выше.
2. Цикл перечитывает `items.length` на каждой итерации; вынеси его.
Покажи мне только diff для этих двух изменений.
Здоровый цикл — это плотная петля: промптите модель, читаете вывод, затем дорабатываете маленьким точечным diff'ом — никогда не полным переписыванием — пока не станет верно:
┌─────────┐ ┌─────────┐ ┌─────────┐
│ ПРОМПТ │ ──▶ │ МОДЕЛЬ │ ──▶ │ ВЫВОД │
└─────────┘ └─────────┘ └────┬────┘
▲ │
│ ▼
│ ┌─────────┐
│ ок? │ ОБЗОР │
│ да ◀───────────────────┤ diff │
│ └────┬────┘
│ │ нет
│ правка (мал. diff) │
└───────────────────────────────┘
дрейф? ▶ откат к последней хорошей
Запрос diff'а (а не полного переписывания) держит изменения пригодными к ревью и сохраняет части, которые уже работают. Относитесь к выводу AI как к 'у коллеги: комментируйте конкретные строки, запрашивайте точечные правки. Когда изменение уходит не туда и с каждым ответом код всё дальше от того, что вы хотели, не продолжайте латать — откатитесь к последней версии, которой доверяли, и пере-промптите оттуда с более чётким описанием. Итерировать вперёд по сломанной основе — лишь множить беспорядок.