NEON CITYmaking of
04 / 07

Agenci AI

Jeden człowiek, cztery role AI, zero dostępu do produkcji

Orkiestrator planuje i recenzuje, Claude Code bierze zadania trudne i wizualne, Codex implementuje, czat assetów maluje. Żaden agent nie robi push, merge ani deployu – decyzję podejmuje człowiek po przeglądzie innym modelem niż autor.

4.1 Role

Agenci nie są „zespołem, który sam robi grę”. Każdy ma wąską rolę i jasno opisane granice, a wszystkie decyzje, które da się cofnąć tylko z trudem, zostają przy człowieku.

  • Marcinwłaściciel

    Cel, priorytety, decyzje odbioru, playtest. Jedyny, kto scala do gałęzi głównej i wdraża.

  • Orkiestratorczat Claude

    Plan, briefy z zakresem i listą „czego nie ruszać”, recenzje raportów, rekomendacje decyzji.

  • Claude Codeagent w terminalu

    Zadania trudne i wizualne: rendering, wygląd, diagnoza, przeglądy krzyżowe, ta strona.

  • Codexagent w terminalu

    Implementacja: funkcje rozgrywki, backend, generator aren, testy i raporty z liczbami.

  • Czat assetówOpenAI image_gen

    Grafika 2D i plansze 3D na zamówienie: broń, ręce, koncept zombie, pojazdy.

4.2 Zasady

  1. Bez push, merge, deployu i sekretów. Pilnują tego hooki zestawu narzędzi Claude Code: blokują każdy git push, zmiany na gałęzi głównej, publikację Workera, zapis do R2 i odczyt plików z kluczami – zanim polecenie się wykona.
  2. Przegląd krzyżowy. Pracę recenzuje inny model niż autor, tylko do odczytu; testy mutacyjne i pomiary w kopiach poza repozytorium.
  3. Najwyżej 3 równoległe sesje. Każda w osobnym worktree, z wolnymi portami i własnym raportem.
  4. Zakres i „czego nie ruszać”. Każdy brief wymienia pliki i moduły spoza zadania. Raport zaczyna się od potwierdzenia, że nie zostały dotknięte.
  5. Nowe funkcje za flagą. Dotychczasowy tryb ma zostać bazą – co do piksela.
  6. Najpierw wygląd, potem kod. Makieta, plansza albo koncept idzie do akceptacji, zanim powstanie implementacja. Ta strona też tak powstała.

ZABLOKOWANE przez hook Neon City: release bez --dry-run.

Hook, przy próbie uruchomienia polecenia publikacji

Hook Neon City: zostały procesy testowe. Zatrzymaj te, które uruchomiłeś w tej sesji, i sprawdź ponownie; jeśli należą do właściciela, wymień je w odpowiedzi i zakończ.

Hook końca sesji – agent sprząta po sobie, cudzych procesów nie rusza

4.3 Cykl: zlecenie → raport → przegląd → decyzja

Diagram cyklu pracy: Marcin wyznacza cel, orkiestrator pisze brief, wykonawca pracuje w osobnym worktree i oddaje raport, przegląd innym modelem kończy się werdyktem ODRZUCONE z powrotem do wykonawcy albo PRZYJĘTE, potem podgląd, staging i playtest Marcina, który scala i wdraża

Brief to krótki dokument: cel, zakres, lista „czego nie ruszać”, kryteria odbioru i oczekiwany format raportu. Wykonawca pracuje w osobnym worktree i kończy raportem z liczbami: testy przed i po, zrzuty, pomiary, ryzyka i rzeczy, których nie sprawdził.

Raport trafia do przeglądu. Recenzent nie wierzy na słowo: odtwarza build z czystego eksportu, wprowadza celowe błędy, żeby zobaczyć, czy testy je złapią, i ogląda zrzuty. Werdykt jest jeden z trzech: ODRZUCONE, PRZYJĘTE Z UWAGAMI albo PRZYJĘTE.

Dopiero po przyjęciu zmiana trafia na podgląd i staging, gdzie gra w nią Marcin. Scalenie i wdrożenie zawsze wykonuje człowiek.

4.4 Studium przypadku: TRAM-1

TRAM-1 wprowadził do zwykłego meczu tramwaje: rozkład, postoje, kontakt z graczem i korytarz ostrzegawczy D5. Raport autora był długi, testy zielone, a 20 aren wygenerowało się identycznie w dwóch przebiegach. Mimo to pierwszy przegląd zmianę odrzucił.

  1. Przegląd 1 · ODRZUCONE

    Blokujące: korytarz D5 był niewidoczny z góry. Trójkąty miały odwróconą kolejność wierzchołków, a materiał rysuje tylko przednią stronę. Geometria istniała, więc testy i statystyki przechodziły. Do tego tramwaj widoczny w co-op rozjeżdżał się z kolizją, a stojący na postoju zadawał obrażenia.

  2. Poprawka 1

    Odwrócony winding, test znaku normalnej i nowy smoke liczący piksele D5 w stałym kadrze: 23 → 1001 pikseli w dzień, 190 → 1212 nocą. Obrażenia tylko powyżej 0,5 m/s i raz na przejazd; postój: 0 HP. Predykcja–serwer: 0 m.

  3. Przegląd 2 · PRZYJĘTE Z UWAGAMI

    D5, czas renderu i postój zamknięte. Dwie uwagi: aktor wypchnięty przed czoło bywał „niesiony” (2–4% prób, do 11 m), a zdalni gracze przy 150 ms opóźnienia byli widoczni do 1,74 m wewnątrz tramwaju.

  4. Poprawka 2 · PRZYJĘTE

    Niesienie dłuższe niż 1 m: 0/96 prób w Łodzi i 0/96 w Krakowie. Maksymalne wejście zdalnych postaci w tramwaj: 0,055 m, 0 klatek powyżej 0,1 m. Testy: 1634 backend i 937 klient, 0 błędów.

Łódź z góry przed poprawką: tramwaj na ulicy, przed nim brak widocznego korytarza ostrzegawczego
przegląd 1D5 w wydanym kodzie – pas nie jest widoczny. Mapa: © OpenStreetMap contributors (ODbL).
Łódź z góry po poprawce: przed tramwajem widać pomarańczowy korytarz ostrzegawczy
poprawka 1Ten sam kadr po odwróceniu trójkątów. Mapa: © OpenStreetMap contributors (ODbL).

Lekcja: test, który sprawdza, że geometria istnieje, nie sprawdza, że ją widać. Od tej poprawki odbiór elementów wizualnych wymaga pomiaru pikseli w kadrze, a nie tylko zrzutu w raporcie.

Autor sam to zapisał w raporcie poprawki: wcześniejsze obrazy i deklaracja PASS nie stanowiły odbioru D5. Przegląd znalazł błąd, którego żaden z 1600 testów nie mógł zobaczyć.

Co-op, widok z kamery drugiego gracza: tramwaj z korytarzem ostrzegawczym tuż obok postaci zdalnego gracza na ulicy w Łodzi nocą
Co-op, kontakt z tramwajem – pomiar wejścia zdalnych postaci w bryłę tramwaju. Mapa: © OpenStreetMap contributors (ODbL).

4.5 Fragmenty briefów i werdyktów

Krótkie, zanonimizowane wyjątki – bez ścieżek, adresów i nazw gałęzi.

Bez kodu źródłowego gry na stronie. Bez push, bez tworzenia repo, bez deployu. Najpierw projekt i makieta do akceptacji.

Brief orkiestratora – zadanie tej strony

Każdy prompt z zakresem i listą „czego nie ruszać”. Nowe funkcje za flagą; tryb dotychczasowy = baza.

Zasady pracy, wspólne dla briefów

Bez edycji pakietów wspólnych, sieci, parsera OSM, audio ani katalogu drugiego agenta. Bez amend, push i deployu.

Raport wykonawcy – potwierdzenie zakresu na początku

Werdykt: ODRZUCONE. Raport autora podaje „czytelność D5” jako odebraną, a żaden zrzut tego nie pokazuje.

Przegląd 1 TRAM-1

Wcześniejszy odbiór D5 był błędny: geometria istniała, ale pas nie był widoczny z góry; wcześniejsze obrazy i PASS nie stanowią odbioru.

Raport poprawki – autor koryguje własną deklarację

Werdykt: PRZYJĘTE Z UWAGAMI. Blokujące R-01 jest zamknięte, co potwierdza mój pomiar pikseli.

Przegląd 2 TRAM-1