Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Claude Code pisze kod, który się nie kompiluje - jak wymusić testy

W skrócie

  • Claude Code oddaje kod, który wygląda dobrze, ale się nie kompiluje albo nie przechodzi testów, bo ogłasza "gotowe", zanim cokolwiek uruchomił.
  • Bez sygnału zwrotnego, który Claude Code może sam odczytać, jedynym kryterium ukończenia jest "wygląda na skończone" - a to za mało.
  • Rozwiązaniem jest danie Claude Code sprawdzianu do uruchomienia (kompilacja, testy, linter) i wpisanie w prompt, żeby iterował, aż sprawdzian przejdzie.

Claude Code, oficjalne narzędzie CLI od Anthropic do programowania z AI, potrafi napisać kod, przeczytać wynik polecenia i poprawić się sam - ale tylko wtedy, gdy da mu się coś, co zwraca jasny sygnał sukcesu albo porażki. Jeśli tego nie zrobisz, to Ty stajesz się pętlą weryfikacji i każdy błąd czeka, aż go zauważysz. Poniżej pokazujemy, jak jednym zdaniem w prompcie zamknąć tę pętlę i zmusić Claude Code, żeby dowoził działający kod.

Jak to wygląda w praktyce

Prosisz o funkcję albo poprawkę, dostajesz zgrabny diff, a po uruchomieniu okazuje się, że projekt się nie kompiluje, brakuje importu albo testy padają. Claude Code ogłosił zadanie za skończone na podstawie samego wyglądu kodu, bez odpalenia buildu. Dokumentacja Anthropic nazywa to wprost pułapką "zaufaj i sprawdzaj": model produkuje prawdopodobnie wyglądające rozwiązanie, które nie obsługuje przypadków brzegowych albo nie przechodzi kompilacji, bo nikt nie kazał mu tego zweryfikować.

Dlaczego Claude Code tak działa

Claude Code zatrzymuje się, gdy praca "wygląda na gotową". Bez sprawdzianu, który może uruchomić, "wygląda na gotową" to jedyny dostępny sygnał - i dlatego kod bywa niedokończony. Gdy jednak dasz mu coś, co zwraca wynik pass albo fail (zestaw testów, kod wyjścia kompilacji, linter, skrypt porównujący wyjście z wzorcem), pętla domyka się sama: Claude Code wykonuje pracę, uruchamia sprawdzian, czyta wynik i iteruje, aż sprawdzian przejdzie. Klucz to dostarczenie mu takiego sygnału.

Jak to rozwiązać krok po kroku

  1. W jednym prompcie każ mu uruchomić sprawdzian i iterować. Zamiast "napisz funkcję walidującą e-mail" napisz "napisz funkcję walidującą e-mail, przykładowe przypadki testowe: adres poprawny to prawda, niepoprawny to fałsz, adres bez domeny to fałsz. Po napisaniu uruchom testy i popraw, aż przejdą".
  2. Przy błędach kompilacji podaj konkret i zażądaj weryfikacji: "build pada z tym błędem: [wklej błąd]. Napraw i potwierdź, że kompilacja przechodzi. Zajmij się przyczyną, nie tłum objawu".
  3. Podejście od testu (TDD): poproś "napisz najpierw test odtwarzający problem, sprawdź, że pada, potem napraw kod i uruchom test ponownie, aż przejdzie". To zmusza Claude Code do realnego uruchomienia, a nie deklaracji.
  4. Wskaż konkretne polecenia sprawdzające. Jeśli w projekcie masz komendy typu build, test czy lint, dopisz je do CLAUDE.md pod sekcją workflow, na przykład "po serii zmian zawsze uruchom typecheck" - Claude Code czyta ten plik na starcie każdej rozmowy.
  5. Dla czynności, która ma się wykonywać bez wyjątku, użyj hooka typu Stop: to skrypt uruchamiający Twój sprawdzian, który blokuje zakończenie tury, dopóki sprawdzian nie przejdzie. Hooki są deterministyczne, w przeciwieństwie do wskazówek w CLAUDE.md, które model może pominąć.
  6. Na dłuższą sesję ustaw warunek jako cel przez /goal - osobny ewaluator sprawdza go po każdej turze, a Claude Code pracuje, aż warunek się spełni.
  7. Zażądaj dowodu, a nie zapewnień. Dopisz "pokaż wynik testów i polecenie, które uruchomiłeś", żeby zamiast "gotowe" dostać wklejone wyjście kompilacji albo testów.

Jak sprawdzić, że zadziałało

Dobra odpowiedź kończy się dowodem: Claude Code wkleja wynik uruchomionego buildu albo testów, a nie samo słowo "gotowe". Przejrzyj to wyjście - kompilacja bez błędów i zielone testy są sygnałem, że pętla się domknęła. Dla pewności uruchom sprawdzian jeszcze raz sam albo odpal w Claude Code tryb powłoki: wpisz ! npm test (lub Twoją komendę), a narzędzie doda wynik do rozmowy i od razu się do niego odniesie. Jeśli używasz celu /goal albo hooka Stop, dowodem jest to, że tura nie kończy się, dopóki warunek nie przejdzie. Prosta zasada z dokumentacji: jeśli nie potrafisz tego zweryfikować, nie wypuszczaj tego na produkcję.

Wróć do listy: 100 najczęstszych problemów z Claude Code

Szkolenie Claude Code - od zera do zespołu agentów AI, prowadzi Łukasz Matuszewski (JSystems)

Szkolenie Claude Code - od zera do zespołu agentów AI -->

Szkolenie Claude Code - od zera do zespołu agentów AI

Tryb planowania, tryby uprawnień, komendy, MCP, hooki i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma terminy gwarantowane - odbędzie się niezależnie od liczby zgłoszeń.

Sprawdź szkolenie Claude Code

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Dlaczego Claude Code oddaje kod, który się nie kompiluje albo nie przechodzi testów?
Claude Code zatrzymuje się, gdy praca wygląda na gotową, a bez sprawdzianu, który sam uruchomi, wygląd kodu jest jedynym dostępnym sygnałem. To znana pułapka: model produkuje prawdopodobnie wyglądające rozwiązanie, które nie obsługuje przypadków brzegowych, bo nikt nie kazał mu tego zweryfikować.
Jak jednym promptem zmusić Claude Code, żeby uruchomił testy i się poprawił?
Każ mu w tym samym poleceniu uruchomić sprawdzian i iterować, na przykład: napisz funkcję, przykładowe przypadki testowe i tu lista, po napisaniu uruchom testy i popraw, aż przejdą. Wtedy Claude Code wykonuje pracę, czyta wynik testów i poprawia się sam.
Jak sprawić, żeby uruchomienie testów działo się zawsze, bez wyjątku?
Użyj hooka typu Stop: to skrypt uruchamiający Twój sprawdzian, który blokuje zakończenie tury, dopóki sprawdzian nie przejdzie. Hooki są deterministyczne, w przeciwieństwie do wskazówek w CLAUDE.md, które model może pominąć. Komendy build, test i lint warto też dopisać do CLAUDE.md.
Jak upewnić się, że Claude Code faktycznie odpalił build, a nie tylko napisał gotowe?
Zażądaj dowodu: dopisz pokaż wynik testów i polecenie, które uruchomiłeś. Dostaniesz wklejone wyjście zamiast zapewnienia. Możesz też sam odpalić sprawdzian w trybie powłoki, wpisując na przykład wykrzyknik i komendę testów, a Claude Code doda wynik do rozmowy.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...