Dostępny na nowe rolePiotr Czerwiński

Praca z AI

Jak buduję produkty z agentami AI

Moim domyślnym agentem jest Claude Code. Codex CLI dostaje ograniczone zadania, które mają już spisany spec, a Kiro CLI używam w dużym kodzie korporacyjnym w mojej głównej pracy. Większość kodu piszą agenci. O tym, że da się go wdrożyć, decyduje wszystko wokół nich: spec, spisane standardy inżynierskie, reguły deny i hooki, testy jednostkowe, integracyjne i E2E, evals, review przez drugiego agenta i mój własny przegląd każdego pull requesta przed merge. Każda sekcja poniżej prowadzi do wpisu z mojej własnej pracy na produkcji.

Który agent dostaje które zadanie

Claude Code

Moje produkty, codziennie

Planowanie, incydenty, długie wątki i wszystko, co wymaga kontekstu produktu albo pamięci. Pisze specyfikacje, które wykonują inni agenci.

Codex CLI

Moje produkty, obok Claude Code

Ograniczone zadania ze spisanym specem, uruchamiane we własnym git worktree, plus druga opinia w code review.

Kiro CLI

Duży kod korporacyjny w mojej głównej pracy

Agent zatwierdzony przez firmę, w ścisłych korporacyjnych ograniczeniach: małe zmiany, łatwe do przejrzenia, z człowiekiem w każdej pętli.

Zasada podziału i wspólna konfiguracja: Claude Code vs Codex CLI oraz Kiro vs Claude Code.

Jak powstaje nowa funkcja

  1. 01

    Spec

    Piszę go z agentem planującym: model produktu, twarde ograniczenia, ponumerowana lista testów i blok zakończenia.

    Spec, który agent skończy sam →
  2. 02

    Agenci budują według moich standardów

    Claude Code albo Codex CLI, każdy we własnym git worktree, trzymają się spisanych zasad: SOLID, DRY, KISS, małe czyste funkcje, reguły deny na wszystko, czego nie da się cofnąć.

    Agenci równolegle w worktree →
  3. 03

    Testy i bramki

    Testy jednostkowe reguł i przypadków brzegowych, integracyjne na ścieżkach danych, E2E w Playwright na ścieżkach użytkownika, lint na plikach w commicie i evals dla funkcji AI.

    Evals przed merge →
  4. 04

    Review przez agenta

    Drugi agent w świeżej sesji sprawdza diff względem specu i standardów, więc swój przegląd zaczynam od jego uwag.

    Drugi agent jako recenzent →
  5. 05

    Mój review i merge

    Człowiek w pętli: sam czytam każdy pull request, uruchamiam to, co się zmieniło, i robię merge dopiero wtedy, gdy mam pewność. Potem obserwuję produkcję.

    Jak robię review kodu od AI →

Człowiekiem w pętli zostaję ja. Agenci nigdy nie robią merge. Każdy pull request sam czytam, uruchamiam to, co się zmieniło, i robię merge dopiero wtedy, gdy mam pewność, że jest dobrze, a nie wtedy, gdy CI zaświeci się na zielono.

Standardy, które musi spełniać kod od agentów

Agenci wczytują te zasady, zanim dotkną kodu produkcyjnego, a ja sprawdzam je w review. Szybki kod, którego nikt nie utrzyma, to nie przyspieszenie, tylko dług z odroczonym terminem.

SOLID stosowany, nie recytowany
Route'y walidują i delegują, logika biznesowa jest w warstwie domeny, SQL w warstwie repozytorium. Płatności, e-mail i dostawcy LLM są za adapterami, więc zmiana dostawcy to jeden nowy adapter.
DRY z wyczuciem, KISS domyślnie
Najpierw szukam, potem piszę: jedno źródło prawdy dla każdej wartości, wspólna paczka zamiast trzeciej kopii. Najprostszy projekt, który spełnia spec, bez abstrakcji na zapas i bez łączenia kodu, który zmienia się z różnych powodów.
Małe jednostki
Funkcja mieści się na jednym ekranie, mniej więcej 40-50 linii, a plik ma najwyżej kilkaset. Kod dzielę według odpowiedzialności, nie liczby linii, więc każdą jednostkę da się nazwać bez „i”.
Czysta logika, efekty na brzegach
Reguły biznesowe to czyste funkcje: dostają dane i zwracają dane. I/O, czas i losowość zostają na brzegach, dzięki czemu reguły da się testować bez mocków, a zmiany od agentów łatwo przejrzeć.
Testy, które łapią regresje, a nie coverage
Testy jednostkowe reguł i przypadków brzegowych, integracyjne na ścieżkach, które dotykają pieniędzy, autoryzacji i zakresu danych, E2E w Playwright na przepływach, od których zależą użytkownicy. Każdy bug dostaje najpierw test, który go odtwarza. Żadnych testów getterów.
Bezpieczeństwo domyślnie
Każde ID w żądaniu traktuję jak podrobione, a każde zapytanie filtruje po właścicielu. Walidacja i autoryzacja działają na serwerze, a każdy endpoint, który wywołuje model, ma limit na użytkownika, dzienny limit i wyłącznik awaryjny.

Harness wokół agenta

Harness agenta to wszystko, co otacza model: co agent może uruchomić, co jest zablokowane, co wczytuje na starcie i kiedy sesja musi się zatrzymać. Tu jest większość zabezpieczeń i większość kontroli kosztów.

Delegowanie pracy agentom

Który agent dostaje które zadanie, jak je opisać, żeby agent skończył je sam, i jak odróżnić skończone zadanie od pewnego siebie raportu o postępach.

Chcesz takiego sposobu pracy w swoim zespole?

Jestem otwarty na role senior product engineera i miejsce w zespole założycielskim, w którym agenci są częścią codziennej pracy. Co z nimi zbudowałem, zobaczysz na stronie projektów. Możesz też po prostu napisać do mnie.