Rozwój kierowany błędami: uczenie się z niepowodzeń
CI jest czerwone. Stack trace wskazuje na payment.ts:212, spaliłeś już dwadzieścia minut na zgadywanie, który z ostatnich sześciu commitów to zepsuł, a „poprawka”, którą właśnie wypchnąłeś, zamieniła jeden niezdany test w trzy. Wpatrywanie się w błąd mocniej nie działa.
Komunikat błędu to najbardziej precyzyjna specyfikacja tego, co jest nie tak, jaką masz — i jest dokładnie tym wejściem, które asystent AI konsumuje najlepiej. Rozwój kierowany błędami (Error-Driven Development, EDD) opiera się właśnie na tym: zamiast celować w idealny pierwszy szkic, prowadzisz ciasną pętlę błąd → naprawa → ponowne uruchomienie i pozwalasz każdemu niepowodzeniu sterować następną zmianą. Robione świadomie, zbiega szybko nawet przy paskudnych kaskadach.
Co z tego wyniesiesz
Dział zatytułowany „Co z tego wyniesiesz”- Powtarzalną pętlę błąd → naprawa → ponowne uruchomienie, którą możesz prowadzić w dowolnym z trzech narzędzi
- Gotowe prompty dla produkcyjnego stack trace’a, kaskady kompilatora i pętli niezdanego testu
- Mechanikę specyficzną dla narzędzia: kto uruchamia testy, kto cofa złą poprawkę, kto iteruje bez nadzoru
- Skrót MCP, który pobiera dla ciebie zgłoszenie z Sentry zamiast kopiowania-wklejania stack trace’ów
- Tryby awarii samej pętli — gonienie za niewłaściwym błędem, naprawianie objawów, pętla na niestabilnych testach
Pętla, według narzędzia
Dział zatytułowany „Pętla, według narzędzia”Cykl jest wszędzie taki sam — wydobądź błąd, przekaż go AI z wystarczającym kontekstem, zastosuj poprawkę, uruchom ponownie dokładnie to, co zawiodło. Różni się to, kto uruchamia polecenie i jak wycofujesz złą poprawkę.
W trybie agenta Cursor sam uruchamia testy lub build, czyta wyjście terminala i iteruje bez kopiowania-wklejania z twojej strony. Siatką bezpieczeństwa są checkpointy: każda edycja agenta to punkt przywracania, więc gdy „poprawka” pogarsza sprawę, cofasz się do ostatniego zielonego stanu jednym kliknięciem, zamiast to rozplątywać.
Najlepsze, gdy chcesz patrzeć, jak pętla się dzieje, i wkroczyć w chwili, gdy zboczy z kursu.
Claude Code uruchamia kompilator i testy przez narzędzie Bash i podaje wyjście z powrotem sobie, więc pętla zamyka się wewnątrz jednej sesji. W trybie headless (claude -p) możesz pozwolić mu iterować względem niezdanego polecenia z limitem tur, by nie kręciło się w nieskończoność.
Najlepsze, gdy pętla ma działać z terminala lub w CI — skryptowo i z ograniczeniem.
Codex uruchamia polecenia w sandboksie. Ustaw --sandbox workspace-write, by mógł edytować i uruchamiać, oraz --ask-for-approval on-failure, by szedł dalej przy zielonym, ale zatrzymywał się na tobie, gdy polecenie zawiedzie — naturalny checkpoint EDD. (--full-auto pakuje workspace-write + on-request, jeśli chcesz mniej tarcia.)
Najlepsze, gdy chcesz, by przemieliło długą listę błędów w większości bez nadzoru, ale zatrzymało się przy prawdziwych niepowodzeniach.
Scenariusz 1: błąd produkcyjny ze stack trace’a
Dział zatytułowany „Scenariusz 1: błąd produkcyjny ze stack trace’a”Użytkownik trafił na crash, a twój tracker błędów przechwycił wyjątek. Najszybsza droga to dać AI trace plus pliki, które wskazuje.
-
Pobierz trace. Skopiuj pełny wyjątek z Sentry — błąd runtime i stos, nie tylko górną linię.
-
Przekaż go z podejrzanymi plikami. Nazwij pliki, by AI nie musiało grepować na ślepo.
-
Zastosuj i uruchom ponownie. Poprawka powinna zaadresować to, gdzie
totalstało sięundefined(powiedzmy: nadrzędny koszyk bez pozycji), a nie tylko doczepić?.w linii 212. Uruchom ponownie ścieżkę, która zawiodła; jeśli wyłoni się nowy błąd, przekaż go z powrotem i powtórz.
Scenariusz 2: kaskada kompilatora po refaktoryzacji
Dział zatytułowany „Scenariusz 2: kaskada kompilatora po refaktoryzacji”Zmieniłeś sygnaturę kluczowej funkcji i kompilator rozbłysnął trzydziestoma błędami w całej bazie kodu. To słodki punkt EDD — błędy są dokładną, wygenerowaną maszynowo listą zadań.
-
Wprowadź zmianę i uruchom sprawdzacz typów. Nie naprawiaj jeszcze niczego ręcznie; pozwól, by pełna lista błędów się zmaterializowała.
-
Deleguj całą listę. Daj AI prawdziwe wyjście kompilatora i pozwól mu się przez nie przebijać.
-
Iteruj aż do czystości. Agent naprawia miejsca wywołań, ponownie uruchamia sprawdzacz typów i powtarza. Zadanie, które ręcznie to godzina mozołu, kończy się w kilka cykli — AI nigdy się nie nudzi przy dwudziestym siódmym miejscu wywołania.
Scenariusz 3: pętla niezdanego testu
Dział zatytułowany „Scenariusz 3: pętla niezdanego testu”Najmocniejsza forma EDD to napisanie najpierw niezdanego testu, a potem pozwolenie AI, by samo doprowadziło się względem niego do zieleni. Test jest jednoznacznym wyrocznią, więc pętla kończy się sama.
To ostatnie zdanie ma znaczenie: bez niego nadgorliwy agent czasem „naprawi” niepowodzenie, rozluźniając asercję. Przypnij test jako specyfikację.
Gdy to się zepsuje
Dział zatytułowany „Gdy to się zepsuje”Co dalej
Dział zatytułowany „Co dalej”- Programowanie sterowane testami — napisz niezdany test celowo, a potem doprowadź go do zieleni
- Testowanie przez wstrzykiwanie błędów — wyprodukuj awarie, zanim zrobi to produkcja
- Monitoring i obserwowalność — wepnij sygnał z Sentry, który zasila tę pętlę